2009-07-14 96 views
0

我有一個BasicMSI項目(Installshield 2009),它在安裝過程中運行SQL腳本。 在安裝過程中,我收到以下錯誤。')'附近的語法不正確

錯誤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

發佈腳本。 – 2009-07-14 10:15:52

回答

0

,如果你寫的陳述,你填充程序,只是在運行時缺少一些值,從而在一份聲明中說:」 ......其中X IN(可能會發生這個錯誤似乎合理)「,這是無效的。

這會產生該錯誤,而且這是一個錯誤,可能很容易出現在一個環境中,但不會出現在另一個環境中。如果沒有真正看到劇本,很難提供更多細節。

+0

我沒有自己寫腳本。它由Installshield的數據庫導入嚮導生成。我也嘗試了由SQL Management Studio Express生成的腳本。 – mrtaikandi 2009-07-14 10:30:19

1

我得到類似的錯誤(一個'')'作爲違規字符,一個';'作爲違規角色)。然後我注意到當InstallShield導入我的腳本時,它已將「>」更改爲「& gt」和「<」到「& lt」和「&」到「& amp」。在InstallShield腳本編輯器中爲導入的腳本執行搜索和替換以替換這三個替換,爲我解決了這個問題。