なぜ互換モード80でのデータベースのSQL Server 2008の仕事の新しいT-SQLのでしょうか?
-
26-09-2019 - |
質問
T-SQLの新機能を試す、私はパズルに遭遇しました。ここではSQL 2008でサポートされているいくつかの新しい構文があると私は互換モード80(すなわち、2000年)のための互換モード100(すなわち、2008)およびない仕事のために設定されたデータベース上での作業にそれを期待します。しかし、標準版のSQL 2008のインスタンスにSQL Server 2000の互換モード用のデータベース・セットのこの作品ます:
use MDS -- this db is compat mode 80
go
CREATE TABLE dbo.Employees
(
Name VARCHAR(50) NULL,
Email VARCHAR(50) NULL,
Salary money NULL
)
INSERT INTO dbo.Employees(Name, Email, Salary)
VALUES('Scott', 'scott@example.com', 50000.00),
('Jisun', 'jisun@example.com', 225000.00),
('Alice', 'al@example.com', 75000.00),
('Sam', 'sam@example.com', 45000.00)
SELECT * FROM dbo.Employees
drop table dbo.Employees
解決
互換モードの設定は、比較的databaeエンジン挙動の(私見)の態様を不明瞭一定制御するために使用されます。これは、以前のバージョンから移行したデータベースで使用されているから、T-SQL言語の拡張機能の使用をブロックするか、または防ぐことはできません - 例えば、データベースは、SQL 2000からバックアップおよびSQL 2008に復元のCTEと新しいマルチをサポートします値INSERT文ます。
データベースの互換モードで制御されているものの実際の詳細は、Books Onlineのいくつかの記事に埋め込まれています。 こののは良いが、これを研究の場を開始されます。
他のヒント
私もこのことに気づいて、MSDN の上この文を見つけました:
であることを特定のデータベースの動作を設定します。 指定されたバージョンとの互換性 SQL Serverののます。
互換モードでは、「特定」の行動ではなく、すべての行動に影響を与えます。詳細については、 ALTER DATABASEのドキュメントを参照してください。
私はあなたがあなたのテーブルを作成する前に、これは、この行を追加する互換モード80トライで仕事ができる方法を見ていない:
sp_dbcmptlevel 'MDS'
それは80を返していますか?