[SQL Server] データベースの互換性レベル変更する時のSQL / sp_dbcmptlevel

inno
2014-01-08 21:28 5063 0
[SQL Server] データベースの互換性レベル変更する時のSQL

データベースの互換性レベルを変更する時に使うSQLです。

EXEC sp_dbcmptlevel @dbname = '[データベース名]', @new_cmptlevel = [version]

「@dbname」にはデータベース名を入力します。
「@new_cmptlevel」には互換性レベルのバージョンを指定します。

90 = SQL Server 2005
100 = SQL Server 2008
110 = SQL Server 2012

例文は下記のとおりです。

EXEC sp_dbcmptlevel @dbname = 'tempdb', @new_cmptlevel = 100

「tempdb」データベースの互換性レベルを「SQL Server 2008」に設定するという意味です。

いつ使うかと言いますと。。
SQL Server 2005からデータベースをバックアップして
SQL Server 2008にリストアした時に該当データベースの「プロパティー」-「オプション」を見ると
互換性レベルがSQL Server 2005のままになっています。
サーバーがSQL Server 2008なら互換性レベルもSQL Server 2008に変更するのが理想的です。
その「プロパティー」の画面から変更してもいいです。
もし、SQLを実行して変更したい場合は上記のSQLを利用して互換性レベルを変更することができます。

注意。
変更後互換性レベルが以前のレベルになっている時に正常に処理されたSQLがエラーになる可能性もあります。
必ずテストを行った後に変更をしましょう。
ちなみに、変更しなくても大きい問題は発生しません。

コメント