更改資料庫的相容模式
/*
語法
ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 }
引數
database_name
要修改的資料庫的名稱。
COMPATIBILITY_LEVEL { 80 | 90 | 100 }
要使資料庫與之相容的 SQL Server 版本。該值必須為下列值之一:
= SQL Server 2000
= SQL Server 2005
= SQL Server 2008
備註
對於所有 SQL Server 2008 安裝,預設的相容級別都為 100。除非 model 資料庫有更低的相容級別,否則 SQL Server 2008 中建立的資料庫會設定為該級別。將資料庫從 SQL Server 的任何早期版本升級到 SQL Server 2008 時,如果資料庫的相容級別不在 80 以下,則該資料庫將保留其現有的相容級別。升級相容級別低於 80 的資料庫會將資料庫的相容級別設定為 80。這既適用於系統資料庫,也適用於使用者資料庫。使用 ALTER DATABASE 可更改資料庫的相容級別。若要檢視資料庫的當前相容級別,請查詢 sys.databases 目錄檢視中的 compatibility_level 列。
利用相容級別獲得向後相容
相容級別隻影響指定資料庫的行為,而不影響整個伺服器的行為。相容級別只實現與 SQL Server 的早期版本保持部分向後相容。通過將相容級別用作臨時性的遷移輔助工具,可解決相關相容級別設定控制的行為之間存在的版本差異問題。如果現有 SQL Server 應用程式受到 SQL Server 2008 中行為差異的影響,請對該應用程式進行轉換,使之能正常執行。然後使用 ALTER DATABASE 將相容級別更改為 100。資料庫的新相容性設定將在該資料庫下次成為當前資料庫(無論是在登入時作為預設資料庫還是在 USE 語句中指定)時生效。
最佳實踐
如果在使用者連線到資料庫時更改相容級別,可能會使活動查詢產生不正確的結果集。例如,如果在編寫查詢計劃時相容級別發生更改,則編寫後的計劃可能同時基於舊的和新的相容級別,從而造成計劃不正確,並可能導致結果不準確。此外,如果將計劃放在計劃快取中供後續的查詢重用,則問題可能更加複雜。為了避免查詢結果不準確,建議您使用以下過程來更改資料庫的相容級別:
- 通過使用 ALTER DATABASE SET SINGLE_USER,將資料庫設定為單使用者訪問模式。
- 更改資料庫的相容級別。
- 通過使用 ALTER DATABASE SET MULTI_USER,將資料庫設為多使用者訪問模式。
有關設定資料庫訪問模式的詳細資訊,請參閱 ALTER DATABASE (Transact-SQL)。
*/
--獲取資料庫相容級別
SELECT name ,compatibility_level ,recovery_model_desc FROM sys.databases WITH(NOLOCK)
--將使用者設定為單使用者訪問模式
ALTER DATABASE test SET SINGLE_USER
--修改資料庫的相容級別
ALTER DATABASE TEST
SET COMPATIBILITY_LEVEL = 90
--or
EXEC sp_dbcmptlevel TEST, 90;
GO
--將使用者設定為多使用者訪問模式
ALTER DATABASE test SET MULTI_USER
/*
語法
sp_dbcmptlevel [ [ @dbname = ] name ]
[ , [ @new_cmptlevel = ] version ]
引數
[ @dbname = ] name
要為其更改相容級別的資料庫的名稱。資料庫名稱必須符合識別符號的規則。name 的資料型別為 sysname,預設值為 NULL。
[ @new_cmptlevel = ] version
資料庫要與之相容的 SQL Server 的版本。version 的資料型別為 tinyint,預設值為 NULL。該值必須為下列值之一:
= SQL Server 2000
= SQL Server 2005
= SQL Server 2008
返回程式碼值
0(成功)或 1(失敗)
結果集
如果未指定任何引數或未指定 name 引數,則 sp_dbcmptlevel 將返回錯誤。
如果指定 name 但未指定 version,則 資料庫引擎將返回一條訊息,顯示指定資料庫的當前相容級別。
備註
有關相容級別的說明,請參閱 ALTER DATABASE 相容級別 (Transact-SQL)。
許可權
只有資料庫所有者、sysadmin 固定伺服器角色和 db_owner 固定資料庫角色的成員(前提是您要更改當前資料庫)才能執行此過程。
*/
本文轉自51GT51CTO部落格,原文連結:http://blog.51cto.com/yataigp/2049654 ,如需轉載請自行聯絡原作者
相關文章
- Postgresql10資料庫之更改資料庫的名稱SQL資料庫
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- 2.6.9 指定資料庫相容級別資料庫
- 瀚高資料庫相容Mysql的unhex函式資料庫MySql函式
- Ubuntu 上更改 MySQL 資料庫資料儲存目錄UbuntuMySql資料庫
- Django中更改預設資料庫為mysqlDjango資料庫MySql
- Linux CentOS更改MySQL資料庫目錄位置LinuxCentOSMySql資料庫
- Oracle中的sql%rowcount在瀚高資料庫中的相容方案OracleSQL資料庫
- ADFS 部署資料庫AlwaysOn後應用端的連線字串更改資料庫字串
- 達夢8資料庫的狀態模式資料庫模式
- 資料庫映象 (SQL Server)操作模式資料庫SQLServer模式
- excel相容模式怎麼改成普通模式 excel如何關閉相容模式Excel模式
- Oracle資料庫歸檔模式的切換ELOracle資料庫模式
- 資料更改事件的三種型別事件型別
- 更改資料檔案路徑的方法
- JavaWeb——JSP呼叫資料庫、JavaBean、MVC模式JavaWebJS資料庫BeanMVC模式
- 3.3.3 使用immiedit模式關閉資料庫模式資料庫
- 如何更改win10資料夾圖示_win10更改資料夾圖示的方法Win10
- 在 Laravel 的資料庫模型中使用狀態模式Laravel資料庫模型模式
- 達夢資料庫例項的狀態和模式資料庫模式
- IvorySQL王志斌—IvorySQL,一個基於PostgreSQL的相容Oracle的開源資料庫SQLOracle資料庫
- 模式:每個服務一個資料庫模式資料庫
- 反DDD模式之關係型資料庫模式資料庫
- 策略模式實現支援多種類資料庫的DBHelp模式資料庫
- 【虹科乾貨】無模式資料庫的利與弊模式資料庫
- Oracle資料庫歸檔模式的開啟和關閉Oracle資料庫模式
- Java中管理資料庫併發的6種鎖模式Java資料庫模式
- word相容模式怎樣換成正常模式 如何把word相容模式改成標準模式
- 歸檔路徑更改後,如何對資料庫進行恢復(轉)資料庫
- mybatis(問題1):更改操作執行了,資料庫中卻未執行MyBatis資料庫
- 資料庫知識整理 - 概述、資料模型、三級模式結構資料庫模型模式
- 資料庫 資料庫的完整性資料庫
- 生產資料庫、開發資料庫、測試資料庫中的資料的區分資料庫
- 【資料庫】關係模式的正規化的簡明判斷資料庫模式
- 亞馬遜雲科技在北京區域推出相容MongoDB的文件資料庫Amazon DocumentDB亞馬遜MongoDB資料庫
- SQLServer附加資料庫是隻讀模式的解決辦法SQLServer資料庫模式
- 如何啟動一個 server 模式的 h2 資料庫Server模式資料庫
- 資料庫開發如何向DevOps模式轉換?資料庫dev模式
- SQLSERVER完整資料庫還原(完整恢復模式)SQLServer資料庫模式