2011-08-02 21 views
5

10 ya da 15 yıl içinde görmediğim bir iş gereksinimim var, bu yüzden lütfen yapmaya çalıştığım şeyi göstermek için kullanacağım dino-kodunu affedin. SQL Server'da böyle bir şey yapmanın bir yolu olduğunu biliyorum, bu benim için çok uzun bir süreydi.SQL Server - Her tablodaki her sütundan mi geçmeli?

MS DAO günlerine geri döndüğümde, her tablodaki her alanda yinelemek için böyle bir şey kullanırdım. Ahh ... Anılar ...

Dim dbs as DAO.Database 
Dim tdf as DAO.TableDef 
Dim fld as DAO.Field 

For Each tdf in dbs.TableDefs 
    For Each fld in tdf.Fields 
     'Do whatever to every field in every table here. 
    Next 
Next 

Herhangi biri bana bir SQL Server eşdeğeri verebilir mi?

EDIT: Ayarlayabileceğim döngü yapısı içinde, tablo adını ve alan adını (yani: tdf.Name ve fld.Name) referans göstermem gerekiyor. Teşekkürler!!!

EDIT 2: FYI Mantıktan SELECT ifadeleri oluşturacağım.

cevap

10

Bu akım veritabanı için size kendi satırında her sütun alacak:

SELECT s.name SchemaName, t.name TableName, c.name ColumnName 
FROM sys.columns c INNER JOIN 
    sys.tables t ON c.object_id = t.object_id INNER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id 
; 

Veri erişim teknolojileri (ADO .NET, LINQ, vs.) herhangi bir sayıda kullanarak bu yinelemenize başladı.

İlgili konular