本番 DB のスキーマを更新するための変更スクリプトを作成しました。そのビューの列の1つが削除されたため、ビューを削除して再作成する必要があります。
使う予定ですが、
DECLARE @sql NVARCHAR(MAX);
SET @sql = '<View Definition>';
EXEC sp_executesql @sql;
もしあれば、このアプローチを使用する際の落とし穴は何ですか? あなたが提案する代替案は何ですか?
Try catch ブロックを使用して、スクリプト全体をトランザクションの下に置いています。したがって、エラーがない場合、スクリプトはコミットされ、ロールバックされます。以下のように CREATE VIEW コマンドを使用しようとしましたが、TRASACTION と TRY-CATCH BLOCKS の導入後にエラーが発生しました。 .
エラーは「CREATE VIEW MUST BE THE ONLY STATEMENT IN THE BATCH」です。
IF EXISTS ( SELECT * FROM sys.views WHERE name = 'VwViewName')
BEGIN
DROP VIEW VwViewName
END
IF NOT EXISTS ( SELECT * FROM sys.views WHERE name = 'VwViewName')
BEGIN
CREATE VIEW VwViewName
<VIEW DEFINITION>
END