0

私はSSISを初めて使用しますが、SSISを使用した非常に単純なユースケースであると思われることをしようとしていますが、解決策が見つからないようです。

簡単に言うと、2 つの SSIS 環境 (DEV1 と DEV2 など) を同じ PC 上で独立して実行しようとしています。進行中の開発作業と緊急のバグ修正を同じ時間枠内で行わなければならない場合があります。

このため、システム環境変数を使用してデータベース接続文字列のようなものを保持しても機能しません。これは、DEV1 と DEV2 がそれぞれ独自の接続文字列を持つ独自のデータベースを指しているためです (環境変数を手動で設定し続ける必要はありません)。これはエラーが発生しやすいためです)。

また、もう 1 つの要件は、DEV1 環境と DEV2 環境の間でパッケージを自由にコピーする必要があり、パッケージ変数などをリセットするためにパッケージを編集する必要がないことです (たとえば、変数のいくつかは、それぞれの環境のデータ ファイル/フォルダーを指すパスを保持します)。 )。

開発環境には SQL Server/BIDS 2008 R2 を使用しています...

私が試してうまくいかなかったもの:

(1) XML 構成ファイル - XML ファイルへのパスがハードコーディングされているため、XML 構成ファイルを使用するパッケージを DEV1 から DEV2 にコピーすると、DEV1 XML ファイルが DEV2 環境で使用されます。よくありません!

(2) SQL Server 構成 - SQL Server 構成テーブルへの接続文字列もパッケージにハードコーディングされているため、DB 構成を使用するパッケージを他の環境にコピーすると、間違った構成が使用されます。良くない!

(3) /CONFIG フラグと /COMMAND フラグを指定したバッチ ファイルを使用してパッケージ変数に値を割り当てようとしましたが、2008 R2 では設計時の変数がコマンド ライン パラメータを上書きすることがわかりました。

(4) 使用したい環境値でフラット テキスト ファイルを作成し、基本的な C# コードを使用してファイルを読み込もうとさえしましたが、絶対パスを指定しないとうまくいきません。パッケージの変数値を編集することなく、環境間でパッケージをコピーできるようにする目的。絶対パスを除外すると、「System.IO.FileNotFoundException: ファイル 'C:\Documents and Settings\\DBConfiguration.txt' が見つかりませんでした」という例外が発生します。

私はここ数時間これに取り組んでいるので、四角い目を開発し、本当に明らかなことが欠けている可能性が非常に高いです.

確かに、それぞれが独自のデータベースを指している複数の SSIS 環境を取得して、同じ PC で同時に実行することに成功した人がいるに違いありません。

前もってありがとう、DJ

4

2 に答える 2

1

同じインスタンスで開発とテストをホストする環境で作業したとき、これをどのように解決したかを次に示します。

SQL Server 構成を使用しました。すべてのパッケージには、SYSDBConnection という名前のユーザー変数があります。その変数の値は、構成データベースへの接続文字列でした。私たちのパッケージには常に、構成とログに使用される OLE DB 接続マネージャー (SYSDB) が含まれていました。ConnectionStringSYSDBのプロパティは、次のように評価される式でした@[User::SYSDBConnection]。これにより、すべての構成データのリポジトリがその 1 つの変数によって制御されました。

すべてのパッケージの設計時の値は、開発インスタンスを指していました。通常、DEV のパッケージは BIDS のコンテキストから実行されますが、SQL エージェント内から実行の成功が記録されるまで、TEST に移行できませんでした。TEST 以降、パッケージは常に SQL エージェントから実行され、変数のランタイム値が提供されましたSYSDBConnection

すべての SQL Server インスタンスに同じサービス アカウントを使用しないという優れたセキュリティ プラクティスがあったため、TEST はボックスの TEST 領域内の他のサーバーとのみ通信できました。これは、構成を使用できなかったパッケージや、移行が必要な新しい構成を持つパッケージを特定するのに役立ちました。途中で問題が発生し、多くの不平がありましたが、変更が本番環境にプッシュされ、誰かが構成を見逃して、突然開発データが本番環境にあるという問題は発生しませんでした. その恐ろしい話を必要以上に聞いた。

あなたの特定の状況では、コードの故障修正ブランチの SQL エージェントのみの実行を探しているわけではありません。何かが壊れており、何が問題なのかを確認して解決する必要があります。このアプローチは引き続き機能します。SSIS プロジェクトのプロパティ ウィンドウの [デバッグ] タブに、利用可能な CmdLineArguments プロパティがあります。テスト環境に対応する値をそこに割り当てます。これに近いもので十分です。

/set \Package.Variables[User::SYSDBConnection].Properties[Value];\"localhost\test"

ここに画像の説明を入力

うまくいったと思いました。

HLGEM が採用したアプローチは、環境変数を使用することでした。同じ変数名ですが、特定のユーザー (qa、stage など) に関連付けられています。これは私が対処したいというよりはユーザー管理ですが、これは賢明なアプローチであり、適切な状況が与えられれば実行したいと思いました。

于 2013-02-02T22:30:05.227 に答える
-2

あなたの状況は次のとおりだと思います。実稼働中と開発中の両方のパッケージがあります。dev バージョンの強化に忙しい一方で、prod バージョンをデバッグして修正する必要があります。バグを再現するには、パッケージが prod データベースを指すようにする必要があります。

これが正しければ、これはバージョン管理 (TFS (または他のバージョン管理ツール) または手動) によって処理できるブランチ アンド マージの種類の問題です。

ハードコーディングを保持し、式を使用して接続文字列を作成するように変更しなかった理由がわかりません。

于 2013-02-02T13:49:05.560 に答える