2

我的 SQL 脚本有问题:

SELECT  
  SP.[MobileNumber],  
  SP.[LastName],  
  SP.[FirstName]  
FROM SampleTable1 SP  
INNER JOIN OPENROWSET  
(  
  'Microsoft.Jet.OLEDB.4.0',  
  'Excel 8.0;Database=C:\devpc11\sample.xls;',  
  'SELECT   
     MobileNumber,   
     LastName,  
     FirstName  
   FROM [SampleData$]') T  
ON SP.[MobileNumber] = T.[MobileNumber]  
GO

当我尝试执行此操作时,它会生成此错误:

消息 7357,级别 16,状态 2,第 1 行无法处理对象“SELECT MobileNumber, LastName, FirstName FROM [SampleData$]”。链接服务器“(null)”的 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”表示该对象没有列,或者当前用户对该对象没有权限。

有什么解决办法吗?在过去的 3 个小时里我真的找不到任何东西。基本上,我只想操作 excel 文件中的数据,然后将其保存到 sql server 2005 数据库,但现在,我想从 excel 文件中检索数据到sql server ..感谢您的帮助..

4

1 回答 1

1

我让它在本地使用电子表格。忘记OPENROWSET

  1. 在您的 Excel 电子表格中创建一个命名范围。Tio 这样做,突出显示您想要的列(包括标题),右键单击并选择“命名范围”。给它一个名字,这将是你的表名。

    http://www.homeandlearn.co.uk/me/mes9p2.html

  2. 保存并关闭您的电子表格。如果您打开它,SQL Server 将无法访问它。

  3. 添加链接服务器。请按照以下E 部分中的说明操作,该部分告诉您如何为 Excel 电子表格添加链接服务器:

    http://msdn.microsoft.com/en-us/library/ms190479.aspx

  4. 您应该能够非常愉快地查询 DS,再次按照说明进行操作。

这是对我有用的代码:

EXEC sp_addlinkedserver 'ExcelSource4',
   'Jet 4.0',
   'Microsoft.Jet.OLEDB.4.0',
   'c:\sqlss.xls',
   NULL,
   'Excel 5.0';
GO

SELECT *
   FROM ExcelSource4...MyTable2;

最后。开始接受一些答案并投票给任何有用的答案。这是 StackOverflow 的命脉。

于 2010-12-14T11:05:22.980 回答