我正在尝试使用OLE DB提供程序" Microsoft.ACE.OLEDB.12.0"将.xlsx
上传到SQL数据库表中。
但它会引发以下错误:
错误
'无法初始化OLE DB提供程序的数据源对象" Microsoft.ACE.OLEDB.12.0"对于链接服务器"(null)"。 OLE DB提供程序" Microsoft.ACE.OLEDB.12.0"对于链接服务器"(null)"返回消息"无法更新。数据库或对象是只读的。"。'
我的sql代码是:
'ALTER PROCEDURE [dbo].[spx_ImportFromExcel07]
@SheetName varchar(20),
@FilePath varchar(100),
@HDR varchar(3),
@TableName varchar(50)
AS
BEGIN
DECLARE @SQL nvarchar(1000)
IF OBJECT_ID (@TableName,'U') IS NOT NULL
SET @SQL = 'INSERT INTO ' + @TableName + ' SELECT [Dealer Number],[Dealer Name],[Policy Number],[Policy Status],[Processing Date (ISO)],
[Policy Start Date (ISO)],[Request Cancel/ Amend Date],[Amend/Cancel Type],[Cancel/Amend Text],[Chassis Number],[Registration Number],
[Manufacturer Desc],[Model Desc],[Transmission Desc],[Fuel Type Desc],[Registration Date (ISO) L],[Product Description],
[User Id],[Customer Full Name],[Sub Total],[Tax],[Customer Charge],null,null,null,null FROM OPENDATASOURCE'
ELSE
SET @SQL = 'SELECT * INTO ' + @TableName + ' FROM OPENDATASOURCE'
SET @SQL = @SQL + '(''Microsoft.ACE.OLEDB.12.0'',''Data Source='
SET @SQL = @SQL + @FilePath + ';Extended Properties=''''Excel 12.0;HDR='
SET @SQL = @SQL + @HDR + ''''''')...['
SET @SQL = @SQL + @SheetName + ']'
EXEC sp_executesql @SQL
END'
尝试此步骤http://www.excel-sql-server.com/
后错误是
' OLE DB提供程序" Microsoft.ACE.OLEDB.12.0"对于链接服务器"(null)"不包含表" Sheet1 $"。该表不存在或当前用户没有该表的权限。'
答案 0 :(得分:0)
检查.xlsx文件的(Windows)文件访问权限。
创建该文件的(Windows)用户很可能与OLEDB驱动程序用于访问该文件的(Windows)用户不同。当您使用git
登录到sql服务器时具有写访问权限时通常会出现这种情况,但在使用npm
时却没有。
转到Windows资源管理器中的文件并执行以下操作
Windows Authentication
标签中,点击SQL Server Authentication
Security
中选择论坛Edit...
Group or user name:
点击Users(<<your-computer-name>>\Users)
Permissions for Users
Allow
保存更改。这将允许任何用户拥有该文件的写入权限,从而启用Write
链接的服务器表。
答案 1 :(得分:0)
这是一个安全问题,您应该授予对excel模板文件夹的完全访问权限,并与目标文件夹完全相同