SQL Server状态监视器

| 我的应用程序同时连接到3个SQL Server和5个数据库。我需要在状态栏中显示状态“ 0”。 我可以在这里使用任何想法/代码示例吗?此代码不应影响应用程序的速度或SQL Server的开销。 佛陀     
已邀请:
我认为您应该使用WMI(使用ServiceController类(带有此构造函数)。基本上,您查询sql服务器所在的服务器并检查其状态。 下面的示例假设您的应用程序是用c#编写的:
ServiceController sc = new ServiceController(\"MSSQLSERVER\", serverName); 
string status = sc.Status.ToString();
    
  \“此代码不应影响速度   应用程序或SQL的开销   服务器\” 这是Schroedinger的“猫”方案:为了知道给定远程服务或进程的当前状态,必须将消息序列化到网络上,等待响应,反序列化响应并对其进行操作。所有这些都需要所有涉及的机器的一些工作和资源。 但是,该工作可能在调用方的后台线程中完成,并且如果不经常调用,则可能不会以任何可衡量的方式影响目标服务器。 您可以使用SMO(SQL Server管理对象)连接到远程服务器,并可以通过SQL管理工具执行几乎所有操作,因为它们也使用SMO来发挥作用。这是一个非常简单的API,在正确的地方可以非常强大。 毫不奇怪,SMO确实要求您对要监视的框具有适当的权限。如果您没有/没有足够的权限,则可能要请友好的SQL amin团队发布一个简单的数据提要,以暴露所需的某些数据。 HTH。     
连接(验证连接)或连接失败(验证无连接)时,应用程序中会有一些开销,但是可以通过不定期检查来避免等待时间。     
我们使用以下SQL查询来检查特定数据库的状态
SELECT \'myDatabase status is:\' AS Description, ISNULL((select state_desc FROM sys.databases WITH (NOLOCK) WHERE name =\'myDatabase\'),\'Not Found\') AS [DBStatus]
这应该只有很少的开销,尤其是与诸如后台线程或异步线程的最佳实践结合使用时     
完全公开,我是Cotega的创始人 如果您对执行此操作的服务感兴趣,则我们的服务允许监视SQL Server的正常运行时间和性能。此外,您可以设置有关数据库不可用,性能下降,数据库大小或用户数量出现问题等的通知。     

要回复问题请先登录注册