web-dev-qa-db-ja.com

SSISエラー:VS_NEEDSNEWMETADATA

現在、Visual Studio 2015(BIDS 2008で作成)を使用してすべてのETLを更新し、SQL Server 2016(当初は2008R2)で実行されている新しいレポートサーバーに再展開しています。

ETLの1つを更新して新しいサーバーで実行しようとすると、次のエラーが発生しました。


パッケージの実行に失敗しました。ステップは失敗しました。

たまにこのエラーも発生します:

ソース:ファクトテーブルの読み込みSSIS.Pipeline説明:「ファクトテーブルへのコピー」は検証に失敗し、検証ステータス「VS_NEEDSNEWMETADATA」を返しました。


OLEDB Destination、接続文字列を削除して追加し直し、列マッピングを開いてメタデータを更新しました。データフロータスク全体も再作成しましたが、同じエラーが発生します。

パッケージはローカルマシンで正常に動作します。

UPDATE:

私はパッケージを分解し、その一部のみを実行して、失敗した部分を絞り込み始めました。ステージングテーブルへの読み込みに失敗したようですが、理由がわかりませんでした。

結局、全部を作り直してみることにしました。パッケージ全体を再作成した後、まだ運がありません。以下の画像は、サーバー自体のイベントビューアからのものですが、新しい情報はありません。

enter image description here

イベントビューアからのパッケージエラー

5
Jonathan Porter

私は最終的に問題を見つけました、そして私がそれをした方法はここにあります。

SSMSから受け取ったエラーメッセージはあまり洞察力に欠けていたため、最初にリモートデスクトップを開いてサーバーにログインしました。次に、[管理ツール]> [イベントビューアー]に移動し、[Windowsログ]> [アプリケーション]に移動して、失敗したイベントが詳細を提供するかどうかを確認しました。

enter image description hereenter image description here それは私にまだ多くを与えませんでした。

次のステップは、パッケージを実行することでした コマンドラインから メッセージをより冗長にする必要があるためです。 cmdを開き、ディレクトリを私のパッケージがあったディレクトリに変更しました...

DTEXEC /FILE YourPackageName.dtsx

最後に、ここでのエラーメッセージは、パッケージが書き込もうとしていたテーブルに列が欠落していることを示していました。それらの列と出来上がりを追加しました!

12
Jonathan Porter

私は上記および他のサイトで提供されるすべてのソリューションを試しました。何もうまくいきませんでした。

私は私の友人から提案を受けました。

手順は次のとおりです。

  1. ソース/ターゲットデータフローコンポーネントを右クリックします。
  2. Advanced Editor-> Component Propertiesに移動します
  3. ValdateExternalMetadataを検索してFalseにします。

あなたの運を試してください。これは悲惨な問題であり、私は2日間無知のままにしました。

enter image description here

12
Pavithran

コメントで述べたように、
開発環境で問題なく実行される場合、問題はパッケージにあるのではなく、サーバーでスケジュールされたジョブにあります。それを再現してみてください。

それがうまくいかない場合、
サーバーには、更新されたインスタンスではなく、使用しているパッケージのキャッシュされたインスタンスがあるようです。パッケージの名前を変更して、新しいパッケージ名で新しいジョブを作成し、それが機能するかどうかを確認してください。

それがうまくいかない場合、私がその時点でお勧めできるのは、パッケージが成功するまで削減してから、失敗する次のステップを追加することです。

あなたのソリューションから、開発環境はデプロイされたソリューションよりもスキーマの更新を許容するように思えます。解決できてよかった、混乱を解消しました。

3
Beth

私は同じ問題を抱えていましたが、私の問題は2つの環境の違いでした。同じテーブルの同じフィールドが大文字で記述されていた場合とそうでない場合がありました。そのため、名前は同じでしたが、この小さな違いがありました(例:isActiveとIsActive)。

これは、フィールド名を更新しなかったVSデータベースパブリッシュを使用したリファクタリングの取り組みによるものです。

0
Zsombor Zsuffa

ソースを削除して再作成してみましたか?これを取得すると、通常、エラーのあるオブジェクトを変更できますが、オブジェクト間のパスを削除して再構築する必要がありますが、データフローのすべてを削除して再作成する必要がある場合があります。

0
Andrew O'Brien

ソースファイルの2つの列がテーブルの同じフィールドに挿入されているときに、このメッセージが表示されることは非常に一般的です。

つまり.

テキストファイルには "neighborhood"(異なる列に同じラベル)が2回あり、テーブルには "neighborhood"と "neighborhoodb"(最後の "b"に注意)があります。インポートは両方のテキスト列を「neighborhood」フィールドにインポートしようとし、「neighborhoodb」フィールドを無視します。「VS_NEEDSNEWMETADATA」エラーで失敗します。

0
RaRdEvA

SSISパッケージ実行のプロキシは、SQL Serverエージェントの下に作成する必要があります。次に、ジョブステップを、作成したプロキシとして実行に変更する必要があります。

少し前に同じ問題が発生し、プロキシが修正しました。

あなたがすでにこれを試したなら、私を許してください。

0
tlemaster