2

我在针对 SQL Server 2012 数据库运行的 Visual Studio 2012 中使用 SSIS。使用 OLE DB Source 时出现如下所示的错误。此 OLE DB 源正在执行类似于下面进一步显示的 SQL。当我最后删除 GO 语句时,SSIS 包执行正常。

在 SQL Server Management Studio 中,无论 GO 语句是否存在,SQL 都可以正常执行。

OLE DB 源正在数据流任务中执行。

为什么这个 GO 在 SSIS 包中执行时会导致这个错误,应该怎么做?非常感谢。

错误:

[来自 SQL 变量 [33] 的 OLE DB 源] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E14。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0”Hresult:0x80040E14 描述:“无法准备语句。”。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0”Hresult:0x80040E14 描述:“'GO' 附近的语法不正确。”。

SQL:

/* Test statement */
SELECT 'test' as N'test'
GO
4

4 回答 4

11

GO是批处理终止符,如错误消息所示,在 OLE DB 源中使用它是不正确的。

于 2013-03-28T20:43:18.880 回答
2

你的 SQL 是:

SELECT 'test' as N'test'
GO

GO是一个命令行的东西 - 使用 OLE 将 SQL 传递到服务器时将其删除。
试试这个:

SELECT 'test' as N'test'
于 2013-03-28T20:44:09.057 回答
0

您应该从脚本中删除所有“GO”,它将解决问题。

查看此以获取更多信息:

https://agilewebhosting.com/knowledgebase/63/SQL-Error-Incorrect-syntax-near-andsharp039GOandsharp039.html

矩阵

于 2014-08-27T20:57:04.233 回答
-2

建议的最佳实践:使用分号作为 t-SQL 语句终止符。虽然在此版本的 SQL Server 中大多数语句不需要分号,但在未来的版本中将需要它。

http://msdn.microsoft.com/en-us/library/ms177563.aspx
于 2013-03-28T22:31:52.163 回答