sp_configure ‘Show advanced options’,1 显示服务器配置选择
RECONFIGURE WITH OVERRIDE 执行
sp_configure 'Ad Hoc Distributed Queries',1 启用‘Ad Hoc Distributed Queries ’选项 ( 开启外围设置)
RECONFIGURE 执行
然后在执行
INSERT INTO [student].[dbo].[newtable]
([性别]
,[姓名])
SELECT * FROM
OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Extended Properties ="Excel 12.0;HDR=YES;IMEX=1";Data Source= "e:\sql1.xls"')...[Sheet1$]
语句会出现
消息 7399,级别 16,状态 1,第 1 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 报错。提供程序未给出有关错误的任何信息。
消息 7330,级别 16,状态 2,第 1 行
无法从链接服务器 "(null)" 的 OLE DB 访问接口"Microsoft.ACE.OLEDB.12.0"提取行。
应该加上此语句:
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
--允许动态参数
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 打开或者启动此驱动。
之后再执行上条语句即可。
openDatasource:不使用连接服务器的名称,而提供特殊的链接信息.
使用openDatasource的前提是仅当 DisallowAdhocAccess
注册表选项针对指定的提供程序显式设置为 0,
并且启用 Ad Hoc Distributed Queries 高级配置选项时,
OPENDATASOURCE 才可用于访问 OLE DB 数据源中的远程数据。
如果未设置这些选项,则默认行为不允许即席访问。
OLE DB 访问接口‘Microsoft.Jet.OLEDB.4.0’ 配置为在单线程单元模式下运行,所以该访问接口无发使用于分布式查询。
解决办法
1.下载
ACE2010的驱动,64位的。
http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=c06b8369-60dd-4b64-a44b-84b371ede16d
2.将所有Microsoft.Jet.OLEDB.4.0 改成Microsoft.ACE.OLEDB.12.0
导出至excel表中 如果表存在:
insert into OPENROWSET('MICROSOFT.ACE.OLEDB.12.0'
,'Excel 5.0;HDR=YES;DATABASE=e:/test.xlsx',sheet1$) SELECT * FROM dbo.hua
如果表为空会出现一些列值于列名不匹配的问题,这样最好在excel中建立列名,之后导入就OK了。
RECONFIGURE WITH OVERRIDE 执行
sp_configure 'Ad Hoc Distributed Queries',1 启用‘Ad Hoc Distributed Queries ’选项 ( 开启外围设置)
RECONFIGURE 执行
然后在执行
INSERT INTO [student].[dbo].[newtable]
([性别]
,[姓名])
SELECT * FROM
OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Extended Properties ="Excel 12.0;HDR=YES;IMEX=1";Data Source= "e:\sql1.xls"')...[Sheet1$]
语句会出现
消息 7399,级别 16,状态 1,第 1 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 报错。提供程序未给出有关错误的任何信息。
消息 7330,级别 16,状态 2,第 1 行
无法从链接服务器 "(null)" 的 OLE DB 访问接口"Microsoft.ACE.OLEDB.12.0"提取行。
应该加上此语句:
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
--允许动态参数
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 打开或者启动此驱动。
之后再执行上条语句即可。
openDatasource:不使用连接服务器的名称,而提供特殊的链接信息.
使用openDatasource的前提是仅当 DisallowAdhocAccess
注册表选项针对指定的提供程序显式设置为 0,
并且启用 Ad Hoc Distributed Queries 高级配置选项时,
OPENDATASOURCE 才可用于访问 OLE DB 数据源中的远程数据。
如果未设置这些选项,则默认行为不允许即席访问。
OLE DB 访问接口‘Microsoft.Jet.OLEDB.4.0’ 配置为在单线程单元模式下运行,所以该访问接口无发使用于分布式查询。
解决办法
1.下载
ACE2010的驱动,64位的。
http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=c06b8369-60dd-4b64-a44b-84b371ede16d
2.将所有Microsoft.Jet.OLEDB.4.0 改成Microsoft.ACE.OLEDB.12.0
导出至excel表中 如果表存在:
insert into OPENROWSET('MICROSOFT.ACE.OLEDB.12.0'
,'Excel 5.0;HDR=YES;DATABASE=e:/test.xlsx',sheet1$) SELECT * FROM dbo.hua
如果表为空会出现一些列值于列名不匹配的问题,这样最好在excel中建立列名,之后导入就OK了。