2013-02-19 147 views
2

我試圖「描述」一個表格,我在StackOverflow上有不同的帖子,但是當我運行sp_columns時,沒有顯示任何結果或行。爲什麼sp_columns不返回結果?

sp_columns assignee 

結果:

A bunch of column headers... 

這有什麼錯我的數據庫,爲什麼不工作的呢?

+3

什麼用downvotes的?如果Q不好,至少說出爲什麼要編輯它或使其更好。 – mlissner 2013-02-19 20:14:03

+0

是不是我,但懷疑:你的問題是非常基本的,因爲你連接到錯誤的數據庫(用戶錯誤)。這個問題不可能對未來的讀者有價值。 – 2013-02-20 00:16:24

+0

儘管它可能是基本的,但我們現在已經獲得了超過1,000個視圖。 – mlissner 2013-11-11 18:35:24

回答

10

而不是sp_columns使用目錄視圖(這些sp_程序中的許多程序未針對新功能進行更新)。

SELECT name, system_type_id, ... 
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID('dbo.TableName'); 
    ---- yes this is important ----^^^^ 

此外,請確保您顯然位於正確的數據庫中。

1

如果您連接到錯誤的數據庫,查詢將無誤地執行,但不會返回任何結果。

例如,如果你有一個在patents數據庫稱爲assignee表和運行對master數據庫這個查詢,你會得到任何結果,沒有錯誤:

sp_columns 'dbo.assignee'; 

結果:

Nothing, nada, zilch. 

如果您更改連接,以便查詢適用於正確的數據庫,則會得到結果。

+2

@AaronBertrand:我不知道爲什麼,但'EXEC sp_columns'dbo.tablename';'返回一個空集我,即使'EXEC sp_help'dbo.tablename''工作正常。 *編輯:*'EXEC sp_columns'tablename','dbo''工作! (也沒有引號) – 2013-03-04 17:47:26

+0

@AndriyM什麼版本的SQL Server?無論如何,如果你不能讓'sp_columns'工作,更有理由停止使用'sp_'程序並使用'sys.columns'代替(或者,2012年,mew元數據發現函數/過程)。特別是如果你在'dbo'以外的模式中有表格 - 只需要在AdventureWorks中做很多這些工作;祝你好運。 – 2013-03-04 17:52:18

+0

@AaronBertrand:SQL Server 2008 R2 RTM。我從來沒有使用過'sp_columns',只是看看它自己的教育。它是'sp_helptext sp_columns',它揭示了使用proc的正確方法,但我同意你的觀點,可能永遠不需要使用'sp_columns'。 – 2013-03-04 18:03:20

0

嘗試如下,

exec sp_columns yourTableName 

這將返回可在當前環境中查詢指定的表和視圖的列信息。

注意:如果表中包含數據,那麼您只會獲得數據列表。

0

對於一個特定的模式,嘗試:

sp_columns tableName, schemaName 
相關問題