SET COMPATIBILITY_LEVEL 用於設定MS SQL Server的相容層級
MS SQL Server 2000:SET COMPATIBILITY_LEVEL=80
MS SQL Server 2005:SET COMPATIBILITY_LEVEL=90
MS SQL Server 2008:SET COMPATIBILITY_LEVEL=100
MS SQL Server 2012:SET COMPATIBILITY_LEVEL=110
最常使用方法:
ALTER DATABASE [資料庫名]
SET COMPATIBILITY_LEVEL = 100
詳細用法參見此處。
使用高版本的資料庫設定去相容低版本的資料時要注意。
比如在MS SQL Server 2008資料庫把COMPATIBILITY_LEVEL設定為80,也就是相容MS SQL Server 2000.
查看如下查詢語句
比如有兩個表:ProductColor、Product
ProductCategory表有:CategoryID、CategoryName.
Product表有ProductID、SKU、CategoryID(對應ProductCategory表CategoryID欄位)欄位。
SELECT *FROM PRODUCT P INNER JOIN PRODUCTCATEGORY PC ON P.CATEGORYID=PC.CATEGORYIDORDER BY CATEGORYID
MS SQL Server 2008預設的COMPATIBILITY_LEVEL為100.
如果把MS SQL Server 2008的COMPATIBILITY_LEVEL設定為80,即相容MS SQL Server 2000.
會拋出“System.Data.SqlClient.SqlExceptionAmbiguous column name CATEGORYID.”如下錯誤。
因為這一句
ORDER BY CATEGORYID
的CATEGORYID沒有指定具體是哪個表的欄位。
所以為資料庫設定COMPATIBILITY_LEVEL相容低版的資料庫時要特別注意。