2

SSIS パッケージが入力ファイルをループします。ファイルごとに、フラットファイル解析によってレコードが DB テーブルに追加され、ファイルはアーカイブのために名前が変更/移動されます。すべてのファイルの後、パッケージは sproc を呼び出して、1 年前のレコードをすべて削除します。

パッケージはビジュアル スタジオから実行できます。SSIS パッケージ ストアに入れ、そこから実行すれば問題ありません。

パッケージを実行する SQL エージェント ジョブを作成します。ジョブは約 5 分間何かを実行し、それが成功したことを発表しますが、DB に新しいレコードはなく、入力ファイルの名前も変更されません。

パッケージは、SQL Server 特権に専用のログインを使用します。ジョブは、入力ディレクトリとアーカイブ ディレクトリに対する読み取り/書き込み権限を持つ HOSTNAME-SVC として実行されます。

4

4 に答える 4

3

パッケージのロギングを設定しましたか?各ループ中にDts.Events.FireInformationコマンドを実行するFor-Eachループコンテナにスクリプトタスクを追加できます。これは、見つかったファイル名、ループの数、各ループにかかる時間などを追跡するのに役立ちます。また、最後にロギングステップを追加して、少なくともFor-Eachループを終了していることを確認することもできます。コンテナが正常に実行されました。

パッケージは正常に実行されているが、ファイルをまったくループしていないことがわかった場合は、1つのファイルのみを読み取り、それをステージングテーブルにロードするより単純なパッケージを使用してテストすることをお勧めします。それが機能する場合は、Director内のすべてのファイルをループし、1つのファイルのみを何度もインポートするという次のステップに進みます。それが機能する場合は、ファイル接続を変更して、For-Eachループコンテナーファイル列挙子タスクで見つかったファイルと一致するようにする次の手順に進みます。

パッケージがファイルをループしておらず、テストした1つのファイルをジョブからロードしても表示されない場合は、資格情報を使用してプロキシアカウントを作成し、プロキシアカウントとしてジョブを実行してみてください。それが機能する場合は、サービスアカウントに権限の問題がある可能性があります。

パッケージがプロキシアカウントを使用しても何もインポートしない場合は、サービスアカウントとしてサーバーにログインし、BIDSでSSISパッケージを実行してみてください。それが機能する場合は、サーバーにデプロイしてサーバーからパッケージを実行することをお勧めします(実際にはマシンを使用しますが、少なくともサーバーのssis定義を使用します)。これが機能する場合は、エージェントからパッケージを実行してみてください。

于 2010-09-13T23:09:29.840 に答える
0

権限については何か違うようです。「全員」が本番サーバー上のディレクトリを読み取れるようにすることで、問題を解決しました。なんらかの理由で、テストサーバーでそれを行う必要はありませんでした。

ジョブがファイルリストをフェッチしようとすると、エラー(ログに記録される)を取得する代わりに、空のリストを取得しました。空のリストをループするのに5分かかった理由は、権限の欠如と同様に、依然として謎です。しかし、少なくとも何が起こったのかは特定されています。

于 2012-06-19T18:53:04.830 に答える
0

完全に理解しているかどうかはわかりません。このパッケージは、複数の Windows アカウントですでに徹底的にテストされており、すべてのファイルを検出し、すべてのファイルの名前を変更します。

エージェントの下では、目に見えることはまったくありませんが、実行に 5 分かかります。権限エラーやその他のエラーはありません。サービスアカウントに入力ディレクトリと出力ディレクトリへのアクセス権を付与できなかったため、以前の試行で DID get permissions エラーが発生したことについては言及しませんでした。

パスワードを持っていないため、サービス アカウントとしてログインして試してみることができません。しかし、SA はジョブの所有者であるため、サービス アカウントに切り替えることができるはずです。10 日前に発生したアクセス エラーは、それが可能であることを示しています。この 10 日間、パッケージ自体は変更されていません。デプロイ手順の完全な「ドレス リハーサル」を行うために、ジョブを削除しました。

したがって、変更されたのは、展開手順の詳細であると思いますが、残念ながら、成功した時点ではソース管理されていませんでした。

于 2010-09-14T17:32:55.487 に答える
0

同様の問題がありました。SQL Server エージェント ジョブのログ オプションを設定することで、何が起こっているのかを把握できました。

パッケージを実行するジョブのステップを編集し、ログ タブに移動して [SQL Server の SSIS ログ プロバイダー] を選択し、構成文字列で (ドロップダウンを使用して) パッケージ内の OLEDB コネクタを選択しました。問題の SQL Server にたまたま接続します。

その後、そのジョブの履歴で詳細を表示でき、ファイルが見つからないことを確認しました。ディレクトリのアクセス許可を sql サーバー エージェント アカウントと一致するように変更することで、パッケージは最終的に適切に実行されました。

お役に立てれば。

パッケージが実行される頻度と、ケースでログが提供する情報の量に応じて、問題を解決した後、ログをオフにすることができます。

よろしく、ベルタン

于 2013-12-10T19:08:23.797 に答える