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

Visual StudioでSSISロードを実行しているときにODBC接続が失敗するのに、パッケージ実行ユーティリティを使用して同じパッケージを実行している場合は失敗するのはなぜですか

    ここでいくつかの仮定をしますが、これは32ビットと64ビットの問題であると仮定します。確認するには、コマンドプロンプト(Windowsキー、R、cmd.exeまたはスタート、実行、cmd.exe)からこれらの2つのコマンドを試してください

    "C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx
    "C:\Program Files\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx
    

    1つ目はパッケージを32ビットモードで実行し、2つ目は64ビットモードで実行します。ドライバーと作成したDSNは、32/64ビットの世界でのみ表示されるため、これは重要です。

    SSDTの修正

    必要なもの(おそらく32ビットバージョン)を特定したら、プロジェクトが適切なランタイムを使用していることを確認する必要があります。プロジェクトを右クリックして[プロパティ]を選択し、[構成プロパティ]の下の[デバッグ]タブに移動します。

    Run64BitRuntime値を反転した後、パッケージはSSDT内から機能すると思います。

    SQLエージェントの修正

    ジョブステップのビット数を変更するには、既存のSQLエージェントジョブを編集する必要があります。これは、[構成]タブの下にあり、次に[詳細設定]タブの下にあります。 32ビットランタイムをオン/オフにします。

    嘘と欺瞞

    注意深い人々は、dtexecが/X86を提供していることに気付くかもしれません。 オプション。信じないでください。正しいビット数を取得する唯一の方法は、正しいdtexec.exeを明示的に呼び出すことです。ドキュメントには多くのことが書かれていますが、誰もドキュメントを読んでいません。

    このオプションは、SQLServerエージェントでのみ使用されます。コマンドプロンプトでdtexecユーティリティを実行した場合、このオプションは無視されます。




    1. Oracleの日付から月の名前を取得する

    2. ProxySQLを使用した接続処理とスロットリング

    3. SQLServerのPRINTステートメントの概要

    4. OracleManagedODP.NETがtnsnames.oraを見つけることができません