DECLARE @PATH NVARCHAR(1000) = N'\\MY-SERVER\C$\Folder\\'
DECLARE @TABLE NVARCHAR(50) = SUBSTRING(@FILENAME,0,CHARINDEX('.',@FILENAME))
DECLARE @SQL NVARCHAR(4000) =
N'IF OBJECT_ID(''dbo.' + @TABLE + ''' , ''U'') IS NOT NULL
DROP TABLE dbo.[' + @TABLE + ']
SELECT * INTO [' + @TABLE + ']
FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0''
,''Text; Database='+@PATH+';''
,''SELECT * FROM [' + @FILENAME + ']'')'
EXEC(@SQL)
今天我遇到了一个关于Microsoft.ACE.OLEDB.12.0 驱动程序在 SSIS 2012 中的问题。上面的脚本位于存储过程中,该存储过程根据由存储过程所在的 SSIS 循环提供的当前文件动态地将 .csv 文件加载到数据库中。目录中有一些文件。
当在 SQL Server Management Studio 直接运行存储过程时,存储过程可以正常运行。
这一直运行得很好,但今天出现了以下错误:
执行查询“EXEC [dbo].[CreateAndImportCSVs]?”失败,并显示以下错误:“无法初始化 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象,用于链接服务器“(null)”。” 可能的故障原因:查询出现问题,“ResultSet”属性未正确设置,参数未正确设置,或连接未正确建立。
对此问题的任何帮助都将是非常好的!
编辑
所以查看了一下有什么变化,发现昨天安装了Windows更新!安装了以下两个项目:
微软办公室 Access 运行时和数据连通性 2007(SP3) http://support.microsoft.com/kb/2526310
2007 Microsoft Office 系统更新(KB967642) http://www.microsoft.com/downloads/details.aspx?FamilyId=E93AB1BE-ADE6-4FF8-8637-DBD3EBE3C5C5&displaylang=en