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 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
私はそこにキーを追加しました。
C#でそのドライバを使用していますか?コードを投稿すると、人々が簡単に手助けすることができます。 –
@JacobHサービスコードの一部を追加しました。私は何を提供する必要があるか分からない。 –
DBAスタックエクスチェンジに関する次の記事を見てください:https://dba.stackexchange.com/questions/61739/help-with-sql-server-error-ad-hoc-access-to-ole-db-プロバイダ - マイクロソフトエース –