sql >> データベース >  >> RDS >> Sqlserver

リンクサーバー用のOLEDBプロバイダーMicrosoft.ACE.OLEDB.12.0(null)がメッセージを返しましたブックマークが無効です。

    この問題に何度も苦労した後、私は次の解決策を見つけました:

    1. 64ビットサーバーおよびボックスでは、最初にすべての32ビットMicrosoft Officeアプリケーションおよびインスタンス(Access 2007インストール、Office 10 32ビットなど)をアンインストールする必要があります。そうしないと、新しい64ビットのMicrosoft Access DatabaseEngine2010再頒布可能コンポーネントをインストールできません。はい、それは頭痛の種ですが、64ビットマシンで実行する必要があるJETエンジンコンポーネントの新しい代替品をインストールするために私が見つけた唯一の方法です。
    2. Microsoftから新しいコンポーネントをダウンロードしてインストールします: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en
      • これにより、リンクサーバー、OPENROWSETExcelファイルなどをセットアップするために必要なアクセスエンジンとその他のエンジンがインストールされます。
    3. SQL Serverを開き、以下を実行します。

      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
      
      • これにより、コンポーネントに関連するクエリにアクセスして実行するために必要なパラメータが設定されます。アドレス「null
    4. ここで、OPENROWSET呼び出しを実行している場合は、古いJETパラメーターを使用して行われた呼び出しを破棄し、次のように新しい呼び出しを使用する必要があります。

      (*Example, importing an EXCEL file directly into SQL):
      DONT DO THIS….
      SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=YES;Database=c:\PATH_TO_YOUR_EXCEL_FILE.xls','select * from [sheet1$]')
      
      USE THIS INSTEAD…
      SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=c:\PATH_TO_YOUR_EXCEL_FILE.xls','select * from [sheet1$]')
      
      *At this point resolved two SQL issues and ran perfectly
      
    5. さて、楽しい部分です…..すべてのOfficeディスクを見つけて、必要なOfficeやアプリケーションをマシンに再インストールします。 64ビットバージョンのOffice10は、ディスクに移動して64ビットフォルダーに移動して実行することでインストールできますが、一部のサードパーティアプリがそのバージョンのOfficeとまだインターフェイスしない場合があるため注意してください。


    1. Oracleで内部結合を使用して更新する方法

    2. C#のDBMS_OUTPUT.GET_LINESから出力バッファーを取得する

    3. 製品データのログを監査しますか?

    4. JavaでのOracleのRETURNINGINTOの使用法(JDBC、プリペアドステートメント)