1

カタログ ビューを使用sql-server'sして、テーブルを簡単に生成/再作成できます。次のようなクエリを実行できます

select * from INFORMATION_SCHEMA.TABLES -- Get all the table names

このような列があります..

select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'Publishers' -- Get the cols for publisher table

sys.objectsこのように inおよび/または inでクエリを実行sys.foreign_keysして、テーブル、すべての列、それらが null 可能かどうか、およびその他すべて ( など) に関する完全な情報を取得できます。その情報があれば、primary keyそのcheck constraintsテーブルを簡単に再作成できます。全体 (制約とすべてを含む)。それは悪い考えのように聞こえるかもしれませんし、これを行う他の方法があるかもしれませんが、それが良い習慣であるかどうかの問題ではありません. 私が知りたいのは、 に関するすべての情報を含むカタログはありstored procedure(s)ますか?

このようなprocがあるとします

ALTER PROCEDURE [dbo].[proc_Author]
    -- Add the parameters for the stored procedure here
    @Flag INT = 1,
    @AuthorName NVARCHAR(50) = '',
    @AuthorId int = 0,
    @Address NVARCHAR(50) = ''
AS
BEGIN

    IF (@Flag = 1)
    -- INSERTS INTO TABLE DATA --
        BEGIN
            INSERT INTO Authors VALUES (@AuthorName, @Address);

        END

    ELSE IF (@Flag = 2)
        -- DELETES THE AUTHOR --
        BEGIN
            DELETE FROM Authors
            Where AuthorID = @AuthorId
        END

    END

再構築できるように、クエリを実行しsystem catalogて構造を知る方法はありますProc_Authorか? をクエリできることはわかっていますsys.proceduresが、些細な詳細しか表示されないため、実行しました

select * from INFORMATION_SCHEMA.PARAMETERS
select * from sys.parameters

私のプロシージャが使用しているパラメータに関する情報を提供してくれますが、proc情報から構築したい場合は十分ではありません。それで、私は何かが欠けていますか?構築に必要なすべての情報を から取得できcatalog viewsますか? じゃあどっち?そうでない場合、 astored procがコンパイルされた後、ステートメント (selectなどinsert) は実際にディスクのどこに保存されますか? 私が開いてSSMS右クリックModifyして手順を選択すると、新しいクエリウィンドウが開きます。そのため、この構造が何であるかを知るためにprocどこかから見ている必要がありますか? どうすれば入手できますか?disk/catalog viewsproc

4

1 に答える 1

1

ここを調べてみてください:

select * from sys.all_sql_modules

次のようなストアド プロシージャのスクリプトを取得することもできます。

select object_definition(object_id('[dbo].[proc_Author]'))

これらを使用する場合は、Management Studio でテキストを返すためのオプションを確認してください。

[ツール] -> [オプション] -> [クエリ結果] -> [SQL Server] -> [結果をテキストに変換] -> [各列に表示される最大文字数]

返されるテキストの量には制限があります。全体を表示するには、BCP でファイルに出力する必要がある場合があります。

于 2013-04-09T15:47:42.700 に答える