2011-09-20 106 views
1

出於某種原因,它使用sys.dm_exec_requests DMV和sys.dm_exec_sql_text DMV以下查詢簡單查詢T-SQL編譯問題無法編譯:涉及DMV

SELECT er.session_id, es.[text] 
FROM sys.dm_exec_requests AS er 
    CROSS APPLY sys.dm_exec_sql_text(er.[sql_handle]) AS es 

查詢摘錄上面是一個更大的一部分(和更復雜)查詢其失敗,因爲這更小的查詢將不執行,給我的語法錯誤:

Msg 102, Level 15, State 1, Line 3 Incorrect syntax near '.'.

查詢看起來很簡單,但它看起來像T-SQL分析器在er.sql_handle是猶豫不決。我認爲這可能是一個逃避問題,並嘗試er.[sql_handle],但可悲的是得到了同樣的錯誤。

+0

沒有語法錯誤,在這裏,你的運行精確查詢作爲針對2008服務器/數據庫給出。 –

+0

我不知道這是否與SQL Server 2008 R2有關。我正在使用:Microsoft SQL Server 2008 R2(RTM) - 10.50.1797.0(X64)2011年6月1日15:43:18 Copyright(c)Windows NT 6.1上的Microsoft Corporation Enterprise Edition(64位)(Build 7601:Service包1) –

回答

3

在SQL Server 2000兼容模式下的數據庫環境中運行時出現此錯誤。嘗試在其中一個系統數據庫的上下文中運行它。

+2

只是試圖發佈基本上相同的答案。 –

+0

你擊中了頭部!我的數據庫被設置爲SQL Server 2000兼容模式。我將其更改爲SQL Server 2008,查詢執行得很好。謝謝! –

+0

順便說一下,如何爲實例級新創建的數據庫設置默認兼容模式(例如,SQL Server 2008 R2)? –

1

如果使用的是2008或2008 R2和EXEC sp_dbcmptlevel 'databasename'給予低於90則使用下面的腳本:

ALTER DATABASE databasename SET COMPATIBILITY_LEVEL = 100