2009-07-14 45 views
0

私は、インストールプロセス中にSQLスクリプトを実行するBasicMSIプロジェクト(Installshield 2009)を持っています。 インストール中に次のエラーが表示されます。')'の構文が正しくありません

エラー27506. SQLスクリプト{SCRIPTNAME}を実行中にエラーが発生しました。 352行目。 ')'の近くの構文が正しくありません。 (102)

問題は、スクリプトの352行目に ')'がなく、SQL Management Studio Expressでスクリプトを実行すると問題なく動作することです。

問題は何ですか、どのように解決できますか?おかげさまで

PS。スクリプトエラー処理オプションを「On Error、Goto Next Statement」に設定することはできません。そのため、外部キーの一部が作成されないためです。

IF NOT EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[TRIGGER_NAME]')) 
EXEC dbo.sp_executesql @statement = N' 
CREATE TRIGGER [dbo].[TRIGGER_NAME] 
ON [dbo].[TABLE_NAME]     -- LINE: 352 
INSTEAD OF INSERT 
AS 
BEGIN 
DECLARE @Count INT; 
SET @Count = (SELECT COUNT([Name]) 
       FROM TABLE_NAME 
       WHERE IsDeleted = 0 AND [Name] IN (SELECT [Name] FROM INSERTED)); 

IF @Count > 0 
BEGIN 
    RAISERROR (''Error Message.'', 16, 1); 
    Rollback; 
END 
ELSE 
BEGIN 
    INSERT INTO dbo.TABLE_NAME SELECT {Columns} FROM INSERTED; 
    SELECT CONVERT(BigInt,SCOPE_IDENTITY()) AS [value] 
END 
END 
' 
GO 
+0

スクリプトを投稿します。 –

答えて

0

「声明で、その結果、あなたはいくつかの値が欠落しているだけで、実行時に、あなたはプログラムで移入のINステートメントを、書いている場合に、このエラーが発生する可能性があるという合理的なようだ... WHERE X IN( ) "は無効です。

これはエラーを生成し、ある環境では表示されやすく、別の環境では表示されないエラーです。実際にスクリプトを見ることなく、それ以上の詳細を与えるのは難しいです。

+0

私は自分でスクリプトを書きませんでした。これは、InstallShieldのデータベースインポートウィザードによって生成されます。また、SQL Management Studio Expressによって生成されたスクリプトを試しました。 – mrtaikandi

1

私は似たエラー( ')'を問題のキャラクターに、1つを ';'問題のキャラクターとして)。それから、InstallShieldがスクリプトをインポートしたときに、「>」が「& gt;」に変更されていたことに気付きました。 「<」〜「& lt;」 「&」〜「& amp;」となる。この3つの置換のためにInstallShieldスクリプトエディタでインポートされたスクリプト全体で検索と置換を行うと、私の問題が解決されました。

関連する問題