2011-02-12 123 views
1

我總是使用以下代碼在SQL Server中刪除數據庫。這兩種刪除數據庫的方法有什麼區別?

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

Paul S Randal的MCM的視頻,我看到這樣的代碼:

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

有什麼diffference?第二種方式比第一種更快嗎?

謝謝。

回答

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。已關閉數據庫的版本號爲空。刪除已關閉的數據庫或使用脫機文件的數據庫不會從磁盤刪除文件。

除此之外,性能不是問題。

相關問題