2017-11-08 5 views
0

私はオブジェクトエクスプローラのフィルタテーブルでこれを行いますが、これはクエリ で行います。クエリを実行すると、dboスキーマとそのフィールドを持つすべてのテーブルが返されます。dboスキーマを使用してデータベース内のすべてのテーブルのリストを取得する方法は?

+2

@HoneyBadgerが示唆するようにINFORMATION_SCHEMA.TABLES' SELECT * FROM '、試してみてください – HoneyBadger

+0

' information_schema'景色を見てください。 –

+0

'' 'INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND table_type = 'BASE TABLE'''' – abhi

答えて

2

戻り、以下のデータベースの使用中のすべての表、スキーマ、列およびデータ・タイプを取得するには、スキーマ

SELECT '['+SCHEMA_NAME(schema_id)+'].['+name+']' 
AS TableName 
FROM sys.tables where SCHEMA_NAME(schema_id) = 'dbo' 

UNION 

SELECT '['+SCHEMA_NAME(schema_id)+'].['+name+']' 
AS TableName 
FROM sys.views where SCHEMA_NAME(schema_id) = 'dbo' 
+0

結果にビューを表示したい場合は、テーブル 'sys.views'ですべてのユニオンを行うことができます – GuidoG

+0

ビューを含めることをお勧めしますaswel –

1

この情報を取得しようとしていますか?

また、列も必要な場合は、これを試してください。 sys.tablesから

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'dbo' 
+0

あなたは最初の答えを試しましたか?それはスキーマを与えません。これは 'schema_id'列に' 1'の値を与えます。 –

+0

@WEI_DBA、Schema_Id = 1は.dboスキーマを与えます – Madhukar

+0

同意しましたが、結果に '.dbo'スキーマは表示されません。 –

0

のビューを含めること

SELECT '['+SCHEMA_NAME(schema_id)+'].['+name+']' 
AS TableName 
FROM sys.tables where SCHEMA_NAME(schema_id) = 'dbo' 

をフィルタリングするschema_idを使用クエリ。

select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE from INFORMATION_SCHEMA.COLUMNS 
関連する問題