2009-07-14 98 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脚本编辑器中为导入的脚本执行搜索和替换以替换这三个替换,为我解决了这个问题。