SQL Server 2005 を使用しています。時々、1 日に数回作成される新しいビューを取得するマスター データベースがあります。
同じテーブル構造を持つ顧客データベースが複数あります。顧客のデータベース ビューをマスターと同期させるためにリンクします。
現在、management studio を使用して、すべてのビュー (すべて ! で始まるビュー) を含むマスターから SQL スクリプトを生成しています。次に、! で始まる現在のビューをすべて削除します。顧客のデータベースでスクリプトを実行します。
! で始まるすべてのビューを削除するスクリプトを実行できるようにしたいと思います。マスターから ! で始まるすべてのビューをインポートします。
また、ビューが作成または更新されるたびに新しいスクリプトを生成する必要がないようにしたいと考えています。
おそらくこれはSQLスクリプトでは不可能ですか?
*編集 - 最初の部分が完了しました
正常に動作するスクリプトの最初の部分について @Szymon に感謝します
declare @sql as nvarchar(max)
set @sql = N''
select @sql = @sql + 'DROP VIEW "' + name + '";' from sys.views where name like '!%'
exec (@sql)
私は試しましたが、2番目の部分を理解できません。確かに、いくつかの値を持ついくつかの(すべてではない)ビュー名が返されますが、そこからどこに行くべきかわかりません。