我在针对SQL Server 2012数据库运行的Visual Studio 2012中使用SSIS。使用OLE DB Source时,我收到如下所示的错误。此OLE DB源正在执行类似于下面进一步显示的SQL。当我在结尾删除GO语句时,SSIS包执行正常。
在SQL Server Management Studio中,无论GO语句是否存在,SQL都会执行ok。
OLE DB源正在数据流任务中执行。
为什么这个GO在SSIS包中执行时会导致这个错误,应该怎么做呢?非常感谢。
错误:
[来自SQL变量的OLE DB源[33]]错误: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
答案 0 :(得分:11)
GO
是批处理终结符,并且在OLE DB源中使用它,如错误消息所示,是不正确的。
答案 1 :(得分:2)
你的SQL是:
SELECT 'test' as N'test'
GO
GO
是命令行的事情 - 在使用OLE将SQL传递到服务器时将其删除
试试吧:
SELECT 'test' as N'test'
答案 2 :(得分:0)
您应该从脚本中删除所有“GO”,它将解决问题。
查看此信息以获取更多信息:
矩阵
答案 3 :(得分:-2)
建议的最佳实践:使用分号作为t-SQL语句终止符。虽然此版本的SQL Server中的大多数语句不需要分号,但在将来的版本中将需要使用分号。
http://msdn.microsoft.com/en-us/library/ms177563.aspx