OLE DB提供程序" Microsoft.ACE.OLEDB.12.0" for linked server(null)

时间:2016-03-24 06:38:19

标签: asp.net sql-server xlsx oledbconnection

我正在尝试使用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 $"。该表不存在或当前用户没有该表的权限。'

2 个答案:

答案 0 :(得分:0)

检查.xlsx文件的(Windows)文件访问权限。

创建该文件的(Windows)用户很可能与OLEDB驱动程序用于访问该文件的(Windows)用户不同。当您使用git登录到sql服务器时具有写访问权限时通常会出现这种情况,但在使用npm时却没有。

转到Windows资源管理器中的文件并执行以下操作

  1. 右键单击并选择属性。
  2. Windows Authentication标签中,点击SQL Server Authentication
  3. Security中选择论坛Edit...
  4. Group or user name:点击Users(<<your-computer-name>>\Users) Permissions for Users
  5. 点击Allow保存更改。
  6. 这将允许任何用户拥有该文件的写入权限,从而启用Write链接的服务器表。

答案 1 :(得分:0)

这是一个安全问题,您应该授予对excel模板文件夹的完全访问权限,并与目标文件夹完全相同