web-dev-qa-db-ja.com

Firebirdのインストールに関する問題ODBCドライバ-ドライバは最終的には見つかりません

ODBCドライバー(バージョン2.0.4.155)を使用してFirebird DBに接続するSSISジョブで問題が発生しています。

  • SSISパッケージは、Windows 7 32ビットにインストールされているVisual Studio 2008で問題なく実行されます(質問しないでください!)
  • SQL Server 2008 64ビットでSSISに展開すると、パッケージの実行に失敗します。エラー:

    データソース名が見つからず、デフォルトのドライバーが指定されていません。

これはすぐに、ODBCドライバーの不一致がSSISが32ビットドライバーを探している場合の問題である可能性があると思いました。

  • FirebirdをアンインストールODBC 64ビットドライバ
  • FirebirdをインストールODBC 32ビットドライバ
  • SQL Serverのジョブスケジュールを変更して、32 vbitで実行されるようにしました
  • パッケージはその後正常に実行されますが、ひねりがあります。

SQLサーバーにログインしている限り(Firebirdドライバーをインストールするためにログインしている間)、パッケージを再度実行できます。 SQL Server Management Studioの削除接続からでも実行できますが、サーバーからログオフしない限りは可能です。

サーバーからログオフすると、SSIジョブは機能しなくなります(以前と同じエラー)。これにより、これは実際には32/64ビットのミスマッチではないと思いましたが、権限が不十分であるためにサーバーからログオフした後、おそらくレジストリまたは環境変数がコミットされていませんそのサーバー)。

だから私の次のテストのために:

  • 32ビットドライバーをアンインストールしました
  • 64ビットドライバーを再インストールした。
  • SQLサーバーにログインしたまま
  • リモートのSQL Server Management Studioからジョブを何度も実行:毎回動作しました

そのSQLサーバーからログオフするとすぐに、動作が再び発生しました。ドライブはエラーをスローせずにインストールされ、最初は機能するため、最初はトラブルシューティングが困難でした。

しかし、私はこれが許可に関係していることを確信しています。私が見逃しているかもしれないアイデアはありますか?

2
pmdci

ここでの問題は、システムDSNを作成する必要があったことです。これは、SSISジョブがユーザーDSNが存在するアカウントで実行されるようにスケジュールされており、サーバーにログインしている限り機能するため、実際には奇妙ですアカウント。とにかく、ユーザーDSNが機能しなかった理由を理解するのに疲れすぎています。そこで、代わりにシステムDSNを使用することにしました。

(反対に)システムDSNに反対しているわけではありませんが、このユーザーDSNを設定したのは私ではなく、システムDSNを作成するために使用された資格情報のパスワードがわかりません。だから少しクリエイティブにならなければなりませんでした。

レジストリエディターとメモ帳を使用して、ユーザーDSNをシステムDSNに変換する必要がありました。ここに私がそれをした方法があります:

  1. システムDSNに変換するために使用するユーザーDSNエントリを持つユーザーでログインします。
  2. レジストリエディターを開き、HKEY_LOCAL_CURRENT\SOFTWARE\Microsoft\ODBC \に移動します
  3. ODBC.INIを右クリックし、[エクスポート]を選択して、デスクトップ(または他の好きな場所)にファイルとして保存します。
  4. メモ帳などのテキストエディターで.regファイルを開きます。
  5. テキストHKEY_CURRENT_USERをHKEY_LOCAL_MACHINEに置き換えます。変更を保存します
  6. .regファイルをダブルクリックし、それをレジストリにインポートします。

上記のプロセスでは、基本的にすべてのユーザーDSNエントリをシステムDSNエントリとしてコピーします。エントリを1つだけコピーする場合は、。\ ODBC.INIの下にある対応するキーと、。\ ODBC.INI\ODBCデータソース内の対応するエントリを削除する必要があります。

2
pmdci