我有一个针对数据库运行SQL Server脚本的vbscript。该脚本创建了一堆外键。如果您登录到SQL Server Management Studio,从下拉菜单中选择正确的数据库,复制并粘贴查询,然后单击运行,它就可以正常工作。
但是,使用此VBScript,我每次都会收到语法错误:
Function runSQL()
Set objSQLConnection = CreateObject( "ADODB.Connection" )
Set objSQLData = CreateObject( "ADODB.Recordset" )
SQLConnectionString = "driver={SQL Server};server=.;Trusted_Connection=yes;database=MyDB"
objSQLConnection.Open SQLConnectionString
query = objFSO.openTextFile("MyScript.sql", 1, 0, -2).readAll()
objSQLData.Open query, objSQLConnection
objSQLConnection.Close
End Function
确切的错误是Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'GO'
。它没有特别的帮助,因为文件中有{J}个GO
个。
SQL文件没有什么特别之处。它只是创造了一个巨大的外键约束。到底是怎么回事?我很快就结束了。可能相关的是我在阅读文件时遇到了困难(因此openTextFile("MyScript.sql", 1, 0, -2)
)。
答案 0 :(得分:0)
GO
不是T-SQL语句,它就是所谓的批处理分隔符。 SQL Server Management Studio或命令行工具sqlcmd.exe
等工具可以理解它。
它用于分隔要发送到数据库引擎的语句。例如,在SSMS中,您可以使用它在批次之间显示PRINT
的一些反馈,对于多批次的长时间运行脚本非常有用。