0

概要: 「customer_code char(3)」のすべてのインスタンスを見つけるために、データベースのストアド プロシージャ、関数、およびビューをすべてスクリプト化する必要があります。すべてのオブジェクトをスクリプト化する簡単な方法はありますか? 7 つのデータベース サーバーがあり、それぞれに 20 ~ 30 のデータベースがあります。各データベースを開いて各データベースのスクリプトを手動で生成する必要はありません。時間がかかりすぎます。

背景: W2K に似た、解決すべき古典的な問題があります。データベースには char(3) というコード列があります。これには、ランダムに生成された文字と数字が入力され、お客様の作業を識別するために使用する一意のコードが作成されます。これは 25 年前のもので、組み合わせが完全になくなるまでに約 4 ~ 5 か月かかると見積もっています。この列を varchar(10) 型に拡張する必要があります。

おまけ: 各データベースのオブジェクトを検索して、「customer_code char(3)」のインスタンスを見つけてカウントできるソリューションが理想的です。

4

3 に答える 3

0

RedGateは、SQL Searchと呼ばれる管理スタジオにプラグインする無料のソフトウェアを実行します。データベース内のすべてのオブジェクトにインデックスを付け、オブジェクトへの参照をすばやく見つけます。

私はそれがこのようなもののための本当に便利なツールだと思います:

http://www.red-gate.com/products/sql-development/sql-search/

于 2013-02-20T21:44:45.120 に答える
0

私はあなたを助けるかもしれない2つのアプリケーションを開発しました:

SMOscriptは、特定のデータベース内のすべてのオブジェクトをスクリプト化します。また、すべての T-SQL モジュールで文字列を検索する検索機能も備えています。

変更を実装するときに、変更する項目を意図的に変更または削除し、コンパイラーに依存関係を検出させるというアプローチを取ることがあります。あなたのシナリオでは、列の名前を変更し、customer_codeそれぞれを呼び出して、その列への依存関係についてすべてのオブジェクトをチェックします。

アプリケーションchecktsqlはまさにそれを行います。ビュー、SP などをループし、それぞれを実行し、エラーをログに記録します。また、私のブログで純粋な T-SQL ソリューションを見つけることができます。

于 2013-02-20T21:19:49.070 に答える
0

プロシージャ、ビュー、および関数で特定のテキストを検索するには、syscomments を検索するだけです。この単純なクエリは 1 つのデータベースのみを検索しますが、サーバー上のすべてのデータベースをループするように変更できます。

DECLARE @sSearchString VARCHAR(30)

SELECT  @sSearchString = 'YMDEFF'

SELECT Distinct
    ss.name,
    so.Name,
    SO.Type
FROM sys.objects SO (NOLOCK)
INNER JOIN syscomments SC (NOLOCK) 
    on SO.object_id = SC.ID
INNER JOIN sys.schemas ss
    ON so.schema_id = ss.schema_id
WHERE SC.Text LIKE ('%'+@sSearchString+'%')
ORDER BY SO.Name
于 2013-02-20T21:59:46.950 に答える