如何检查数据库是否存在?

时间:2011-11-18 17:53:19

标签: c# sql-server-2008

我想检查数据库是否作为其他数据库的“发布者”工作。

为此,我正在计划检查该实例上是否存在数据库“分发”。

阅读this之后我认为我可以做到

new Sqlcommand("SELECT name FROM master.dbo.sysdatabases WHERE name = @name")

并解决了我的问题...但我的数据库中没有那个表...:s

还有另一种方法可以解决我的问题吗?

3 个答案:

答案 0 :(得分:1)

假设您有足够的权限查看数据库元数据,可以使用

SELECT CASE
         WHEN DB_ID('distribution') IS NULL THEN 0
         ELSE 1
       END AS distributionExists  

答案 1 :(得分:1)

如果您想知道数据库是否是发布者,那么查找分发服务器是错误的检查。数据库可以有一个远程分发服务器,在这种情况下,您将获得误报。或者分销商可能存在,但数据库可能不是出版商,在这种情况下,您会得到误报。更不用说分发数据库可能有任何名称,因此查找名为distribution的数据库也是错误的。

正确的方法是起诉内置的复制助手程序:

此外,可以在sys.databases中找到数据库是发布者,订阅者还是分发者的简单事实:

  
      
  • is_published 数据库是a中的发布数据库   事务或快照复制拓扑。
  •   
  • is_merge_published 数据库是合并复制拓扑中的发布数据库。
  •   
  • is_subscribed 数据库是a中的订阅数据库   复制拓扑。
  •   
  • is_distributor 数据库是分发版   复制拓扑的数据库。
  •   

答案 2 :(得分:0)

select *
from sys.databases
where name = @name

非常接近。它看起来像是SQL Server 2000目录视图。你要找的是查询sys.databases