各サーバーからテーブルを削除しようとしています。サーバー 1 には 3 つのデータベースがあり、サーバー 2 には 6 つ、サーバー 3 には 8 つのデータベースがあります。
以下は、特定のサーバーの各データベースからドロップ操作を実行するために作成した SQL スクリプトです。これらの操作を実行した後。
DECLARE
@LoopId int,
@Command varchar(500),
@tblName varchar(100)
DECLARE @List TABLE
(
TableName sysname not null,
LoopId int not null identity(1,1)
)
-- Load with tables you wish to drop
INSERT @List (TableName)
SELECT name FROM [Morgage].sys.objects WHERE type = 'u' and name like '%JKL%'
SELECT name FROM [Scorecard].sys.objects WHERE type = 'u'and name like '%JKL%'
SELECT name FROM [Core].sys.objects WHERE type = 'u' and name like '%JKL%'
SET @LoopId = @@rowcount
-- Go through list and process each item
WHILE @LoopId > 0
BEGIN
SET @tblName = (SELECT TableName from @List where LoopId = @LoopId)
SET @Command = 'Drop table ' + @tblName
execute (@Command)
SET @LoopId = @LoopId - 1
END
上記のクエリ結果には、影響を受ける行が示されていますが、テストしようとすると、以下のクエリを使用しています。私はすべてを見ます。私のクエリは実際に何をしましたか? 私はそれを正しくやっていますか?
SELECT name FROM [Scorecard].sys.objects WHERE type = 'u'and name like '%JKL%'
どんな助けでも大歓迎です。ありがとう。