2011-02-12 6 views
1

私は常に次のコードを使用してSQL Serverにデータベースをドロップします。データベースを削除するこれらの2つの方法の違いは何ですか?

IF DB_ID('mydatabase') IS NOT NULL 
    DROP DATABASE mydatabase; 

しかしPaul S RandalさんMCMビデオで、私はこのようなコードを見た:

IF DATABASEPROPERTYEX ('mydatabase', 'Version') > 0 
    DROP DATABASE mydatabase; 

diffferenceは何ですか?第2の方法は最初の方法より速いのですか?

ありがとうございました。

答えて

3

大きな違いはありません。私はあなたに別のオプションを与えます:

IF EXISTS(
    select * 
    from master.sys.databases 
    where name = 'mydatabase') 
DROP DATABASE mydatabase; 

同じことをする方法は常にたくさんあります。しかし、個人的な経験から、DB_IDは書き出すのが最短で、おそらくは最速です。

3

基本的には違いはありません。 IFステートメントは、DROP DATABASEコマンドを呼び出すとき(つまり、存在のチェック)にエラーを受け取らないようにするためのものです。 [今すぐ

そして、このようなDROP DATABASEのような高コストのアクションで、相違点は、それぞれの存在チェックに継承ミリ秒は多少ある...無関係な..

あなたはデータベースに関する情報を探していた場合には、DATABASEPROPERTYEX非常に便利なツールです。

1

データベースが存在するかどうかを知りたい場合は、削除できるようにするにはDB_IDを使用します。

開いているデータベースのみを削除する場合は、DATABASEPROPERTYEXを使用します。クローズされたデータベースのバージョン番号はnullです。閉じたデータベースやオフラインファイルを削除しても、ファイルはディスクから削除されません。

それ以外は、パフォーマンスは問題になりません。

関連する問題