从VB脚本执行时,有效的SQL查询失败

时间:2013-03-18 17:01:30

标签: sql vbscript oledb

我有SQL查询在SQL管理工作室中成功运行,但是当我从VB脚本运行相同的查询时,它会失败并显示错误:

  

用于SQL Server的Microsoft OLE DB提供程序:关键字“ALTER”附近的语法不正确。

我的SQL查询是:

SET XACT_ABORT ON;
BEGIN TRANSACTION VersionBuild
BEGIN TRANSACTION
GO
CREATE TABLE dbo.TimeTemplate
    (
    id int NOT NULL IDENTITY (1, 1),
    startTime datetime NOT NULL,
    endTime datetime NOT NULL
    )  ON [PRIMARY]
GO
ALTER TABLE dbo.TimeTemplate ADD CONSTRAINT
    PK_TimeTemplate PRIMARY KEY CLUSTERED 
    (
    id
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO
COMMIT

INSERT INTO [dbo].[TimeTemplate] ([startTime],[endTime])
VALUES ('2013-03-15 00:00:00.000','2013-03-15 23:59:00.000')

INSERT INTO [dbo].[Form] ([name] , [description], [dateCreated], [fileName])
VALUES ('TimeTemplates.aspx' , '' , getdate(), 'TimeTemplates.aspx')

;

If @@Error <> 0 BEGIN
ROLLBACK TRANSACTION VersionBuild
END ELSE 
BEGIN
UPDATE Version SET version = 74;
COMMIT TRANSACTION VersionBuild
END

1 个答案:

答案 0 :(得分:1)

来自MSDN:

  

GO不是Transact-SQL语句;这是一个被公认的命令   sqlcmd和osql实用程序以及SQL Server Management Studio代码   编辑器。

同样来自同一篇文章:

  

基于ODBC或OLE DB API的应用程序会收到语法错误   如果他们试图执行GO命令。 SQL Server实用程序永远不会   发送GO命令到服务器。

尝试删除GO语句并将脚本分解为多个命令。