3

SQL Server 2008 で番号付きストアド プロシージャを多数作成しました。

それらの名前は次のとおりdbo.ProcName, dbo.ProcName;2, dbo.ProcName;3です。

Management Studio 2008 のプロシージャ リストでプロシージャ名を右クリックしてクリックすると、Modify上記のようにすべてのストアド プロシージャを表示および編集できます。

しかし、Management Studio 2012 では、同じアクションの後、最初の手順しか表示されません。

同じ名前とセミコロン付きのサフィックスを持つすべてのストアド プロシージャを表示および編集する方法は?

4

2 に答える 2

5

番号付きストアド プロシージャについて話しているようです。

同じ動作を再現できます。以下を実行した後

CREATE PROCEDURE [dbo].[foo];1 @x int AS
  PRINT 'x is ' + CONVERT(varchar(8), @x)
GO
CREATE PROCEDURE [dbo].[foo];2 @x char AS
  PRINT 'x is ' + @x
GO

オブジェクト エクスプローラーで [Foo] を選択してから [変更] を選択すると、SSMS 2008 では両方のバージョンが表示されますが、SSMS 2012 では最初のバージョンのみが表示されます。

これらは2005 年以降非推奨になっているため、ツールでサポートしないという意図的な決定であっても驚かないでしょう。Drop and Createただし、まだ両方のバージョンがリストされているようです。

于 2012-09-22T20:08:10.990 に答える
1

別の回避策:

EXEC sp_helptext 'dbo.ProcName';

GOただし、自分で sを注入する必要があります。


次の方法でメタデータを取得することもできます。

SELECT definition
FROM sys.sql_modules
WHERE [object_id] = OBJECT_ID('dbo.ProcName')
UNION ALL
SELECT definition
FROM sys.numbered_procedures
WHERE [object_id] = OBJECT_ID('dbo.ProcName');

そしてこのように:

SELECT [text] FROM syscomments
WHERE id = OBJECT_ID('dbo.ProcName');

また、Generate Scripts ウィザードを使用できます。

  1. データベースを右クリックし、[タスク] > [スクリプトの生成] を選択します
  2. [オブジェクトの選択] 画面で、[特定のデータベース オブジェクトの選択] を選択し、[ストアド プロシージャ] をオンにして展開し、スクリプトを作成する番号付きストアド プロシージャのルート名を選択します。
  3. [スクリプト オプションの設定] 画面で、[新しいクエリ ウィンドウに保存] を選択します。
  4. [次へ] > [次へ] > [完了] をクリックします。

これについてもバグを報告しました:

http://connect.microsoft.com/SQLServer/feedback/details/764197/ssms-2012-inconsistently-handles-numbered-procedures

于 2012-09-22T20:20:29.030 に答える