複数のベースに存在する (または存在しない) 特定のテーブルの行数を知る必要があります。
これが私が持ってきたものです:
DECLARE @NomeBase as char(60)
declare @base as char(100)
declare @select as char(1000)
DECLARE CBases CURSOR FOR select databasename from sig_orgao_web
--gets all my databases
OPEN CBases
FETCH NEXT FROM CBases INTO @NomeBase
WHILE (@@FETCH_STATUS = 0)
BEGIN
set @base =rtrim(@NomeBase) + '.dbo.sia_pais' -- database.dbo.table format
select @base
set @select = 'SELECT cast( count(*) as char(70)) from ' + @base
exec (@select)
FETCH NEXT FROM CBases INTO @NomeBase
END
CLOSE CBases
DEALLOCATE CBases
テーブル名は静的でなければならないことを知っているので、選択ステートメントを動的に作成しています。結果は次のようになります。
SIIG_DAT_DESENV.dbo.sia_pais
13
SIIG_DAT_HOMOLOGACAO.dbo.sia_pais
13
そしてそれは続く。
データベースにテーブルが存在しない場合、または管理スタジオでこのスクリプトを実行しているユーザーが特定のデータベースにアクセスできない場合、エラーがスローされます。
これを行うより良い方法はありますか?