1

我在嘗試運行存儲過程時收到錯誤消息。嘗試在MS SQL Server上運行存儲過程時訪問被拒絕

消息7399,級別16,狀態1,過程accountupdater,10號線的OLE DB 提供 「Microsoft.ACE.OLEDB.12.0」 鏈接服務器 「(空)」 報告錯誤。拒絕訪問。 Msg 7350,Level 16,State 2, Procedure accountupdater,Line 10對於鏈接服務器 「(null)」,無法從OLE DB提供程序「Microsoft.ACE.OLEDB.12.0」獲取列信息 。

其他信息:以前這是工作,但安裝MS Office之後就開始給出錯誤信息。我們卸載了MS Office並重新安裝了「Microsoft Access數據庫引擎2010」。仍然收到錯誤消息。

做了一些研究,發現我需要安裝「Microsoft Access數據庫引擎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 [email protected]); 
    update DBA set name=coalesce(@dbaName, name) where id = (select primarydba_id from vendor v where [email protected]); 
    update VENDOR set stateId=coalesce(@stateID, stateID) where [email protected]; 
    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 
+0

如果你已經安裝了Microsoft Access數據庫引擎2010現在已經,如果是,那麼請執行下列查詢,然後重新啓動SQL Server Management Studio中。 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 – HaveNoDisplayName

+0

我運行上述命令,但仍然收到相同的錯誤。我以管理員身份重新運行SQL Server Managment工作室。再次運行上面提到的命令。試圖執行「SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Text; HDR = YES; Database = D:\ Innoprise \', 'SELECT * FROM flagstaffAccountUpdate.csv')」但是當我仍然得到相同的錯誤,當我試圖執行存儲過程 –

+0

嘗試按照這個帖子http://www.aspsnippets.com/Articles/The-OLE-DB-provider-Microsoft.Ace.OLEDB.12.0 -for-linked-server-null.aspx – HaveNoDisplayName

回答

0

如果您已經安裝了Microsoft Access數據庫引擎2010,請執行以下查詢並重新啓動SQL Server Management Studio或SQL Services。 Refer here

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 
相關問題