我使用Excel来收集和配置数据,然后将其导入到SQL Server 2012的存储。
到目前为止,我一直在使用SQL Server的进出口向导,但它是一个痛苦手动设置它不断。 由于我使用的是快速的,当然它不会让我保存,甚至查看,实际的命令来传输数据。
我试图建立一个链接的服务器,每如何使用Excel与SQL Server链接服务器和分布式查询 ,但得到以下错误:
链接的服务器已被创建,但未能通过连接测试。 你要保持链接服务器?
执行Transact-SQL语句或批处理时出现异常。 (Microsoft.SqlServer.ConnectionInfo)
无法初始化OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”链接服务器“FLTST”的数据源对象。
OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”链接服务器“FLTST”返回了消息“未指定的错误”。 (微软SQL服务器,错误:7303)
我想也许Excel版本号是问题,因为网页是从2005年,所以我试着用:
- Excel的8.0(Excel 2002中)作为显示在页面上
- Excel的12.0(Excel 2007中),这是精灵,似乎有什么用
- Excel的14.0(Excel 2010中)我确实有
所有这些给了我同样的结果。
接下来,我尝试了分布式查询如图所示,在导入excel文件到SQL Server Express ,(再次与供应商串的不同变化)
USE ExTest
SELECT * INTO TstTbl FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 14.0;Database=c:\ExTest.xlsm', [Contacts])
go
这给了我下面的错误:
OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”链接服务器“(空)”返回了消息“未指定的错误”。
消息7303,级别16,状态1,3号线
无法初始化OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”链接服务器“(空)”的数据源对象。
而不是去到SQL Server和拉动的数据,我应该留在Excel和推过来?
我究竟做错了什么?
PS: 请不要告诉我将其转换为csv文件! 我试图做更少的步骤,而不是更多!
遇到类似问题,你有你的问题我已经做了这方面的一些研究。 我的问题还没有完全解决,但我想我可能让你进了一步。 虽然问题是旧有可能是别人谁需要帮助。
通过运行:
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;Database=P:\Path\File.xlsx','SELECT * FROM [Sheet1$]');
GO
我收到以下错误信息:
消息15281,级别16,状态1,行19 SQL Server阻止访问声明“OPENROWSET / OPENDATASOURCE”的成分“特设分布式查询”,因为该组件被关闭作为此服务器安全配置的一部分。 系统管理员可以通过使用sp_configure启用“特设分布式查询”的。 有关启用“特设分布式查询”的更多信息,搜索SQL Server联机丛书“特设分布式查询”。
要解决我运行以下命令:
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
但我得到一个新的错误mesasge:
消息7302,级别16,状态1,行19无法创建OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”链接服务器“(空)”的一个实例。
为了纠正我运行:
EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO
但我得到代替这个错误:
消息7438,级别16,状态1,第19行的32位OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”不能在进程中加载的64位SQL Server上。
在我来说,我已经要求IT部门在服务器上安装Excel的64位版本,并希望从Excel导入时,应该是技术问题结束。
清理之后,我禁止我刚启用的设置:
EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0
GO
EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 0
GO
sp_configure 'ad hoc distributed queries', 0
RECONFIGURE
GO
sp_configure 'show advanced options', 0
RECONFIGURE
GO