使用SQL Server 2005导入Excel 2007文件

使用SQL Server 2005导入Excel 2007文件,sql,excel,sql-server-2005,import,openrowset,Sql,Excel,Sql Server 2005,Import,Openrowset,我有一个Excel2007文件,大约有301808行和2列。我试图使用SSIS导入,但无法使用2007 excel。然后,我决定尝试在SQL server中创建一个链接服务器,如下所示: 在SQL Server Management Studio中,在对象资源管理器中展开服务器对象 右键单击链接服务器,然后单击新建链接服务器 在左侧窗格中,选择常规页面,然后按照以下步骤操作: 在第一个文本框中,键入链接服务器的任意名称 选择“其他数据源”选项 在提供程序列表中,单击Microsoft Jet

我有一个Excel2007文件,大约有301808行和2列。我试图使用SSIS导入,但无法使用2007 excel。然后,我决定尝试在SQL server中创建一个链接服务器,如下所示:

  • 在SQL Server Management Studio中,在对象资源管理器中展开服务器对象
  • 右键单击链接服务器,然后单击新建链接服务器
  • 在左侧窗格中,选择常规页面,然后按照以下步骤操作:
  • 在第一个文本框中,键入链接服务器的任意名称
  • 选择“其他数据源”选项
  • 在提供程序列表中,单击Microsoft Jet 4.0 OLE DB提供程序
  • 在“产品名称”框中,键入Excel作为OLE DB数据源的名称
  • 在“数据源”框中,键入Excel文件的完整路径和文件名
  • 在“提供程序字符串”框中,键入Excel 2002、Excel 2000或Excel 97工作簿的Excel 8.0
  • 单击“确定”创建新的链接服务器
从这里开始:

但是,说明仅涵盖以前的excel文件,而不是2007,因此我查找了2007年的连接字符串,并在链接服务器的设置中使用excel 12.0而不是excel 8.0:

  • 提供程序:Microsoft Office 12.0 Access数据库引擎OLE DB
  • 提供商产品名称:Excel数据源:C:\Documents and
  • 设置\UserName\Desktop\Main\FilesIns\MyExcelFile.xlsx提供程序
  • 字符串:Excel 12.0
  • 地点:
  • 目录:
然后我得到了这个错误:

链接服务器“EXCEL\u MY\u文件”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”不包含表“Report 1$”。该表不存在,或者当前用户对该表没有权限

我进入了安全性并添加了nt authority\system,以防出现权限问题,但它仍然给我上述错误

excel表格称为“报告1”

我还尝试在sql中使用openrowset来查看发生了什么,结果是:

SQL Server阻止访问组件“即席分布式查询”的语句“OpenRowset/OpenDatasource”,因为此组件作为此服务器安全配置的一部分已关闭

然后我尝试了下面链接中的代码,看看它是否有助于我使用openrowset:

得到:

链接服务器的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”(null)返回消息“FROM子句中的语法错误”。 信息7321,16级,状态2,第1行 准备查询“从C:\Documents and Settings\UserName\Desktop\Main\FilesIns\MyExcelFile.xlsx中选择*”以针对链接服务器(null)的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”执行时出错

因此,我不确定openrowset语句中的值是否正确

实际上,我只是想找到一种方法,不使用SSIS就将此文件导入sql表-我无论如何都不能使用它

谢谢


Andrew

在您的sp_重新配置下,请查看此处引用的文章。。但是,我认为你可能需要去微软

这里有很多关于如何使用OPENROWSET的例子-

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO