2016-03-21 217 views
1

我在SQL Server Management Studio中2014這個自動更新腳本生成的關鍵字「SET」不正確的語法(可視化編輯表格後):SQL Server 2005中 - 近

BEGIN TRANSACTION 

SET QUOTED_IDENTIFIER ON 
SET ARITHABORT ON 
SET NUMERIC_ROUNDABORT OFF 
SET CONCAT_NULL_YIELDS_NULL ON 
SET ANSI_NULLS ON 
SET ANSI_PADDING ON 
SET ANSI_WARNINGS ON 

COMMIT 

BEGIN TRANSACTION 
GO 

ALTER TABLE dbo.Rilevamenti ADD 
    DataScadenza datetime NULL 
GO 

DECLARE @v sql_variant 
SET @v = N'Data di scadenza rilevata.' 

EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA', N'dbo', N'TABLE', N'Rilevamenti', N'COLUMN', N'DataScadenza' 
GO 

ALTER TABLE dbo.Rilevamenti SET (LOCK_ESCALATION = TABLE) 
GO 

COMMIT 

SELECT 
    Has_Perms_By_Name(N'dbo.Rilevamenti', 'Object', 'ALTER') as ALT_Per, 
    Has_Perms_By_Name(N'dbo.Rilevamenti', 'Object', 'VIEW DEFINITION') as View_def_Per, 
    Has_Perms_By_Name(N'dbo.Rilevamenti', 'Object', 'CONTROL') as Contr_Per 

現在我想運行其他腳本數據庫運行在SQL Server 2005實例上,但是當我運行它時出現錯誤:

Incorrect syntax near the keyword 'SET'

語法錯誤在哪裏?

+1

我相信SQL Server 2005上不存在「SET NUMERIC_ROUNDABORT OFF」和「SET CONCAT_NULL_YIELDS_NULL ON」 – AXMIM

+0

其中一些命令不存在,它是不同的版本 – Hogan

回答

3

這是在SSMS (SQL Server Management Studio)的較新版本中生成腳本時發生的情況,然後您將該腳本作爲目標。

Comment by @axmim
I believe that SET NUMERIC_ROUNDABORT OFF and SET CONCAT_NULL_YIELDS_NULL ON doesn't exists on SQL Server 2005

SET NUMERIC_ROUNDABORT不引入到SQL Server的絕對正確的2008


更新:被錯SET SET NUMERIC_ROUNDABORT是SQL Server 2005提供(即使first link說,適用於SQL Server(從2008開始))它看起來像SET (LOCK_ESCALATION = TABLE)是因爲沒有引入until SQL Server 2008


如果你要使用產生SSMS中的內置Generate Scripts任務永遠記住對Advanced Scripting Options對話框中設置的Script for Server Version到SQL Server的正確版本你想用腳本到目標腳本。

Advanced Scripting Options

這種方式產生的將是適用於SQL Server的版本腳本作爲目標。

+0

哦有趣。但是,儘管我遵循了您的提示(在SQL Server 2005上設置了「服務器版本的腳本」選項),但問題仍然存在。當然,我從頭開始編寫腳本。事實上SET NUMERIC_ROUNDABORT指令再次出現在腳本中。是的,@AXMIM,你說得對,這個SET在SQL Server 2005中不存在。 – jacktric

+0

@jacktric這很奇怪,它通常適用於我,是否增加了'SET NUMERIC_ROUNDABORT'? – Lankymart

+0

也許這很重要:在數據庫選項中,我將其視爲數據庫兼容級別SQL Server 2008(100)。而且我無法在SQL Server 2005(90)上設置此值。 – jacktric