私は、引数としてデータベース名をとり、そのデータベース名を使用してテーブル、ビュー、トリガーなどのオブジェクトを参照するプロシージャを持っています。辞書はこれらの情報を見つけるのに役立ちますか?特定のデータベースのオブジェクトを取得する方法は?
注:私はSELECT * FROM sys.obj
を使用しようとしましたが、それは私にすべてのデータベースのオブジェクト全体を与えます。 具体的なデータベースに制限する方法
私は、引数としてデータベース名をとり、そのデータベース名を使用してテーブル、ビュー、トリガーなどのオブジェクトを参照するプロシージャを持っています。辞書はこれらの情報を見つけるのに役立ちますか?特定のデータベースのオブジェクトを取得する方法は?
注:私はSELECT * FROM sys.obj
を使用しようとしましたが、それは私にすべてのデータベースのオブジェクト全体を与えます。 具体的なデータベースに制限する方法
で述べたのと同じステートメントを実行しました。それから私は接続されているオブジェクトだけを取得しています。したがって、特定のデータベースに接続するには、単にUSE
を追加してください。 sys.objects
テーブルにヒットします。
だからあなたのSPが
GO
CREATE PROCEDURE PROC_GETALLOBJ
(
@DB_NAME VARCHAR(20)
)
AS
BEGIN
DECLARE @QRY VARCHAR(MAX);
SELECT @QRY = '
USE ' [email protected]_NAME+'
SELECT * FROM SYS.objects WHERE [TYPE] NOT IN (''SQ'',''S'',''IT'')'
EXEC (@QRY)
END
GO
ようになります私はNOT IN
とタイプSQ,S,IT
のある行を削除しました。あなたがそれらを必要としないかもしれないので。
説明のあるタイプのリストを確認してください。
TR --trigger
SQ --SERVICE_QUEUE
FN --SQL_SCALAR_FUNCTION
S --SYSTEM_TABLE
D --DEFAULT_CONSTRAINT
IT --INTERNAL_TABLE
F --FOREIGN_KEY_CONSTRAINT
PK --PRIMARY_KEY_CONSTRAINT
P --SQL_STORED_PROCEDURE
U --USER_TABLE
TF --SQL_TABLE_VALUED_FUNCTION
UQ --UNIQUE_CONSTRAINT
V - ビュー
動的SQLを使用する必要があります。また、動的SQLの一部としてデータベース名を含める必要があります。 "Select * from + @DBName +" .sys.objects ... " –
この回答が変更されると、あなたは次のようになるはずです:http://stackoverflow.com/a/18462734/2095534 –