ファイルをデスクトップにコピーできるように、ストアド プロシージャが保存されている場所を見つける方法はありますか?
4 に答える
ストアド プロシージャは、データベースなしで自由に閲覧および読み取ることができる別のファイルとして "保存" されません。システムテーブルのセットに属するデータベースに保存されます。定義を含むテーブルは [sysschobjs] と呼ばれ、エンド ユーザーが (直接) アクセスすることさえできません。
これらのストアド プロシージャの定義をデータベースから取得するには、次のクエリを使用します。
select definition from sys.sql_modules
where object_id = object_id('sp_myprocedure')
しかし、私はアーロンの答えが好きです。彼は他のいくつかの素晴らしいオプションを提供します。
実行している SQL Server のバージョンによって異なります。最近のバージョンでは、ストアド プロシージャのソース コードはシステム ビューから入手できますsys.sql_modules
が、ストアド プロシージャまたはユーザー定義関数 (UDF) のソースを取得するより簡単な方法は、システム関数object_definition()
(のビュー定義でsys.ssql_modules
使用されます) を使用することです。
select object_definition( object_id('dbo.my_stored_procedure_or_user_defined_function') )
古いバージョンでは、ストアド プロシージャと UDF は、現在非推奨のビュー システム view を介して利用できましたsys.syscomments
。
さらに古いバージョンの SQL Server では、システム テーブル「dbo.syscomments」を介して利用できました。
アクセスとデータベースの構成方法によっては、ソースが利用できないか、暗号化されている可能性があるため、あまり役に立たないことに注意してください.
SMO
(Sql Server Management Objects)
を使用してプログラムでソースを取得することもできます。http://technet.microsoft.com/en-us/library/hh248032.aspx