/*語(yǔ)法ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 } 參數(shù)database_name 要修改的數(shù)據(jù)庫(kù)的名稱。COMPATIBILITY_LEVEL { 80 | 90 | 100 }要使數(shù)據(jù)庫(kù)與之兼容的 SQL Server 版本。該值必須為下列值之一:80 = SQL Server 2000 90 = SQL Server 2005 100 = SQL Server 2008 備注對(duì)于所有 SQL Server 2008 安裝,默認(rèn)的兼容級(jí)別都為 100。除非 model 數(shù)據(jù)庫(kù)有更低的兼容級(jí)別,否則 SQL Server 2008 中創(chuàng)建的數(shù)據(jù)庫(kù)會(huì)設(shè)置為該級(jí)別。將數(shù)據(jù)庫(kù)從 SQL Server 的任何早期版本升級(jí)到 SQL Server 2008 時(shí),如果數(shù)據(jù)庫(kù)的兼容級(jí)別不在 80 以下,則該數(shù)據(jù)庫(kù)將保留其現(xiàn)有的兼容級(jí)別。升級(jí)兼容級(jí)別低于 80 的數(shù)據(jù)庫(kù)會(huì)將數(shù)據(jù)庫(kù)的兼容級(jí)別設(shè)置為 80。這既適用于系統(tǒng)數(shù)據(jù)庫(kù),也適用于用戶數(shù)據(jù)庫(kù)。使用 ALTER DATABASE 可更改數(shù)據(jù)庫(kù)的兼容級(jí)別。若要查看數(shù)據(jù)庫(kù)的當(dāng)前兼容級(jí)別,請(qǐng)查詢 sys.databases 目錄視圖中的 compatibility_level 列。利用兼容級(jí)別獲得向后兼容兼容級(jí)別只影響指定數(shù)據(jù)庫(kù)的行為,而不影響整個(gè)服務(wù)器的行為。兼容級(jí)別只實(shí)現(xiàn)與 SQL Server 的早期版本保持部分向后兼容。通過(guò)將兼容級(jí)別用作臨時(shí)性的遷移輔助工具,可解決相關(guān)兼容級(jí)別設(shè)置控制的行為之間存在的版本差異問(wèn)題。如果現(xiàn)有 SQL Server 應(yīng)用程序受到 SQL Server 2008 中行為差異的影響,請(qǐng)對(duì)該應(yīng)用程序進(jìn)行轉(zhuǎn)換,使之能正常運(yùn)行。然后使用 ALTER DATABASE 將兼容級(jí)別更改為 100。數(shù)據(jù)庫(kù)的新兼容性設(shè)置將在該數(shù)據(jù)庫(kù)下次成為當(dāng)前數(shù)據(jù)庫(kù)(無(wú)論是在登錄時(shí)作為默認(rèn)數(shù)據(jù)庫(kù)還是在 USE 語(yǔ)句中指定)時(shí)生效。最佳實(shí)踐如果在用戶連接到數(shù)據(jù)庫(kù)時(shí)更改兼容級(jí)別,可能會(huì)使活動(dòng)查詢產(chǎn)生不正確的結(jié)果集。例如,如果在編寫查詢計(jì)劃時(shí)兼容級(jí)別發(fā)生更改,則編寫后的計(jì)劃可能同時(shí)基于舊的和新的兼容級(jí)別,從而造成計(jì)劃不正確,并可能導(dǎo)致結(jié)果不準(zhǔn)確。此外,如果將計(jì)劃放在計(jì)劃緩存中供后續(xù)的查詢重用,則問(wèn)題可能更加復(fù)雜。為了避免查詢結(jié)果不準(zhǔn)確,建議您使用以下過(guò)程來(lái)更改數(shù)據(jù)庫(kù)的兼容級(jí)別:1. 通過(guò)使用 ALTER DATABASE SET SINGLE_USER,將數(shù)據(jù)庫(kù)設(shè)置為單用戶訪問(wèn)模式。2. 更改數(shù)據(jù)庫(kù)的兼容級(jí)別。3. 通過(guò)使用 ALTER DATABASE SET MULTI_USER,將數(shù)據(jù)庫(kù)設(shè)為多用戶訪問(wèn)模式。 有關(guān)設(shè)置數(shù)據(jù)庫(kù)訪問(wèn)模式的詳細(xì)信息,請(qǐng)參閱 ALTER DATABASE (Transact-SQL)。*/--獲取數(shù)據(jù)庫(kù)兼容級(jí)別SELECT name ,compatibility_level ,recovery_model_desc FROM sys.databases WITH(NOLOCK)--將用戶設(shè)置為單用戶訪問(wèn)模式ALTER DATABASE test SET SINGLE_USER--修改數(shù)據(jù)庫(kù)的兼容級(jí)別ALTER DATABASE TESTSET COMPATIBILITY_LEVEL = 90--orEXEC sp_dbcmptlevel TEST, 90;GO--將用戶設(shè)置為多用戶訪問(wèn)模式ALTER DATABASE test SET MULTI_USER/*語(yǔ)法sp_dbcmptlevel [ [ @dbname = ] name ] [ , [ @new_cmptlevel = ] version ] 參數(shù)[ @dbname = ] name要為其更改兼容級(jí)別的數(shù)據(jù)庫(kù)的名稱。數(shù)據(jù)庫(kù)名稱必須符合標(biāo)識(shí)符的規(guī)則。name 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。[ @new_cmptlevel = ] version數(shù)據(jù)庫(kù)要與之兼容的 SQL Server 的版本。version 的數(shù)據(jù)類型為 tinyint,默認(rèn)值為 NULL。該值必須為下列值之一:80 = SQL Server 2000 90 = SQL Server 2005 100 = SQL Server 2008 返回代碼值0(成功)或 1(失?。┙Y(jié)果集如果未指定任何參數(shù)或未指定 name 參數(shù),則 sp_dbcmptlevel 將返回錯(cuò)誤。如果指定 name 但未指定 version,則 數(shù)據(jù)庫(kù)引擎將返回一條消息,顯示指定數(shù)據(jù)庫(kù)的當(dāng)前兼容級(jí)別。備注有關(guān)兼容級(jí)別的說(shuō)明,請(qǐng)參閱 ALTER DATABASE 兼容級(jí)別 (Transact-SQL)。權(quán)限只有數(shù)據(jù)庫(kù)所有者、sysadmin 固定服務(wù)器角色和 db_owner 固定數(shù)據(jù)庫(kù)角色的成員(前提是您要更改當(dāng)前數(shù)據(jù)庫(kù))才能執(zhí)行此過(guò)程。*/
聯(lián)系客服