リンクサーバー「xxxxxxx」のOLEDBプロバイダー「OraOLEDB.Oracle」のインスタンスを作成できません。



Cannot Create An Instance Ole Db Provideroraoledb



SQL SERVER 2008 R2では、ORACLEデータベースにアクセスするためのログインサーバーxxxxxが、Windows認証のログイン名で作成されていました。テストは成功し、ログに問題がありましたが、他のログイン名がリンクサーバーを使用している場合、次のエラーが報告されます。

メッセージ7302、レベル16、状態1、行1



リンクサーバー「xxxxxx」のOLEDBプロバイダー「OraOLEDB.Oracle」のインスタンスを作成できません。

この場合、「サーバーオブジェクト」->「リンクサーバー」->「アクセスインターフェイス」の下にあるOraOLEDB.Oracleオプションを見つけ、右クリックして「プロパティ」を選択し、「アクセスインターフェイス」を選択する必要があります。オプション(処理中を許可)の下の[処理中を許可]をオンにします。これにより上記の問題が解決し、場合によってはこのリンクサーバーを再作成する必要があります。



クリップボード

外国人はこの問題を解決するための一歩を踏み出しました。非常に詳細で厳密で、ほとんどすべてが含まれています。参照として使用できる良い情報:

リンクサーバーがサーバーのローカル管理者であるユーザーに対しては機能するが、他のユーザーに対しては機能しないというこの問題に遭遇しました。何時間もいじった後、私は次の手順を使用して問題を修正することができました。



1:「dcomcnfg.exe」を実行します。 「コンポーネントサービス->コンピューター->マイコンピューター-> DCOM構成」に移動します。

2:「MSDAINITIALIZE」のプロパティページを開きます。

3:プロパティページの「アプリケーションID」をコピーします。

4:「dcomcnfg」を終了します。

5:「regedit」を実行します。 ???を使用して「HKEY_CLASSES_ROOT AppID {???}」に移動します。手順3でコピーしたアプリケーションIDを表します。

6:「{???}」フォルダを右クリックして「権限」を選択します

7:ローカル管理者グループをアクセス許可に追加し、フルコントロールを付与します。

8:「regedit」を終了します。

9:サーバーを再起動します。

10:「dcomconfig」を実行します。 「コンポーネントサービス->コンピューター->マイコンピューター-> DCOM構成」に移動します。

11:「MSDAINITIALIZE」のプロパティページを開きます。

12:「セキュリティ」タブの「起動とアクティベーションの権限」で「カスタマイズ」を選択し、「編集」ボタンをクリックします。

13:「認証済みユーザー」を追加し、4つすべての起動およびアクティブ化のアクセス許可を付与します。

14:「dcomcnfg」を終了します。

15:Oracleインストールルートディレクトリを検索します。私の場合は「E: Oracle」です。

16:Oracleルートディレクトリのセキュリティプロパティを編集します。 「認証済みユーザー」を追加し、「読み取りと実行」、「フォルダーの内容の一覧表示」、「読み取り」のアクセス許可を付与します。新しい権限を適用します。

17:「高度なアクセス許可」ボタンをクリックし、「アクセス許可の変更」をクリックします。 「すべての子オブジェクトのアクセス許可をこのオブジェクトから継承可能なアクセス許可に置き換える」を選択します。新しい権限を適用します。

18:SQLServerで「OraOLEDB.Oracle」プロバイダーを検索します。 「インプロセスを許可」パラメータがチェックされていることを確認してください。

19:サーバーを再起動します。