2011-08-02 33 views
5

Tengo una necesidad comercial que no había visto en 10 o 15 años, así que discúlpeme por el código de dino que utilizaré para ilustrar lo que estoy tratando de hacer. Sé que hay una manera de hacer algo como esto en SQL Server, es demasiado tiempo para mí.Servidor SQL: ¿pasar por cada columna en cada tabla?

De vuelta en los días de MS DAO, usaría algo como esto para recorrer todos los campos de todas las tablas. Ahh ... Recuerdos ...

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 

¿Alguien me puede dar un equivalente de SQL-Server?

EDIT: Dentro de cualquier estructura de bucle que pueda configurar, también necesito referenciar el nombre de la tabla y el nombre del campo (es decir: tdf.Name y fld.Name). ¡¡¡Gracias!!!

EDIT 2: FYI Voy a construir sentencias SELECT de la lógica.

Respuesta

10

Esto le dará todas las columnas en su propia fila de la base de datos actual:

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 
; 

Se podría iterar a través de que el uso de cualquier número de tecnologías de acceso a datos (ADO .NET, LINQ, etc).

Cuestiones relacionadas