1

簡単なステートメントを実行したい:

SELECT * FROM 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;Database=C:\Temp\;','SELECT * FROM [test.csv]')

そして、今日の朝、突然、次のメッセージが表示されます。

Msg 7308, Level 16, State 1, Line 1
OLE DB provider 'MICROSOFT.JET.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.

今日の朝まで働いていました!

サーバーの仕様は次のとおりです。 Windows 2008 R2 64 ビット SQL Server 2008 64 ビット

AccessDatabaseEngine_x64.exe をインストールしました。

SQL Server は LocalService アカウントで実行されています。Everyone に "C:\Temp" と "C:\Windows\ServiceProfiles\LocalService\AppData\Local" への FullControl アクセス許可を設定しました。

見逃したものはありますか?私は本当に混乱しています...

編集済み:これらのステートメントも実行しました:

sp_configure ‘show advanced options’, 1;
 GO
 RECONFIGURE;
 GO
 sp_configure ‘Ad Hoc Distributed Queries’, 1;
 GO
 RECONFIGURE;
 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

ACE.OLEDB.12.0管理者アカウントでもテストしました:

SELECT * FROM  
OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','Text;Database=C:\Temp\;','SELECT * FROM [test.csv]')

別のエラーがあります:

OLE DB provider "MICROSOFT.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "MICROSOFT.ACE.OLEDB.12.0" for linked server "(null)".

最後に見つけました: ProcMon を実行したところ、Sql Server が F:\Windows Temp\ にアクセスしようとしていて、フォルダーが存在しないことがわかりました! フォルダを作成し、問題は解決しました。しかし、私はそのようなフォルダを持っていませんでした!!!

4

1 に答える 1

3

最後に見つけました: ProcMon を実行したところ、SQL Server がアクセスしようF:\Windows Temp\としているのにフォルダーが存在しないことがわかりました! フォルダを作成し、問題は解決しました。しかし、私はそのようなフォルダを持っていませんでした!!!

于 2012-03-31T16:03:46.003 に答える