2013-09-24 54 views
0

我怎樣才能得到表列表和它的結構從sql服務器..我使用下面的代碼從sql server獲取數據庫列表。如何獲得表列表和結構在sql server

SELECT * FROM sys.databases WHERE sys.databases.database_id > 4 

該查詢返回的數據庫「名稱」和「ID」和其他許多田間...

和我在我的.net應用程序中顯示綁定下拉列表...現在我需要得到選擇數據庫的表格列表,根據它的編號在下拉列表中選擇...

什麼是查詢來獲取所選數據庫的表列表。

回答

0
select name from sys.tables where type = 'U' --U = user defined tables as opposed to system tables 
+0

我需要得到數據庫ID的基礎表列表。 –

+1

該列表將針對您所在的數據庫提供 - 因此您需要首先連接到該數據庫/目錄。如果你想要所有dbs的表,你可以這樣做:'sp_msforeachdb'select''?''dbName,db.database_id,t。* from sys.databases db cross join [?]。sys.tables t where db。名稱=「」?「」'' – JohnLBevan

0

嘗試這一個 -

DECLARE @SQL NVARCHAR(MAX) 
SELECT @SQL = STUFF((
    SELECT CHAR(13) + 'SELECT ''' + d.name + ''', name, object_id FROM [' + d.name + '].sys.objects WHERE type = ''U''' 
    FROM sys.databases d 
    WHERE d.state_desc != 'OFFLINE' 
    FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, '') 

PRINT @SQL 
EXEC sys.sp_executesql @SQL 

輸出 -

db  name         object_id 
------ -------------------------------------- ----------- 
master spt_monitor       68195293 
master spt_fallback_db      117575457 
master spt_fallback_dev      133575514 
master spt_fallback_usg      149575571 
master MSreplication_options     1787153412 

db name         object_id 
---- -------------------------------------- ----------- 
msdb sysmail_profile      14623095 
msdb syscollector_config_store_internal  23671132 
msdb DTA_reports_queryindex     38291196