List all Microsoft SQL Server / Instance Names

查出在一台伺服器中,同時安裝多少個執行個體(Instance)

最近開發 KONNEX (KNX)相關的程式,這個協會有提供特定的軟體給使用者設定並開發,其中也會安裝資訊庫。如果要自動設定 physical address 就必須讀取相關的 firmware info.  又要配合專案......唉,真是一言難盡。
以下是針對未來使用者可藉由不同的執行個體(Instance)名稱,作為存取資料庫系統依據的程式碼
-----------------------------------------------------------
    Sub ScanSQLInstance()
        '指定在 64 位元作業系統上以哪個登錄檢視為目標
        Dim RV As RegistryView
        If Not Registry.LocalMachine.OpenSubKey("SOFTWARE\Wow6432Node") Is Nothing Then
            RV = RegistryView.Registry64
        Else
            RV = RegistryView.Registry32
        End If
        '登錄機碼節點
        Dim baseKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RV)
        '節點下的子機碼
        Dim key As RegistryKey = baseKey.OpenSubKey("SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL")

        ListBox1.Items.Add(key.Name)
        ListBox1.Items.Add("-----------------------------------------------")
        '列出所有機碼名稱的字串陣列
        For Each s As String In key.GetValueNames()
            ListBox1.Items.Add(s)
        Next
        '收工  ^^
        key.Close()
        baseKey.Close()
    End Sub

搜尋含區域網路內sql執行個體
Using System.Data.Sql

Dim sqlServer As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance
Dim db As DataTable = sqlServer.GetDataSources()
Dim Name As String() = New String(db.Rows.Count - 1) {}
For i As Integer = 0 To db.Rows.Count - 1
Name(i) = db.Rows(i)(0).ToString() + db.Rows(i)(1).ToString().Trim()
toolStripTextBox1.Items.Add(Name(i))
Next

沒有留言:

張貼留言