web-dev-qa-db-ja.com

リンクサーバー「(null)」のOLE DBプロバイダー「Microsoft.ACE.OLEDB.12.0」

次の文を実行しようとしていますが、すぐ下にエラーメッセージが表示されます。私は終わりのない答えを研究しましたが、私のために働いた人はいません。 Office 365(64ビット)を実行しています。 Microsoft Accessデータベースエンジン(64ビット)をロードしました。これは、SQL Server 2012と同様にSSDTを使用したVisual Studio 2013にあります。SQLServerの環境または起動パラメーターの変更にアクセスできません。どんな助けも大歓迎です。

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.15.0', 
    'Excel 12.0;Database=C:\Users\UserName\Folder\SomeFile.xlsx;;HDR=NO;IMEX=1', [Table 1$])
  • メッセージ7399、レベル16、状態1、行1リンクサーバー "(null)"のOLE DBプロバイダー "Microsoft.ACE.OLEDB.15.0"はエラーを報告しました。プロバイダーはエラーに関する情報を提供しませんでした。
  • メッセージ7303、レベル16、状態1、行1リンクサーバー "(null)"のOLE DBプロバイダー "Microsoft.ACE.OLEDB.15.0"のデータソースオブジェクトを初期化できません。

私が試したことは次のとおりです。

まず、私は走った...

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

続いて...愛なしで。

EXEC sys.sp_addsrvrolemember @loginame = N'<<Domain\User>>', @rolename = N'sysadmin';
GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'AllowInProcess', 1 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'DynamicParameters', 1 
GO 

Microsoft.ACE.OLEDB.12.を読み取るようにコードを変更しました。これも見たとおり、まだ愛はありません。

また、システム:MSSQLSERVER、および管理者、ネットワークサービス(オン後者)。

まだ愛はありません。

最後に、32ビットバージョンのMicrosoft Accessデータベースエンジンへの変更を試みましたが、これは機能しませんでした。

誰か助けて?

29
Steven Kanberg

http://www.aspsnippets.com/Articles/The-OLE-DB-provider-Microsoft.Ace.OLEDB.12.0-for-linked-server-null.aspx

これにより問題が解決します。何らかの理由で、SQL ServerはデフォルトのMSSQLSERVERアカウントを好みません。ローカルユーザーアカウントに切り替えると、問題が解決します。

17
Rahul Goel

ユーザーを変更する代わりに、このアドバイスを見つけました:

https://social.technet.Microsoft.com/Forums/lync/en-US/bb2dc720-f8f9-4b93-b5d1-cfb4f8a8b1cb/the-ole-db-provider-microsoftaceoledb120-for-linked-server- null-reported-an-error-access?forum = sqldataaccess

これは、他の誰かを助けるかもしれません-SQL 64でこのエラーを試みて修正するためのあらゆる解決策を試した後。

リンクサーバー "(null)"のOLE DBプロバイダー "Microsoft.ACE.OLEDB.12.0"のデータソースオブジェクトを初期化できません。

..ここで記事を見つけました...

http://sqlserverpedia.com/blog/sql-server-bloggers/too-many-bits/

..これは、このフォルダに対するすべての権限を全員に与えることを提案しました.

C:\ Users\SQLサービスアカウント名\ AppData\Local\Temp

そしてちょっとプレスト!私の質問が突然始まりました。私は大喜びで空気を打ちました。

エドワルド

19

これは、参照用です。プロバイダーと接続しようとしたときにさまざまなSQLエラーメッセージが表示されたためです。他の答えは、「これを試して、これ、そしてこれを試して」と規定しています。私は他の答えに感謝しますが、私は特定の問題を伴う特定の解決策


エラー

...プロバイダは情報を提供しませんでした...データソースオブジェクトを初期化できません...

エラー番号

7399、7303

エラーの詳細

Msg 7399, Level 16, State 1, Line 2 The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. 
  The provider did not give any information about the error. 
Msg 7303, Level 16, State 1, Line 2 Cannot initialize the data source object
  of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

ソリューション

ファイルが開いていました。閉じて.

クレジット


エラー

アクセスが拒否されました...列情報を取得できません...

エラー番号

7399、7350

エラーの詳細

Msg 7399, Level 16, State 1, Line 2 The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. 
  Access denied.
Msg 7350, Level 16, State 2, Line 2 Cannot get the column information 
  from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

ソリューション

アクセスを許可

クレジット


エラー

1つ以上の必須パラメーターに値が指定されていません。..クエリを実行できません...

エラー番号

???、7320

エラーの詳細

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "No value given for one or more required parameters.".
Msg 7320, Level 16, State 2, Line 2
Cannot execute the query "select [Col A], [Col A] FROM $Sheet" against OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 

ソリューション

列名が間違っている可能性があります。 [Col A][Col B]は実際にスプレッドシートに存在しますか?


エラー

"未指定エラー" ...データソースオブジェクトを初期化できません...

エラー番号

???、7303

エラーの詳細

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

ソリューション

管理者としてSSMSを実行します。 この質問。 をご覧ください。


その他の参考文献

プロパティの変更を提案するその他の回答。これらの2つのプロパティの変更(チェックまたはチェック解除)がどのように役立つかわかりません。

16
The Red Pea

