2013-10-30 56 views
2

有時,我有興趣獲取SQL Server 2008 R2數據庫中某個表或視圖中列的列表。例如,如果您在不使用昂貴的現成產品的情況下構建數據庫文檔,這很有用。如何獲取表格或視圖中的列的列表?

什麼是獲取這些信息的簡單方法?

+0

這裏提供的很多答案都很好,但我會爭辯說,db文檔中最重要的信息片段之一是列描述,其他答案都不提供。 –

+0

您是否真的嘗試過任何建議的方法?我建議的方式會給你列描述如下「object_id,name,column_id,system_type_id,user_type_id,max_length,precision,scale,collat​​ion_name,is_nullable,is_ansi_padded,is_rowguidcol,is_identity,is_computed,is_filestream,is_replicated,is_non_sql_subscribed,is_merge_published,is_dts_replicated所以onnnnnnnnnn是不是足夠的列描述???? –

+0

總共它返回了近50列全部包含關於視圖中的每一列的詳細信息似乎足夠的「列描述」給我朋友 –

回答

2

在SQL Server 2008 R2(以及其他版本)中,每個數據庫都會自動提供系統視圖。只要您連接到您的表所在的數據庫,你可以運行這樣的查詢:

DECLARE @TableViewName NVARCHAR(128) 
SET @TableViewName=N'MyTableName' 

SELECT b.name AS ColumnName, c.name AS DataType, 
b.max_length AS Length, c.Precision, c.Scale, d.value AS Description 
FROM sys.all_objects a 
INNER JOIN sys.all_columns b 
ON a.object_id=b.object_id 
INNER JOIN sys.types c 
ON b.user_type_id=c.user_type_id 
LEFT JOIN sys.extended_properties d 
ON a.object_id=d.major_id AND b.column_id=d.minor_id AND d.name='MS_Description' 
WHERE [email protected] 
AND a.type IN ('U','V') 

當然,這只是一個起點。每個數據庫中還有許多其他系統視圖和列。您可以通過SQL Server Management Studio在Views > "System Views下找到它們

1

sp_columns返回有關表中每列的詳細信息。 SO Answer

sp_columns @tablename

sp_help返回詳述關於整個表包括列和約束信息。 SO Answer

sp_help @tablename

+0

好,但不能提供對列描述的訪問,據我所知。 –

0

另一種方式是查詢INFORMATION_SCHEMA.COLUMNS查看詳見這裏:

Information_Schema - COLUMNS

這會給你的信息在當前數據庫中的所有列(什麼表/它們屬於哪個視圖)包括它們的數據類型,精度,排序規則以及它們是否允許空值等

有用的是,這些視圖也可以在多個DBMS程序中維護,所以您可以使用相同或相似的查詢來獲取與SQL Server數據庫相同的有關MySQL數據庫的信息,如果您在多臺平臺上開發,這些數據可能會很有用。

+0

就像blachniet的答案一樣,這也是一個很好的解決方案,但它仍然不能提供對列描述的訪問,據我所知。 –

+0

啊,你沒有提到擴展屬性在你的問題,在這種情況下,加入sys.columns和sys.extended_properties應該做的伎倆。 information_schema視圖值得記住,儘管它們公開了大量信息,就像我提到的一樣,也存在於其他DBMS中,例如MySQL – steoleary

0

在新的查詢窗口中,輸入視圖/表的名稱,突出顯示它,然後按Alt-F1。這將運行sp_help,就像blachniet建議的那樣。

0

要獲得Columns of a view一個清單,你可以使用下面列了一些其他information

SELECT * FROM sys.columns c, sys.views v 
    WHERE c.object_id = v.object_id 
    AND v.name = 'view_Name' 
GO 

如果你只想要Column Name列表使用。

SELECT c.name 
FROM sys.columns c, sys.views v 
WHERE c.object_id = v.object_id 
AND v.name = 'view_UserAssessphers' 
GO 
1
exec sp_helptext <your view name> 

而且僅適用於該視圖,blachniet的回答是最好的,如果你需要在表中的列的詳細信息。

相關問題