Sql-Server

創建表時創建聚集索引失敗

  • May 6, 2019

執行以下腳本時出現錯誤;

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 行

“索引”附近的語法不正確。如果打算將其作為表提示的一部分,則現在需要 WITH 關鍵字和括號。有關正確的語法,請參閱 SQL Server 聯機叢書。

這很奇怪,因為它適用於我們所有的伺服器,除了特定的 QA 伺服器。我們實施的修復是在表創建語句之外創建聚集索引,但如果有人以前遇到過這個問題,我會感興趣嗎?

SQL Server 2014 中添加了內聯索引聲明的語法,儘管在官方文件 完全不清楚。在與文件所有者交談後,該主題現在準確地反映了內聯索引語法僅從 SQL Server 2014 開始有效(以及 2016 年的一些變體):CREATE TABLE

在此處輸入圖像描述

此語法適用於您的其他實例必須在 SQL Server 2014 或更高版本上。

在 2012 年,無論兼容性級別如何,您都需要單獨創建索引。

引用自:https://dba.stackexchange.com/questions/165011