簡體   English   中英

嘗試在MS SQL Server上運行存儲過程時訪問被拒絕

[英]Access denied when trying to run stored procedure on MS SQL Server

嘗試運行存儲過程時,出現以下錯誤消息。

消息7399,級別16,狀態1,過程accountupdater,行10鏈接服務器“(空)”的OLE DB訪問接口“ Microsoft.ACE.OLEDB.12.0”報告了一個錯誤。 拒絕訪問。 消息7350,級別16,狀態2,過程accountupdater,行10無法從OLE DB提供程序“ Microsoft.ACE.OLEDB.12.0”獲取鏈接服務器“(空)”的列信息。

附加信息:以前它可以運行,但是在安裝MS Office之后,它開始顯示錯誤消息。 我們卸載了MS Office,然后重新安裝了“ Microsoft Access Database Engine 2010”。 仍然收到錯誤消息。

做了一些研究,發現我需要安裝“ Microsoft Access Database Engine 2010”。 我做到了,但仍然收到相同的錯誤消息。

ALTER PROCEDURE [dbo].[accountupdater]
AS
  DECLARE @accountNum numeric, @businessFEIN varchar(100), @stateID varchar(100), @dbaName varchar(100), @addressLine1 varchar(100), @addressLine2 varchar(100), @city varchar(100), @state varchar(100), @zip varchar(100), @businessName varchar(100)
  DECLARE accountCursor CURSOR FAST_FORWARD FOR
    SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Text; HDR=YES; Database=D:\Innoprise\',
    'SELECT * FROM flagstaffAccountUpdate.csv') ors
  OPEN accountCursor

  --perform first fetch
  FETCH NEXT FROM accountCursor INTO @accountNum, @businessFEIN, @stateID, @dbaName, @addressLine1, @addressLine2, @city, @state, @zip, @businessName

  --check if there are more rows to fetch
  WHILE @@FETCH_STATUS = 0
  BEGIN  

  update BUSINESS SET FEIN=coalesce(@businessFEIN, FEIN), name=coalesce(@businessName, name) WHERE ID = (select business_id from VENDOR v where v.vendornumber=@accountNum);
  update DBA set name=coalesce(@dbaName, name) where id = (select primarydba_id from vendor v where v.vendorNumber=@accountNum);
  update VENDOR set stateId=coalesce(@stateID, stateID) where vendorNumber=@accountNum;
  update ADDRESS set addressLine1=coalesce(@addressLine1,addressLine1), ADDressline2=coalesce(@addressLine2,addressline2), 
  city=coalesce(@city,city), state=coalesce(@state,state), zipCode=coalesce(@zip,zipCode)
  where ID = (select v.address_ID from VENDOR v where v.vendorNumber = @accountNum);
  FETCH NEXT FROM accountCursor INTO @accountNum, @businessFEIN, @stateID, @dbaName, @addressLine1, @addressLine2, @city, @state, @zip, @businessName
END
  CLOSE accountCursor
  DEALLOCATE accountCursor

如果您已經安裝了Microsoft Access Database Engine 2010,請執行以下查詢並重新啟動SQL Server Management Studio或SQL Services。 請參考這里

USE [master] 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 
GO 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM