LoadFromSQLServer 方法遇到了 OLE DB
Posted
技术标签:
【中文标题】LoadFromSQLServer 方法遇到了 OLE DB【英文标题】:LoadFromSQLServer method has encountered OLE DB 【发布时间】:2012-09-06 20:15:55 【问题描述】:我有这个错误:
LoadFromSQLServer 方法遇到 OLE DB 错误代码 0x80004005(登录超时已过期)。发出的 SQL 语句失败
这是我的代码,有什么问题?
DECLARE @FileName VARCHAR(50);
DECLARE @VendorID VARCHAR(50);
DECLARE @sql VARCHAR(2000);
DECLARE @Local_File_FullPath VARCHAR(100);
SET @FileName = 'Extgt_skinny_file.txt.pgp'
Set @VendorID = 'ET'
Select @Local_File_FullPath = dw03_path FROM GMAC_META.dbo.VENDOR_XFER_METADATA where vendor_id = @VendorID
SET @sql = 'dtexec /SQL "\EMAP_FTP_XFER_CHECK" /SET \Package.Variables[User::FileName].Properties[Value];"'
+ @FileName+'" /SET \Package.Variables[Local_File_FullPath].Properties[Value];'
+ @Local_File_FullPath+' /SERVER "hqgmdw02/dw_dev" /CHECKPOINTING OFF /REPORTING E'
exec xp_cmdshell @sql
【问题讨论】:
【参考方案1】:尝试以下方法:
GRANT exec ON xp_cmdshell TO '<somelogin>'
。请参考xp_cmdshell (Transact-SQL)。
检查您是否在 64 位机器上使用 32 位 DTExec。
确保将运行 SSIS 包的用户具有足够的权限。我认为您在 SQL Server 代理中的 SSIS 下运行,或者您可以手动运行它。运行 SQL 代理的服务帐户和您的帐户必须具有执行作业的权限。请看Error in executing SSIS package through Agent
【讨论】:
谢谢但我发现这个问题是一个非常愚蠢的错误,但错误错误地指向了权限。问题是实例的斜杠“hqgmdw02\dw_dev”不正确,并且一些引号是错误的。底线是 DTEXEC 可能会给出误导性的错误消息。因此,请关注语法,然后才是实际的错误消息。【参考方案2】:正如 OP 所提到的,服务器路由(对于参数 /SERVER
)应该使用反斜杠而不是普通斜杠。在这种情况下显示的错误有点误导,因为登录超时是因为服务器路径不正确。
所以改变
/SERVER "hqgmdw02/dw_dev"
为
/SERVER "hqgmdw02\dw_dev"
【讨论】:
以上是关于LoadFromSQLServer 方法遇到了 OLE DB的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu18.04 安装g2o_viewer,遇到的所有坑和解决方法