簡體   English   中英

從SQL Server 2008遷移到SQL Server 2012 Express

[英]Moving from SQL Server 2008 to SQL Server 2012 Express

我正在將一個應用程序從SQL Server 2008遷移到SQL Server 2012 Express,一切都很好,但是幾個存儲過程說我有語法錯誤。 我在網上查看並沒有找到答案-SQL Server 2008(標准版)中是否支持某些語法類型,但SQL Server 2012 Express中不支持?

我猜有一種可能,如果在2008年您使用的是2000兼容模式,並且您的存儲過程具有舊式的外部聯接:

SELECT o.name, c.name
FROM sys.objects AS o, sys.columns AS c
WHERE o.[object_id] *= c.[object_id];

此語法在SQL Server 2000中有效,但此后不推薦使用。 在2005、2008和2008 R2中,如果使用80兼容模式,您可以試一下。 從SQL Server 2012開始,您將無法再使用80兼容模式,因此上述代碼將因以下原因而失敗:

Msg 102,第15級,狀態1,第3行
'* ='附近的語法不正確。

在2008年,您將收到以下錯誤消息:

Msg 4147,第15級,狀態1,第3行
該查詢使用非ANSI外部聯接運算符( "*=" or "=*" )。 要不加修改地運行此查詢,請使用ALTER DATABASE的SET COMPATIBILITY_LEVEL選項將當前數據庫的兼容性級別設置為80。 強烈建議使用ANSI外部聯接運算符(LEFT OUTER JOIN,RIGHT OUTER JOIN)重寫查詢。 在SQL Server的將來版本中,即使在向后兼容模式下也將不支持非ANSI連接運算符。

但是,如果您按照錯誤消息中的建議更改數據庫,則它將起作用:

ALTER DATABASE foo SET COMPATIBILITY_LEVEL = 80;

這似乎是一個拉伸。 但是沒有一些真實的信息,這是我唯一的猜測。

這是SQL Server 2012中不推薦使用的功能的列表 -特別看看T-SQL部分。 您還可以使用SSDT(SQL Server數據工具),創建數據庫的脫機副本,然后將目標版本設置為SQL Server 2012-輸出將顯示出版本之間的許多語法不兼容。 我寫了一篇博客有關SSDT可能會有所幫助這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM