ワン:私はより良い結果のデータを操作することができますので、私は通常、一時テーブルにそれをダンプ
EXEC master.sys.sp_MSForEachDB N'
IF ''?'' NOT IN (''master'', ''model'', ''msdb'', ''tempdb'')
BEGIN
USE ?
SELECT ''?'' AS theDatabase
, OBJECT_SCHEMA_NAME([tables].[object_id],DB_ID()) AS theSchema
, [tables].name AS theTable
, [columns].[name] AS theColumn
, [types].[name] AS theDatatype
, [columns].max_length AS columnSize
, [columns].[precision] AS columnPrecision
, [columns].scale AS columnScale
, [columns].is_nullable AS isNullable
FROM sys.tables AS [tables]
INNER JOIN sys.all_columns [columns] ON [tables].[object_id] = [columns].[object_id]
INNER JOIN sys.types [types] ON [columns].system_type_id = [types].system_type_id
AND [columns].user_type_id = [types].user_type_id
WHERE [tables].is_ms_shipped = 0
ORDER BY [tables].name, [columns].column_id
END
'
。
私はsp_MSforEachDBの欠落したテーブルで問題にぶつかりませんでしたが、問題についてAaronの記事をチェックします。彼は間違いなく私が信頼する名前です。 :-)
文書化されていないsp_msforeachdbを使用できますが、データベースをスキップすることがあります。おそらく私がやることであろう、これに対して動的SQLを活用することもできます。何を出力したいですか?ちょうどdatabasename、tablenameとcolumnname? –
そのようなことをする唯一の方法は、動的SQLを使用することです。あなたの本当の目標は何ですか?なぜあなたはこれをしたいのですか?何が必要だと思いますか?おそらくあなたは間違った質問をしているかもしれません。なぜなら、私はこれが本当に価値があるのか想像できないからです。あなたの特定の必要性にあなたの質問を集中させることができますか? – pmbAustin
はい、これらの3つのものが必要です。私は新しい会社のサーバーに慣れようとしており、各データベースのテーブル名と列を参照するだけで探索したいと考えています。また、私は書き込みアクセス権を持っていませんし、これをTableauカスタムSQLで行っています。 – JJBee