4

Microsoft SQL ストアド プロシージャを頻繁に編集する必要があり、従来の方法 (MSSMS を開く -> データベース ツリーを展開し、ストアド プロシージャ ツリーを展開し、SP の名前でフィルターを定義する) が非常に長いことがわかりました。「sp_helptext」のような方法 (コマンド ライン) を探していますが、編集用にストアド プロシージャを実際に開く方法を探しています。

ありがとう。

4

7 に答える 7

3

方法があります。SSMSBoost(SSMS用のアドイン)を開発します。SQLエディタから直接オブジェクトスクリプトを開くことができます。

  1. SQLエディタでストアドプロシージャ名にカーソルを置きます

  2. F2キーを押すと、手順が新しいウィンドウでスクリプト化されます。

Ctrl-F2を押すと、オブジェクトエクスプローラツリーでオブジェクトが検索されるため、オブジェクトを右クリックしてさらにSSMSコマンドを使用できます。

お役に立てれば。

于 2013-01-30T09:59:53.803 に答える
3

のような直接コマンドはありません。

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 つのテクノロジを混在させようとしています。

  1. SQL と SQLSyntax
  2. SQL 管理ツール

TSQL を使用して Management Studio を操作することはおそらく不可能です。恐れ入りますが、カット アンド ペーストが唯一の選択肢です。

ラージ

于 2013-01-29T11:07:13.917 に答える
1

Redgate SQL Prompt を確認してください。これにより、Stored Proc の名前を右クリックし、[ALTER] をクリックできます。

レッド ゲート SQL プロンプト

于 2013-01-29T11:23:03.713 に答える
0

ストアド プロシージャを作成するファイルに書き込むことができる行のテーブルを返す 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
                */
            }
        }
    }
}
于 2016-01-18T18:25:46.433 に答える
0

これを使って

SELECT ROUTINE_DEFINITION from INFORMATION_SCHEMA.ROUTINES
where ROUTINE_NAME = 'YourStoredProcedureName'

お役に立てれば。

于 2018-02-26T04:35:02.967 に答える