2016-03-21 178 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