<strong>前言:</strong>
<strong> 由于下面是根据别人的提问解决过程的一个回顾总结,若碰到类似问题,按照下面步骤不能解决,并找到了解决办法的朋友,欢迎补充!</strong>
/*
操作系统:win7 32位处理器
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
Oct 14 2005 00:33:37
Copyright (c) 1988-2005 Microsoft Corporation
Developer Edition on Windows NT 6.1 (Build 7601: Service Pack 1)
excel 为2010
*/
--1.<strong>设置sqlserver configuration manager->功能的外围应用配置器开启 openrowset和opendatasource功能</strong>
--2.<strong>设置参数值为非空(分别为允许进程和动态参数)</strong>
USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO
或者
<strong>management studio->服务器对象->链接服务器->访问接口</strong>
select * from OPENDATASOURCE( --openrowset()同样也可以用来访问本机中excel中的数据
'Microsoft.Ace.OleDb.12.0', --EXCEL版本为2010及以上版本可用,如果是2007及以下版本可用microsoft.jet.oled.4.0
'Extended Properties="Excel 12.0;HDR=YES;IMEX=1";Data Source="E:\test.xlsx"'
)...[test$]
或者
select * from opendatasource('Microsoft.ace.oledb.12.0', 'Excel 8.0;Database=e:\test.xlsx')...[test$]
--<strong>使用opendatasource更新数据库中的表</strong>
update t1 set name=a.sname
from (select * from OPENDATASOURCE(
'Microsoft.Ace.OleDb.12.0',
'Extended Properties="Excel 12.0;HDR=YES;IMEX=1";Data Source="E:\test.xlsx"'
)...[test$] ) a where t1.id=a.id