2008-09-17 2 views
2

大量のデータセットに対して毎月処理する一連の大規模で複雑なストアドプロシージャセットを継承しようとしています。大規模なt-sqlプロシージャをどのようにメンテナンスしますか

VB6で書かれた元のプロセスと一致するように、デバッグ中です。彼らがt-sqlでそれらを書き直すことを決めた理由は、VBプロセスに数日かかるため、この新しいプロセスには数時間かかるからです。

これはすべて問題ありませんが、これらを今ではリモートで読み取り/保守可能なt-sqlコード(1.5k +行)の大量のチャンクにする方法を教えてください。

t-sqlを頭に浮かべた経験があれば大歓迎です。

答えて

4

まず、.sqlファイルでいっぱいのディレクトリを作成し、そこに保持します。この一連の.sqlファイルをリビジョン管理システムに追加します。 SVNはうまく動作します。これらをデータベースにロードし、既存のものを上書きするツールがあります。

月ごとの処理の出力結果を示すベースラインレポートとテストデータベースがあります。テストは、バージョン管理下で.sqlファイルの形式で行う必要があります。

あなたのprocを好きなだけリファクタリングして、後でテストを実行して正しい機能を確認することができます。あなたが行うことができます

0

ことの一つは、あなたが(以前と現在のバージョンの差分を使用して)手続きへの変更を確認できるように、ソースコントロールへのすべての変更を保存するための自動化されたスクリプトを持っている

2

きれい/書式設定のためにSQLを使って、私はhttp://www.sqlinform.com/を試してみることができます。無料のオンライン版とデスクトップ版もあります。

SQLinFormは、多くの書式設定オプションを持つすべての主要なデータベース(ORACLE、SQL Serverの、DB2/UDB、Sybaseの、Informixの、PostgreSQLのは、MySQLなど)の自動SQLコードフォーマッタです。

2

まず、コード、特にインデントを再フォーマットしてください。

次に、SQLをモジュール化します。チャンクを独自のスタンドアロンのファイルで、より小さく、記述的に名前を付けたプロシージャと関数に引き出します。これだけで私は大きなSQLファイルの理解を向上させることができます。

1

可能な限りSQLをモジュール化し、必要に応じてメンテナンス、リファクタリング、および機能の追加を可能にする一連のテストを実行してください。私は一度5000行を集計したStored Procを継承する喜びを感じましたが、私はまだそれについて悪夢を持っています。プロジェクトが終わったら、保存されたprocをプリントアウトして、Xツリーを破壊する笑いを出しました。私たちの会社のうちの1週間に、私は週末にセッションを立ち上げました。私はそれを端から端までレイアウトし、建物の全長に渡っていました。これは、ストアドプロシージャを記述したり保守しない方法の例として挙げられています。

2

ApexSQLScriptは、データベース全体をスクリプト化するための優れたツールです。このツールをソースコントロールにチェックインし、変更を管理できます。

また、sprocsを文書化すると、sys.sql_modulesのソースコードに関するデータを使用して、sprocsに関する情報を引き出すことができます。タグなどを使用して、サブシステムのドキュメント化に役立てることができます。

また、スキーマ(または複数のデータベース)を使用してください。これはデータベースを論理ユニットに分割し、建築上の問題を指摘するのに役立ちます。

私は最近、SQL2005のCTE機能がネストされたクエリ(再帰的でなくても)を多く持つコードを管理する上で非常に有用であることを発見しました。ネストとインデントの束を管理する代わりに、CTEを宣言してビルドし、最後のステートメントで使用することができます。これはリファクタリングにも役立ちます。冗長なネストされたクエリとカラムを削除するほうがずっと簡単です。

大きなコードベースを管理し、暗いコーナーを削除するには、ストアドプロシージャとUDFが不可欠です。ビューがパラメータ化できないため(UDFは結果セットが小さければこれらのケースで使用できます)、非常に役立つとは思えませんでした。

0

確かに無料ではありませんが、T-SQLを一貫したフォーマットに保つために、Redgate SoftwareのSQL Promptはとても便利です。あなたのprocの構文が正しい限り、いくつかのキーストローク(Ctrl + K、Y)はそれを直ちに再フォーマットします。これらのオプションを使用すると、SQLのフォーマット方法を自由に制御できます。

関連する問題