私の質問は、ここの質問とほとんど同じです:
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 に対してそれを行うことができれば、ビジネスになります!