web-dev-qa-db-ja.com

実行が完了した後、SSISパッケージジョブの結果を確認するにはどうすればよいですか?

SQL Server 2008データベースにデータをインポートするSSISパッケージがあります。 SQL Serverエージェントでスケジュールジョブを設定して、そのパッケージを実行しました。履歴を確認すると、ジョブが正常に実行されたかどうかしか確認できませんでした。それ以外のメッセージは見えませんでした。

ジョブが実行されるたびにインポートされるレコードの数を知りたい。どうすれば監視できますか? SSISパッケージの追加コンポーネントを使用するか、SQL Serverエージェントジョブセットアップでいくつかの構成を設定する必要がありますか?

SQL Serverエージェントジョブセットアップでいくつかのログ機能を見つけましたが、それが私の要件を満たすことができるかどうかはわかりません。

12
TTCG

処理されている列を知りたいだけで、その情報に興味がない場合は、SSISログ機能を使用することもできます。これは、データフロータスクでどのように機能するかです。

  1. SSISパッケージをクリックします。
  2. メニューでSSIS-> Logging ...を選択します
  3. SSISログの構成:)ダイアログで、プロバイダーの種類を選択し、(追加)をクリックします。この例ではSQL Serverを選択しました。 [名前]チェックボックスをオンにして、[構成]列にデータソースを入力します。ここで、SQLServerは接続マネージャーの名前です。 SSISは、選択したデータベースにdbo.sysssislogという名前のテーブルとストアドプロシージャdbo.sp_ssis_addlogentryを作成します。以下のスクリーンショット#1を参照してください。
  4. 行を処理する必要がある場合は、チェックボックスOnInformationを選択します。この例では、パッケージが正常に実行されたため、OnInformationの下にログレコードが見つかりました。必要に応じて、このイベント選択を微調整する必要がある場合があります。以下のスクリーンショット#2を参照してください。
  5. データフロータスク内のパッケージ実行の例を次に示します。下のスクリーンショットを参照してください。
  6. 次に、ログテーブルdbo.sysssislogの出力例を示します。列idおよびmessageのみを表示しています。テーブルには他にも多くの列があります。クエリでは、「Package1」という名前のパッケージとイベント「OnInformation」のみの出力をフィルタリングしています。 id 7、14、15のレコードには処理された行が含まれていることがわかります。以下のスクリーンショット#4を参照してください。

お役に立てば幸いです。

スクリーンショット#1

Logging

スクリーンショット#2

Events

スクリーンショット#

Execution

スクリーンショット#4

Data

21
user756519

SQL Serverのジョブ履歴にSSISパッケージからの出力が表示されない場合の別の方法は、DTEXECコマンドラインを使用することです。

(上:このアプローチは、ジョブの出力を、それをサポートする他の誰かがexpectを見つけて見つけられる場所に置きます:ジョブ履歴で。
大きなパッケージの欠点:多数のタスクまたはコンポーネント、および大量の出力を含む長いSSISパッケージがある場合、ジョブ履歴はパッケージ出力をジョブ履歴の多くの行に分割し、以前の答え-テーブルにログを記録する-読みやすい)

ジョブの表示履歴にSSISパッケージ出力を表示するには:
(1)ジョブステップをタイプ「SQL Server Integration Services Package」から「オペレーティングシステム(CmdExec)」に変更します。
(2)DTEXECコマンドラインを使用して、パッケージを実行します。

コマンドラインの例:

DTExec /DTS "\MSDB\myPkgName" /DECRYPT pkgPass /MAXCONCURRENT " -1 " /CHECKPOINTING OFF 

SSISパッケージに32-BITの実行が必要な場合(たとえば、Excelへのエクスポートに該当)、「Program Files( x86)」を完全修飾します。例、SQL Serverアプリケーションが「E:」ドライブにインストールされ、SQL Server 2014が使用されている場合:

"E:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe" /DTS "\MSDB\myPkgName" /DECRYPT pkgPass /MAXCONCURRENT " -1 " /CHECKPOINTING OFF

SSISパッケージがファイルシステムにある場合( ".dtsx"ファイルとして)、 "/ DTS"を "/ FILE"に置き換えます。

SSISパッケージがSSISDBに配置された場合(以前の「パッケージ展開モデル」ではなく、SQL Server 2012以降で利用可能な「プロジェクト展開モデル」を使用)、「/ DTS」を「/ ISSERVER」に置き換えます。

次に、ジョブステップの[詳細]ページに移動し、[履歴にステップ出力を含める]チェックボックスがオンになっていることを確認します。

最後に、ジョブステップの「別のユーザーとして実行」を検討してください。ジョブステップ「別のユーザーとして実行」がすでにプロキシに設定されている場合は、タイプ「SQL Server Integration Services Package」のジョブステップで、サブシステムに対してそのプロキシをアクティブにしました」 SQL Server Integration Servicesパッケージ」。ここで、上記のようなコマンドラインを実行するには、プロキシのプロパティを確認し、それがサブシステム「オペレーティングシステム(CmdExec)」に対してもアクティブであることを確認します。

MSDNリファレンス: SQLエージェント履歴のSSIS出力

1
Doug_Ivison

実行IDでSSISエラーを取得するには、以下の手順を使用します

CREATE PROCEDURE [dbo].[get_ssis_status] @EXECUTION_ID INT\n
AS
BEGIN
  SELECT o.operation_id EXECUTION_ID
    ,convert(datetimeoffset,OM.message_time,109) TIME
    ,D.message_source_desc ERROR_SOURCE
    ,OM.message ERROR_MESSAGE
    ,CASE ex.STATUS
        WHEN 4 THEN 'Package Failed'
        WHEN 7 THEN CASE EM.message_type 
            WHEN 120 THEN 'package failed' 
            WHEN 130 THEN 'package failed' ELSE 'Package Succeed'END
        END AS STATUS
FROM SSISDB.CATALOG.operation_messages AS OM
INNER JOIN SSISDB.CATALOG.operations AS O ON O.operation_id = OM.operation_id
INNER JOIN SSISDB.CATALOG.executions AS EX ON o.operation_id = ex.execution_id
INNER JOIN (VALUES (- 1,'Unknown'),(120,'Error'),(110,'Warning'),(130,'TaskFailed')) EM(message_type, message_desc) ON EM.message_type = OM.message_type
INNER JOIN (VALUES 
 (10,'Entry APIs, such as T-SQL and CLR Stored procedures')
,(20,'External process used to run package (ISServerExec.exe)')
,(30,'Package-level objects')
,(40,'Control Flow tasks')
,(50,'Control Flow containers')
,(60,'Data Flow task')
    ) D(message_source_type, message_source_desc) ON D.message_source_type = OM.message_source_type
WHERE ex.execution_id = @EXECUTION_ID
AND OM.message_type IN (120,130,-1);
END
1
vishnu k

パッケージを(ファイルシステムからロードするのではなく)データベースのIntegration Services Catalogに展開した場合、詳細なレポートを簡単に取得できます。

SQL Server Management Studioでカタログノードを開き、パッケージ名を右クリックして、[レポート]を選択します。標準レポート|すべての実行。インポートされたレコードを含む、ジョブとそのサブコンポーネントのすべてのステップの詳細を表示します。

1
strattonn