0

インストール プロセス中に SQL スクリプトを実行する BasicMSI プロジェクト (Installshield 2009) があります。インストール中に、次のエラーが表示されます。

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

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

何が問題なのか、どうすれば修正できるのか、誰か教えてもらえますか? ありがとう。

PS。スクリプト エラー処理オプションを「エラー時、次のステートメントに移動」に設定できません。これは、一部の外部キーが作成されないためです。

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
4

2 に答える 2

1

問題のある文字と同様のエラー(「)」、「;」のエラーが発生していました。問題のあるキャラクターとして)。次に、InstallShield がスクリプトをインポートしたときに、">" が ">" に変更されていることに気付きました。および「<」から「<」および「&」から「&」。これらの 3 つの置換について、InstallShield スクリプト エディターでインポートされたスクリプト全体で検索と置換を実行すると、問題が解決しました。

于 2011-08-04T15:40:02.837 に答える
0

このエラーが発生する可能性があるのは、プログラムで入力する IN ステートメントを作成した場合に、実行時に一部の値が欠落し、「... WHERE x IN()」というステートメントが無効になる場合にのみ発生する可能性があると思われます。

これにより、そのエラーが生成されます。また、ある環境では簡単に表示される可能性がありますが、別の環境では表示されないエラーです。スクリプトを実際に見ない限り、これ以上の詳細を説明することは困難です。

于 2009-07-14T10:23:21.753 に答える