2016-08-06 17 views
0

これはおそらくSQL 101だと確信していますが、Google検索では「ログインの作成」エントリが見つかっています。簡単な概要を説明しましょう。SQL Server 2012でのログファイルの作成

システムよりも詳細なレポートが必要なため、私は一般的なITサポートからSQLレポートに移行しました。私の会社はレジャーセンターを運営しています。私たちは70以上のサイトに3つのレジャーマネジメントシステムを使用しています。 3つはすべてSQLベースですが、非常に異なる方法で同じ作業を行います。私はSSRSで多くのレポートを作成しましたが、2または3はすべてのシステムにアクセスするのに非常に時間がかかり、1つのリンクがダウンするとレポート全体にアクセスできないということがありました。

マーケティング目的で第三者にデータを送信する要求は、すべてのシステムのデータを集中管理して、レポート作成をより簡単にする必要があります。本質的に2つのテーブルがあります。メンバーシップの詳細とアクティビティのテーブルです。私は、3つのシステムのそれぞれから同じ情報を生成するビューを作成し、データを元に戻す中央データベースをセットアップするという難しい作業をしました。私は、前の日のレコードをテーブルに移入する各システム上で実行されるストアドプロシージャを用意します。中央サーバーには、これらのテーブルからデータをコピーして転送されたジョブを削除するジョブが存在します。これまでのところ(比較的)単純です。

問題は、セントラルサーバーが60以上のサーバーからデータを取得しようとしていることです。すべてが独自のネットワークリンクを使用しています。一部のサイトはリモートDSL接続が不十分なため、スケジュールされたジョブによって一部のデータをコピーできないことがあります。私はSQLエージェントの仕事がこれらをステップとして持つことができて満足しています。接続が失敗するとプロセス全体が停止することはありませんが、何らかの問題が発生したときのトラブルシューティングは、

SQLを複雑にしても、ストアドプロシージャは更新/挿入レコードジョブだけです。参考になるのは、更新ジョブがログ・ファイルに書き込んで、何らかの形でそれが20行に影響を与えたと報告するということです。また、挿入ジョブは100行に影響を与えました。基本的なものだけど、どうやって私はそれについて行くのか分からない。ステップの1つが失敗したときに何らかの警告が表示されます。 SQL Agentは助けになりますが、私は3つのサーバー段階で60以上のサーバー段階に展開する前に、できるだけ多くの回復力を構築したいと考えています。

正しい方向のポインターがあれば幸いです。私のSQLスキルは自分自身で教えられています(Stack Overflowの助けを借りて!)、ここ数週間で複雑なビューやクエリを作成することについて多くのことを学んでいますが、SQLのほとんどはSSRSのクエリです私には新しい。

多くのありがとうございます。

答えて

0

output clauseは、ログ記録に必要なものを取得します。それができるのは、あなたの声明が何をしているのかをキャプチャすることです。以下は、更新を実行してロギングテーブルの変更をキャプチャする方法の例です。

エラー処理と回復力については、SSISを使用してETLを実行する方法を検討します。 SSISは、エラー処理のためにはるかに堅牢な機能セットを提供します。

-- Create Temp Tables 
CREATE TABLE #myLog 
(
    id int, 
    oldVal int, 
    newVal int 
); 

CREATE TABLE #myTable 
(
    id int, 
    val int 
); 

-- Add Values to #myTable 
INSERT INTO #myTable VALUES 
(1, 1234), 
(2, 1234); 

-- Output Contents of #myTable 
SELECT * FROM #myTable; 

-- Update #myTable & Capture Changes 
UPDATE #myTable 
SET val = 12345 
OUTPUT 
    inserted.id, 
    deleted.val, 
    inserted.val 
    INTO #myLog 
WHERE id = 2 

-- Output Contents of #myTable and #myLog 
SELECT * FROM #myTable 
SELECT * FROM #myLog 

-- Drop Temp Tables 
DROP TABLE #myLog 
DROP TABLE #myTable 
+0

多くのありがとうございます - 私が探していた周りの掘り出し情報を提供します。 – DaveBulwer

+0

概念を頭に浮かべて、一意の参照のリストと、日付や時刻とともに挿入または更新されたかどうかを示す素敵なログ表が表示されるようになりました。ちょうど私が欲しかったこと。申し訳ありませんが、私が自分自身で十分に高くないので、私にあなたに代理人を与えることはできません。 – DaveBulwer