如何動態取得伺服器上的 SQL Server 執行個體

運用場景:

有些朋友開發的軟體在安裝的過程中,會需要在安裝同時對資料庫做相關的操作,如新增資料庫等,

所以需要將該機器上所執行的 SQL Server 的執行個體皆列出,讓使用者選擇要安裝在那一個執行個體,

要達到這個需求的方法很多,筆者分享如何使用 SMO 來做到這個功能:

 

使用下列的程式碼需先引用 Microsoft.SqlServer.Smo

程式碼:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Management.Smo.Wmi;

namespace SmoListSQLInstanceName
{
    class Program
    {
        static void Main(string[] args)
        {
            string machineName = ".";
            ManagedComputer computer = new ManagedComputer(machineName);

            foreach (ServerInstance serverInstance in computer.ServerInstances)
            {
                if (serverInstance.Name == "MSSQLSERVER")
                {
                    Console.WriteLine(serverInstance.Parent.Name);
                }
                else
                {
                    Console.WriteLine(serverInstance.Parent.Name + "\\" + serverInstance.Name);
                }
            }
        }
    }
}

 

Result:

image

從結果看到筆者的電腦裝有兩個SQL Server 執行個體,

我們便可以直接將這些字串加入到一個下拉選單,等使用者選擇後,再將之代入到 ConnetionString中 ,達到動態變換欲連線的 SQL Server 執行個體

 

筆者的環境為 Vista + SQL 2005 Dev with SP2 + Visual Studio 2005 Team Suit SP1 + Database Professional with SR1&Power Tool。