Excelファイルが開いていないことを確認してください。

14
Drew

具体的には、次のとおりですクエリ対象のExcelファイルが開いていなかった場合のみおよび私としてSQL Serverサービスを実行している場合 [ファイルにアクセスできるユーザーとしてシステム]。私の答えの一部はすでに他の場所で与えられているので、冗長性をおpoびしますが、より簡潔な答えのために:

USE [master]
GO

EXEC sp_configure 'Show Advanced Options', 1
RECONFIGURE
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE
GO

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO


SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                'Excel 12.0;Database=C:\MyExcelFile.xlsx',
                'SELECT * FROM [MyExcelSheetName$]')
2
MapLion

SQL Serverで、次の手順を試してください。

  1. 1つのデータベースを開きます。
  2. オプションServer Objectをクリックします。
  3. Linked Serversをクリックします。
  4. Providersをクリックします。
  5. Microsoft.ACE.OLEDB.12.0を右クリックし、Propertiesをクリックします。
  6. すべてのオプションをオフにして閉じます。
2
Diego Castro

私はWindows 10でSQL Server 2014 64 bitを実行しています

EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0

AllowInProcessがオフになった理由がわからないのですが、それが私の場合のキーでした。リンクサーバーですべてのオプションをオフにすることを提案していただきありがとうございます。

1
Mark Alberts
  1. SQL Server Management Studioを閉じます。 runコマンドにServices.mscと入力して、サービスウィンドウを開きます。

  2. SQL Serverサービスを検索して右クリックし、プロパティを選択します。

  3. [ログオン]タブで、システムアカウントを選択するか、ドメインIDとアカウントとパスワードを選択します。

  4. ログイン名が見つかったら、[OK]を押します。

  5. 次に、両方のフィールドにログインのパスワードを入力します。

  6. 次の図に示すように、新しい変更が適用されるようにサービスを再起動します。

  7. 次に、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 
0
Subhash Chander

この場合、SQL Serverサービスのパラメーターを追加するのに役立ちました。

  1. Services.mscに移動し、SQL Serverサービスを選択して[プロパティ]を開きます。
  2. Startup Parametersを選択し、新しいパラメーター–g512を追加します
  3. SQLサーバーサービスを再起動します。
0
Ilya Urikh
Exec sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

Exec sp_configure 'Ad Hoc Distributed Queries', 1;
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

Insert into OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data Source=C:\upload_test.xlsx;Extended Properties=Excel 12.0')...[Sheet1$]
SELECT ColumnNames FROM Your_table -- Sheet Should be already Present along with headers

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 0;
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 0;
GO

Exec sp_configure 'Ad Hoc Distributed Queries', 0;
RECONFIGURE;
GO

Exec sp_configure 'show advanced options', 0
RECONFIGURE;
GO
0
M_ Fa

これは私のエラーコードです:

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "The Microsoft Access database engine could not find the object 'ByStore$'. Make sure the object exists and that you spell its name and the path name correctly. If 'ByStore$' is not a local object, check your network connection or contact the server administrator.".

Msg 7350, Level 16, State 2, Procedure PeopleCounter_daily, Line 26

Cannot get the column information from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

私の問題は、Excelファイルがパスにないことでした。正しいシートでファイルを置くだけでいいでしょう。

0
YHTAN

私にとって、これらの2つのことはさまざまな場面で役立ちました。

1)MS Accessランタイムをインストールしたばかりの場合は、サーバーを再起動します。データベースインスタンスをバウンスするだけでは不十分です。

2)Excelファイルが開いていないことを確認するだけでなく、プレビューウィンドウをオンにしてWindowsエクスプローラーを開いていないことを確認します。

0
pierreluigi88

私の場合、computerNameを使用して共有フォルダーからファイルにアクセスしていたため、この問題が発生していました。 OPENROWSET( '' Microsoft.Jet.OLEDB.4.0 ''、 '' Excel 8.0; Database = '\ ntpc0100\MysharedFolder\KPI_tempData\VariablePayoutDetails.xls'; IMEX = 1; ''、 '.....)Insted of computerName ntpc0100(お使いのマシン名)を使用マシンのIPアドレスを指定する必要があります。例:-OPENROWSET( '' Microsoft.Jet.OLEDB.4.0 ''、 '' Excel 8.0; Database = '\ 193.34.23.200\MysharedFolder\KPI_tempData\KPIVariablePayoutDetails.xls' ....);

0
Vinit Bhardwaj

まったく同じエラーメッセージが表示され、このスレッドで提案された解決策を試しましたが、成功しませんでした。

問題を解決したのは、.xlsxファイルを開いて.xls(Excel 2003)ファイルとして保存することです。

ファイルが破損しているか、別の形式である可能性があり、再度保存すると修正されました。

0
Abu Assar

SQL 2014では、LocalSystemとして実行するようにSQL Serverサービス(MSSQL)を変更しました。これで問題は解決しました。

私が覚えていることから、それは2008年にNT_SERVICE\MSSQL$MSSQLとして正常に動作していました。

0
jocox500

私にとっては、ファイルのフォルダに対する許可でした。ユーザー「Everyone」のすべての権限を追加する必要がありました。 Folder/properties/security->すべてのユーザーにユーザーを追加し、すべての権限を設定します。

0
Renan