SQL Server 2008データベースにデータをインポートするSSISパッケージがあります。 SQL Serverエージェントでスケジュールジョブを設定して、そのパッケージを実行しました。履歴を確認すると、ジョブが正常に実行されたかどうかしか確認できませんでした。それ以外のメッセージは見えませんでした。
ジョブが実行されるたびにインポートされるレコードの数を知りたい。どうすれば監視できますか? SSISパッケージの追加コンポーネントを使用するか、SQL Serverエージェントジョブセットアップでいくつかの構成を設定する必要がありますか?
SQL Serverエージェントジョブセットアップでいくつかのログ機能を見つけましたが、それが私の要件を満たすことができるかどうかはわかりません。
処理されている列を知りたいだけで、その情報に興味がない場合は、SSISログ機能を使用することもできます。これは、データフロータスクでどのように機能するかです。
お役に立てば幸いです。
スクリーンショット#1:
スクリーンショット#2:
スクリーンショット#:
スクリーンショット#4:
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出力
実行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
パッケージを(ファイルシステムからロードするのではなく)データベースのIntegration Services Catalogに展開した場合、詳細なレポートを簡単に取得できます。
SQL Server Management Studioでカタログノードを開き、パッケージ名を右クリックして、[レポート]を選択します。標準レポート|すべての実行。インポートされたレコードを含む、ジョブとそのサブコンポーネントのすべてのステップの詳細を表示します。