Sql-Server
有沒有辦法根據 SQL Server 版本執行 SQL 語句?
如果 SQL Server 是 2008 或更高版本,我想在表上創建計算索引,如果 SQL Server 是 2005 或更早版本,我想創建一個簡單索引:
-- check for sql server version if (select cast(left(cast(serverproperty('productversion') as varchar), 4) as decimal(5, 3))) >= 10 CREATE unique nonclustered index ix1_table ON table (column1, column2) WHERE column1 is not null and column2 is not null ELSE CREATE nonclustered index ix1_table ON table (column1, column2)
問題是評估了整個語句,並且在 SQL Server 2005 上這會引發錯誤:
關鍵字“WHERE”附近的語法不正確。
是否可以基於 SQL Server 版本以某種方式創建不同的索引?
您可以使用動態 SQL
我的意思是先檢查版本
然後使用字元串變數建構 SQL 語句,例如 nvarchar(max)
然後通過 sp_executeSQL 執行
我認為以下腳本可以完成這項任務
-- check for sql server version declare @sql nvarchar(max) if (select cast(left(cast(serverproperty('productversion') as varchar), 4) as decimal(5, 3))) >= 10 set @sql = N'CREATE unique nonclustered index ix1_table ON [table] (column1, column2) WHERE column1 is not null and column2 is not null' ELSE set @sql = N'CREATE nonclustered index ix1_table ON [table] (column1, column2)' exec sp_executeSQL @sql