1

ストアド プロシージャを実行しようとすると、以下のエラー メッセージが表示されます。

メッセージ 7399、レベル 16、状態 1、プロシージャ accountupdater、行 10 リンク サーバー "(null)" の OLE DB プロバイダー "Microsoft.ACE.OLEDB.12.0" がエラーを報告しました。アクセス拒否。メッセージ 7350、レベル 16、状態 2、プロシージャ accountupdater、行 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 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
4

1 に答える 1

0

Microsoft Access データベース エンジン 2010 を既にインストールしている場合は、次のクエリを実行して、SQL Server Management Studio または SQL サービスを再起動してください。 ここを参照

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 
于 2015-08-21T20:01:00.480 に答える