Master データベースにストアド プロシージャがあります。すべてのパラメータを提供する外部プログラムによって使用されます。提供されるパラメーターの 1 つはデータベース名です。そのデータベース内には、という名前のテーブルがあるはずxyz
です。
要求されたデータベースにそのテーブルが存在しない場合、例外が発生します。ストアド プロシージャに何かを書き込んで、そのテーブルが存在するかどうかを確認し、存在しない場合はより有用なものを返したいと思います。
これは見た目よりもトリッキーです。動的 SQL を使用して可変データベース名を取得できます。を使用して、それらのデータベースが存在するかどうかを確認できますIF EXISTS(SELECT * FROM SYS.DATABASES WHERE NAME = PARAMETER1)
。
テーブルが存在するかどうかを確認するにはUSE
、データベースが必要になるため、動的 SQL を使用する必要があります。ただし、それでは実行可能な変数が残り、その変数の結果を確認する方法がわかりません (たとえば、実行できませんでしたIF EXISTS (EXEC @SQL)
)。何か言い方があればいいなと思っていましたSELECT * FROM sys.AllDatabasesAllTables WHERE DatabaseName = Parm1 AND TableName = Parm2
。
私はそれsys.AllDatabasesAllTables
が存在しないことを理解していますが、誰かが別の方法を知っていることを望んでいました...master
すべてのデータベースとそのテーブル名を格納するデータベースにビューを作成する良い方法はありますか?