2017-05-16 15 views
0

C#で開発されたWindowsサービスからのインポートのためにExcelファイルを処理するストアドプロシージャを実行しようとしています。 SQL Server Management Studioでストアドプロシージャを直接実行できますが、サービスを通じてストアドプロシージャを実行すると、次のエラーが発生します。Windowsサービスアドホックアクセスエラーからのストアドプロシージャの実行

OLE DBプロバイダ 'Microsoft.ACE.OLEDB.12.0'へのアドホックアクセスが拒否されました。リンクされたサーバーを介してこのプロバイダにアクセスする必要があります。

Microsoft.ACE.OLEDB.12.0

Server Object\Linked Servers\Providersにリストされ、さらに、Disallow adhoc accessは、プロバイダオプションに未チェックです。

私は他に何を試すべきか分かりません。何かご意見は? TIA

EDIT:追加いくつかのサービスコード

public ProcessFile(string fileName) 
{ 
     this.fileName = fileName; 
     fileToProcess = Properties.Settings.Default.importFilePath + "\\" + fileName; 

     log.Debug("fileToProcess: " + fileToProcess); 

     OpenExcelFile(); 

     excelSheets = getSheetNames(); 

     excelWorkSheet = (Excel.Worksheet)excelSheets.get_Item(2); 

     log.Debug("sheet Name: " + excelWorkSheet.Name); 

     connectToDb(); 

     CloseExcelFile(); 
} 

private void connectToDb() 
{ 
     int retVal = db.LoadSPVDataSheet(Properties.Settings.Default.importFilePath, this.fileName, excelWorkSheet.Name); 
} 

EDIT 2

私は、Windows Server 2012 R2

SQL server Registry entries SSMS Provider Dialog

を実行しているSQL Server 2012のを使用しています

EDIT 3 AllowInProcessのエントリが見つかりましたが、Disallow Adhocエントリはありませんでした。それは@に位置していた:

HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WOW6462Node\Microsoft\Microsoft SQL Server\MSAS11.<ServerName>\Providers\MSOLAP 

私はエントリを追加して報告します。

EDIT 4

サービスコードが正しく接続して処理されます。 DisallowAdHocAccessレジストリキーが見つからない別の場所が見つかりました。

HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WOW6462Node\Microsoft\Microsoft SQL Server\MSSQL11.<ServerName>\Providers\Microsoft.ACE.OLEDB.12.0 

私はそこにキーを追加しました。

+0

C#でそのドライバを使用していますか?コードを投稿すると、人々が簡単に手助けすることができます。 –

+0

@JacobHサービスコードの一部を追加しました。私は何を提供する必要があるか分からない。 –

+1

DBAスタックエクスチェンジに関する次の記事を見てください:https://dba.stackexchange.com/questions/61739/help-with-sql-server-error-ad-hoc-access-to-ole-db-プロバイダ - マイクロソフトエース –

答えて

1

は、この接続項目をチェックしてください:https://connect.microsoft.com/SQLServer/feedback/details/257494/smss-does-not-handle-the-provider-option-disallowadhocaccess-correctly かのdetailesを読むには、ここで説明:https://www.mssqltips.com/sqlservertip/4582/sql-server-ad-hoc-access-to-ole-db-provider-has-been-denied-error/ 「我々は、無効にすることができ、 『SSMSプロバイダのプロパティからのアドホックアクセスを』禁止、それが代わりに値を変更するレジストリのエントリを削除します我々はまだOLE DBプロバイダへのアドホックアクセスを拒否されましたエラーを取得します。 レジストリに不足している項目を手動で追加し、0を入力してください。

関連する問題