2

私の質問は、ここの質問とほとんど同じです:

SQL Server のすべてのデータベースのすべてのテーブルの列名を見つける方法

しかし、評判が50または>ではないためコメントできません。また、回答ボックスに回答を入力する必要があるため、回答ボックスに何も入力できません。

Stack Overflow からこのコードを取得しました。

SELECT *
FROM master..sysdatabases
where dbid > 4
--order by dbid
order by name

それは素晴らしく機能します - すべてのデータベースを一覧表示します。

私がやりたいことは、これらの列を示す結果テーブルを取得することです:

DatabaseName、TableSPViewName、FieldName、TypeSize、Indexed

DatabaseNameは、データベースの名前だけです。
TableSPViewName
には        、そのデータベース内のすべてのテーブルの名前が含まれます そのデータベース
       内のストアド プロシージャ
       の名前 そのデータベース内のすべてのビューの名前
FieldNameそのテーブル内のすべてのフィールドのリスト (テーブルまたはビューの場合)
TypeSizeは次のようになります。そのフィールドの型とサイズ (例: int、varchar(##)、bit ...)

2013 年 9 月 20 日編集 ---------------

このサイト:

http://blog.sqlauthority.com/2009/04/26/sql-server-list-all-the- table-for-all-databases-using-system-tables/

私はこれを見つけました:

exec sp_msforeachdb 'select "?" AS db, * from ?.sys.tables'

しかし、その SP は、すべてのテーブルを含む DB ごとに個別のクエリ ウィンドウを配置するので、すべてのテーブルを含む DB を取得します。

DB を含むすべて
のテーブルを含む
DB
DB 1テーブル


1

フィールド 1
DB 1 テーブル 1 フィールド 2
DB 1 テーブル 1 フィールド 3
DB 1 テーブル 2 フィールド 1
DB 1 テーブル 2 フィールド 2
DB 1 テーブル 2 フィールド 3
DB 1 テーブル3 フィールド 1
DB 1 テーブル 3 フィールド 2
DB 1 テーブル 3 フィールド 3
DB 2 テーブル 1 フィールド 1
DB 2 テーブル 1 フィールド 2
DB 2 テーブル 1 フィールド 3
DB 2 テーブル 2 フィールド 1
DB 2 テーブル 2 フィールド 2
DB 2 テーブル 2 フィールド 3
DB 2 テーブル 3 フィールド 1
DB 2 テーブル 3 フィールド 2
DB 2 テーブル 3 フィールド 3

EDIT # 2 2013 年 9 月 20 日 ---------------

このサイト:

http://blog.clicdata.com/2012/08/02/how-to-list-all-tables- and-columns-with-types-in-a-sql-server-database/

私はこれを見つけました:

SELECT  tTables.name AS table_name,
        tCols.name AS column_name,
        tTypes.name,        
        tTypes.max_length,       
        tTypes.precision,        
        tTypes.scale
        FROM    sys.tables AS tTables
        INNER JOIN sys.columns AS tCols 
        ON tTables.OBJECT_ID = tCols.OBJECT_ID
        JOIN sys.types AS tTypes 
        ON tCols.user_type_id = tTypes.user_type_id
        ORDER BY tTables.name;


しかし、それは使用中の CURRENT データベースに対してのみ機能します。
探しているものに本当に近くなりますが、上記の機能を実行するクエリが1つ必要ですが、すべてのデータベースに対して必要です。上記の「DB 1 テーブル 1 フィールド 1」の長いリストを参照してください。上記のクエリを取得して、上記が生成するものの左側に DATABASENAME を追加し、すべての DB に対してそれを行うことができれば、ビジネスになります!


4

1 に答える 1