2012-04-24 88 views
0

使用SQL查詢或WMI,我想要檢索是否啓用SQL協議(如命名管道,TCP/IP)。檢索SQL協議狀態

我需要爲SQL Server 2000,2005年做到這一點,2008年

謝謝。

回答

1

WMI Provider for Configuration Management Classes包括ServerNetworkProtocol WMI類,其中列出安裝的Microsoft SQL Server實例的協議,這個類位於root\Microsoft\SqlServer\ComputerManagement10命名空間(SQL Server 2008中,在其他版本中,你必須修改命名空間)。

檢查這個C#示例

using System; 
using System.Collections.Generic; 
using System.Management; 
using System.Text; 

namespace GetWMI_Info 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      try 
      { 
       string ComputerName = "localhost"; 
       ManagementScope Scope;     

       if (!ComputerName.Equals("localhost", StringComparison.OrdinalIgnoreCase)) 
       { 
        ConnectionOptions Conn = new ConnectionOptions(); 
        Conn.Username = ""; 
        Conn.Password = ""; 
        Conn.Authority = "ntlmdomain:DOMAIN"; 
        Scope = new ManagementScope(String.Format("\\\\{0}\\root\\Microsoft\\SqlServer\\ComputerManagement10", ComputerName), Conn); 
       } 
       else 
        Scope = new ManagementScope(String.Format("\\\\{0}\\root\\Microsoft\\SqlServer\\ComputerManagement10", ComputerName), null); 

       Scope.Connect(); 
       ObjectQuery Query = new ObjectQuery("SELECT * FROM ServerNetworkProtocol"); 
       ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Scope, Query); 

       foreach (ManagementObject WmiObject in Searcher.Get()) 
       { 
        Console.WriteLine("{0,-35} {1,-40}","ProtocolDisplayName",WmiObject["ProtocolDisplayName"]);// String 
        Console.WriteLine("{0,-35} {1,-40}","Enabled",WmiObject["Enabled"]);// Boolean 
        Console.WriteLine("{0,-35} {1,-40}","InstanceName",WmiObject["InstanceName"]);// String 
        Console.WriteLine("{0,-35} {1,-40}","MultiIpConfigurationSupport",WmiObject["MultiIpConfigurationSupport"]);// Boolean 
        Console.WriteLine("{0,-35} {1,-40}","ProtocolName",WmiObject["ProtocolName"]);// String 
        Console.WriteLine(); 


       } 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(String.Format("Exception {0} Trace {1}",e.Message,e.StackTrace)); 
      } 
      Console.WriteLine("Press Enter to exit"); 
      Console.Read(); 
     } 
    } 
} 

這將返回這樣的事情

ProtocolDisplayName     Shared Memory 
Enabled        True 
InstanceName      MSSQLSERVER 
MultiIpConfigurationSupport   False 
ProtocolName      Sm 

ProtocolDisplayName     Named Pipes 
Enabled        False 
InstanceName      MSSQLSERVER 
MultiIpConfigurationSupport   False 
ProtocolName      Np 

ProtocolDisplayName     TCP/IP 
Enabled        True 
InstanceName      MSSQLSERVER 
MultiIpConfigurationSupport   True 
ProtocolName      Tcp 

ProtocolDisplayName     VIA 
Enabled        False 
InstanceName      MSSQLSERVER 
MultiIpConfigurationSupport   False 
ProtocolName      Via 
+0

thanx的幫助,但是上面的代碼拋出一個異常在我的Windows Server 2008 64位。 – John 2012-04-24 09:33:58

+0

你收到什麼錯誤? – RRUZ 2012-04-24 10:02:16

+0

自動化錯誤,系統找不到指定的文件 – John 2012-04-24 12:41:13