ここで、私がここで試みているのは、任意の条件 (IF ブロック内) に基づいて、SQL Server からデータベースを削除することです。データベースが存在する場合は、削除して再作成します。
私は次のコードを使用しています:
IF EXISTS (SELECT 1 FROM sys.databases db with(nolock) WHERE db.name = 'practice')
BEGIN
USE master
DROP DATABASE practice
END
このコードは数分間実行を続けた後、次のようなエラーで応答します
メッセージ 3702、レベル 16、状態 4、行 1
データベース「練習」は現在使用中のため削除できません。
次に、別の試みとして、コード内で GO ステートメントを使用して、次のコードで実行フローを分離しました (これには create database ステートメントも含まれていることに注意してください)。
IF EXISTS (SELECT 1 FROM sys.databases db with(nolock) WHERE db.name = 'practice')
BEGIN
USE master
GO
DROP DATABASE practice
GO
CREATE DATABASE practice
END
今、それはこのエラーをスローします:
メッセージ 102、レベル 15、状態 1、行 3
「マスター」付近の構文が正しくありません。
メッセージ 3702、レベル 16、状態 4、行 1
データベース「練習」は現在使用中のため削除できません。
メッセージ 102、レベル 15、状態 1、行 2
'END' 付近の構文が正しくありません
何か不足しているのか、それとも回避策が必要なのかわかりません。
また、もしあれば、この目的に役立つより良い代替品に興味があります.
これが実現可能かどうかはわかりません。
よろしく、シャンクス