2011-02-12 121 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。已关闭数据库的版本号为空。删除已关闭的数据库或使用脱机文件的数据库不会从磁盘删除文件。

除此之外,性能不是问题。

相关问题