我在包含一個函數的腳本中無意中使用了一對SQL Server 2008 T-SQL功能,該功能將部署到衆多客戶數據庫中,其中一些將SQL 2005SQL Server 2008 T-SQL功能不考慮兼容性水平
違規語句的一個例子:
create function dbo.fnThisWontWorkOnSQL2005
()
returns varchar(max)
as
begin
declare @intCounter int = 2
return @intCounter
end
select dbo.fnThisWontWorkOnSQL2005()
在一個SQL2008實例,這將返回2.
在一個SQL2005實例這個建議「不能默認值賦給一個局部變量「。
然而,兼容級別運行在SQL2008 R2實例設置一個SQL 2005數據庫的代碼順利地執行和返回2
我的問題出現,因爲我在SQL2008R2實例開發和我曾以爲,設置目標數據庫與SQL Server 2005的兼容級別會標記任何無效的T-SQL,儘管這種情況不會發生,或者至少我無法找到阻止它發生的事情。
有沒有人知道一種方法來防止這種情況發生?我搜索了各種各樣,但無法找到一種方式,它感覺像是一個錯誤,或者我總是需要開發我將部署到最低的SQL版本?
僅供參考:「deighters」不是正確的詞:我猜你的意思是新的「功能」 – gbn
我只在Microsoft網站http://technet.microsoft.com/en-us/library/cc721270找到這個名字%28SQL.100%29.aspx這就是他們所稱的 Transact-SQL Delighters Transact-SQL提升程序是一項小的增強,它在很大程度上有助於使編程體驗更加方便。本節涵蓋以下Transact-SQL提取器:聲明和初始化變量,複合賦值運算符,通過VALUES子句提供的表值構造器支持,以及增強的CONVERT函數 –
由非母語英語者(Itzik is Israeli)撰寫。我將改述:這個詞有微妙的泛音不適合公共論壇 – gbn