次のスクリプトを実行するとエラーが発生します。
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='Table_Name')
BEGIN
CREATE TABLE Table_Name
(
Field_Name_1 binary(32) NOT NULL CONSTRAINT PK_Name_Goes_Here PRIMARY KEY NONCLUSTERED
, Field_Name_2 int NOT NULL
, Field_Name_3 datetime NOT NULL INDEX IX_Name_Goes_Here CLUSTERED
)
END
特に、次のエラーをスローするクラスター化インデックスの作成です。
メッセージ1018、レベル15、状態1、行15
「INDEX」付近の構文が正しくありません。これがテーブルヒントの一部として意図されている場合、WITHキーワードと括弧が必要になりました。適切な構文については、SQL Server Books Onlineを参照してください。
特定のQAサーバーを除くすべてのサーバーで機能するため、これは奇妙です。私たちが行った修正は、テーブル作成ステートメントの外でクラスター化インデックスを作成することですが、誰かが以前にこの問題に遭遇したことがあれば、興味がありますか?
インラインインデックス宣言の構文はSQL Server 2014で追加されましたが、 ですだった公式CREATE TABLE
ドキュメント 。ドキュメントの所有者と話した後、そのトピックは、インラインインデックス構文がSQL Server 2014(および2016年のいくつかのバリエーション)以降でのみ有効であることを正確に反映しています。
この構文が機能する他のインスタンスは、SQL Server 2014以降である必要があります。
2012では、互換性レベルに関係なく、インデックスを個別に作成する必要があります。