带有“ Openrowset”的SQL脚本上的错误
-
09-10-2019 - |
题
我的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
当我尝试执行此问题时,它会生成此错误:
MSG 7357,16级,状态2,第1行无法处理对象“选择Mobilenumber,LastName,FirstName [sampledata $]”。 OLE DB提供商“ Microsoft.jet.oledb.4.0”用于链接服务器“(null)”表示该对象没有列,或者当前用户对该对象没有权限。
有什么解决方案吗?在过去的3个小时中,我真的找不到任何东西。基本上,我只想从Excel文件中操纵数据,然后将其保存到SQL Server 2005数据库,但是目前,我想将数据从Excel文件中检索到SQL Server ..感谢您的帮助。
解决方案
我把这个与当地的电子表格一起使用。忘记 OPENROWSET
在您的Excel广播图中创建一个命名范围。 TIO执行此操作,突出显示所需的列(包括标题),右键单击并选择“名称范围”。给这个名字,这将是您的表名。
保存并关闭电子表格。如果您打开它,SQL Server将无法访问它。
添加链接服务器。遵循说明 e节 在下面,它告诉您如何添加Excel电子表格的链接服务器:
您应该能够非常高兴地按照说明来查询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的命脉。
不隶属于 StackOverflow