2012-07-16 73 views
0

我的数据库所有者没有对master数据库的任何权限,并且正在查找是否存在SQL Server服务器以及数据库是否存在的方式服务器。如何确定是否存在SQL服务器或数据库

+0

这似乎是一个有效的问题,所以upvoted,但很高兴看到你已经尝试过。 – dmp 2012-07-16 13:08:05

+1

投票结束后,人们应该写出理由,以便我也能找到弱点。 – Abdul 2012-07-16 14:28:19

回答

0

您可以使用SMO来管理SQL Server对象模型。

0

首先让我们检查一下sqlserver的实例是否在本地机器上可用。

这可以通过SMO(reference of SMOanother reference)像

using Microsoft.SqlServer.Management.Smo; 

DataTable dataTable = SmoApplication.EnumAvailableSqlServers(true);//if true is passed it 
//will enumerate local instance only. 

foreach (DataRow dataRow in dataTable) 
{ 
    if ((dataRow["Server"] as string) == "MyServerName") 
     Console.WriteLine(dataRow["Instance"] as string); 
} 

然后进行检查,如果所需的数据库,可以用这样的:

使用函数DB_ID返回数据库的标识如果存在,否则为空。示例T-SQL如下:

if (db_id('INVENTORY') is null) 
begin 
    return 0 
end 
else 
begin 
    return 1 
end 

希望这有助于。

+0

我已经在现有主题中看到过这个答案。这是一个较慢的过程,它在查询服务器实例中占用太多时间。实际上,在我的桌面应用程序场景中,我想测试每次当桌面应用程序启动时实例是否正在运行以及数据库是否已启动。大部分时间(90%)的数据库都会启动。使用上述方法,查询服务器实例需要一些额外的时间,这将使应用程序启动速度变慢。 – Abdul 2012-07-16 14:20:45