これをTSQLのループで実行できるかどうかはわかりません。ビューを削除して再作成するデータベースのリストをループする
私はループしたいデータベースのリストを持っており、各データベースをドロップし、必要に応じてビューを再作成します。
私は既にビューを削除して再作成するスクリプトを持っています。しかし、現在私のスクリプトの一番上には、たくさんのuseステートメントがあります。私はスクリプトのコメントを外して再実行するだけです。しかし、私はそれをはるかに高速になるように自動化したいと思います。過去にもデータベース名の文字列をループして、それを使ってuse文を実行していたのと同じことをやっています。これは、ビューをgoステートメントで区切らなければならないため、ビューを作成するとき以外は機能します。ここで私のコードのコードスニペットは、ビューを使って作業をするための助けとなるだろうデータベースを解析する素晴らしいです。
DECLARE @DBs AS VARCHAR(MAX);
DECLARE @OneDB AS VARCHAR(255);
DECLARE @CmdToExec AS VARCHAR(MAX);
SET @DBs = 'db1,db2,db3,db4,db5,db6,db7,db8,db9,db10,db11,db12,db13,db14,db15,db16'
DECLARE DB_Cursor CURSOR FOR
SELECT SUBSTRING(',' + @DBs + ',', n + 1,
CHARINDEX(',', ',' + @DBs + ',', n + 1) - n - 1) AS "dbInfo"
FROM CommunityPAL.dbo.Numbers
WHERE SUBSTRING(',' + @DBs + ',', n, 1) = ','
AND n < LEN(',' + @DBs + ',');
OPEN DB_Cursor;
FETCH NEXT FROM DB_Cursor INTO @OneDB;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CmdToExec = 'USE ' + @OneDB;
EXEC @CmdToExec;
--statements to execute
FETCH NEXT FROM DB_Cursor INTO @OneDB;
END
CLOSE DB_Cursor
DEALLOCATE DB_Cursor
"には、ループしたいデータベースのリストがあり、データベースごとにドロップし、必要に応じてビューを再作成します。 - なぜ? –
各ビューに新しいフィールドを追加する必要があります。異なるクライアントデータベースのビューを使用するWebアプリケーションがあります。 – user1134537