2016-03-21 14 views
1

キーワード「SET」付近に不適切な構文:SQL Server 2005の - (視覚的なテーブル編集後)私は、SQL Server Management Studioの2014年、この自動更新スクリプトで生成された

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_ROUNDABORTfirst linkがそれを言うにもかかわらず、SQL Server 2005の(で利用できる間違っていたのですSQL Serverに適用されます(2008年以降)SET (LOCK_ESCALATION = TABLE)のように見えますが、これが導入されていない原因はuntil SQL Server 2008です。


あなたはいつもあなたがスクリプトをターゲットしたいのSQL Serverの正しいバージョンに Advanced Scripting Optionsダイアログで Script for Server Versionを設定することを忘れないSSMSで内蔵 Generate Scriptsタスクを使用してスクリプトを生成しようとしている場合。生成されたスクリプトは、目標とされているSQL Serverのバージョンに適したものになる方法

Advanced Scripting Options

+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

関連する問題