2017-11-22 11 views
0

私は、指定されたアセンブリ内のすべてのfunc/procsを定義するためのsqlコードを作成する手順を書いています。 プロシージャとスカラー関数は簡単です - iterating sys.assemblies/modules/objects/parameters create func/procのコードを準備できます。外部func/procの完全な定義を取り出す方法は?

しかし、tv関数によって返されたテーブルの定義がどこに格納されているのかわかりません。そのような関数のスクリプティングが可能ですので、テーブルの定義はどこに書かれていてもかまいません。

ところで2番目の質問:C#コードに基づいてfunc/procのSQL​​定義を作成するツールはありますか? ?

答えて

0

システムカタログビューのsys.columns(およびsys.all_columns)にテーブル、テーブル値関数(インライン、SQLマルチステートメント、およびSQLCLR)、およびビューと同じように保持されます。

SELECT obj.[name], obj.[type_desc], col.[name] 
FROM sys.objects obj 
INNER JOIN sys.columns col 
     ON col.[object_id] = obj.[object_id] 
ORDER BY obj.[type_desc], obj.[name], col.[name]; 

完全なデータ型名を取得するには、sys.typesに参加する必要があります。

  1. (アセンブリ内SQLCLR法用)T-SQLラッパーオブジェクトは、あなたが書いたスクリプトによって作成された場合は、次の

    しかし、以来、あなたがやっているようなものをスクリプティング非常に少ない点がありますCREATEステートメントが既にあります。

  2. T-SQLラッパーオブジェクトが(Visual Studioの有無にかかわらず)SSDTによって作成されている場合は、「作成」スクリプトが既に作成されています各ビルド時に)、インクリメンタルな "publish"スクリプトを実行します。

いずれの場合も、これらのオブジェクトは、既に用意が必要なT-SQLスクリプトから作成されています。私は、あなたがオブジェクトを持っていたデータベースを手渡され、何らかの理由で配備スクリプトが利用できないと仮定しない限り、

C#コードに基づいてfunc/procのT-SQL定義を作成するツールはありますか?

データベースまたはDLL /アセンブリからですか?データベースから任意のタイプのオブジェクトをスクリプト化するために使用できるツールがいくつかあります。また、.NET SMOクラスを使用して、データベースから定義をスクリプト化することもできます。 DLL /アセンブリをスキャンする場合は、.NET Reflectionクラスを使用して各メソッドを反復処理し、SqlFunctionSqlProcedureSqlFacet属性/デコレータを調べる必要があります。

+0

>何らかの理由で展開スクリプトを使用できません。 – DueGe

+0

シンプル - thx :-) 2番目の質問は、ソースコード(C#)またはDLLを指します。 – DueGe

関連する問題