Microsoft SQL ストアド プロシージャを頻繁に編集する必要があり、従来の方法 (MSSMS を開く -> データベース ツリーを展開し、ストアド プロシージャ ツリーを展開し、SP の名前でフィルターを定義する) が非常に長いことがわかりました。「sp_helptext」のような方法 (コマンド ライン) を探していますが、編集用にストアド プロシージャを実際に開く方法を探しています。
ありがとう。
Microsoft SQL ストアド プロシージャを頻繁に編集する必要があり、従来の方法 (MSSMS を開く -> データベース ツリーを展開し、ストアド プロシージャ ツリーを展開し、SP の名前でフィルターを定義する) が非常に長いことがわかりました。「sp_helptext」のような方法 (コマンド ライン) を探していますが、編集用にストアド プロシージャを実際に開く方法を探しています。
ありがとう。
方法があります。SSMSBoost(SSMS用のアドイン)を開発します。SQLエディタから直接オブジェクトスクリプトを開くことができます。
SQLエディタでストアドプロシージャ名にカーソルを置きます
F2キーを押すと、手順が新しいウィンドウでスクリプト化されます。
Ctrl-F2を押すと、オブジェクトエクスプローラツリーでオブジェクトが検索されるため、オブジェクトを右クリックしてさらにSSMSコマンドを使用できます。
お役に立てれば。
のような直接コマンドはありません。
MODIFY dbname.schemaname.spname
SSMS を使用した従来の GUI の方法とは別に、TSQL を使用する 3 つのオプションがあります。
EXEC sp_helptext dbname.schemaname.spname';
SELECT OBJECT_DEFINITION (OBJECT_ID(dbname.schemaname.spname'));
SELECT definition
FROM sys.sql_modules
WHERE object_id = (OBJECT_ID(dbname.schemaname.spname'));
残念ながら、これらのオプションはすべて書式設定が失われます。
ここで 2 つのテクノロジを混在させようとしています。
TSQL を使用して Management Studio を操作することはおそらく不可能です。恐れ入りますが、カット アンド ペーストが唯一の選択肢です。
ラージ
Redgate SQL Prompt を確認してください。これにより、Stored Proc の名前を右クリックし、[ALTER] をクリックできます。
ストアド プロシージャを作成するファイルに書き込むことができる行のテーブルを返す sp_helptext プロシージャを実行するために使用できるコードを次に示します。その後、ファイル名を SSMS コマンド ラインに渡して、SQL Server Manager が開いたときにそのファイルを直接開くことができます。
例) Ssms tempFile.sql
using (SqlConnection con = new SqlConnection ("Connection String Here"))
{
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "sp_helptext @procName";
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("procName", "Name Of Stored Proc Here");
con.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
/*
You will get the CREATE PROC text here
Do what you need to with it. For example, write
to a .sql file
*/
}
}
}
}
これを使って
SELECT ROUTINE_DEFINITION from INFORMATION_SCHEMA.ROUTINES
where ROUTINE_NAME = 'YourStoredProcedureName'
お役に立てれば。