web-dev-qa-db-ja.com

SQL Server:すべてのlocaldbインスタンス名を見つける方法

システムにインストールされているSQL Server Express LocalDBの2つのバージョン(2012、2014)があります。

既存のすべてのLocalDBインスタンス名を見つけるにはどうすればよいですか?

回答セクションで述べたように、コマンドラインを使用してそれを行う方法を見つけました。

より良い簡単な方法はありますか?

32
vineel

コマンドラインで実行する必要があるSqlLocalDBユーティリティが見つかりました。

SqlLocalDBは次の場所にあります

C:\Program Files\Microsoft SQL Server\110\Tools\Binn

または

C:\Program Files\Microsoft SQL Server\120\Tools\Binn

既存のすべてのLocalDBインスタンス名を取得するには、次を使用します。

SqlLocalDB.exe i

 info|i
  Lists all existing LocalDB instances owned by the current user
  and all shared LocalDB instances.

特定のLocalDBインスタンスに関する詳細情報を取得するには:

SqlLocalDB.exe i "MSSQLLocalDB"

info|i "instance name"
  Prints the information about the specified LocalDB instance.
50
vineel

UIの方法をお望みの場合(SSMS2019では動作しなくなる可能性があります)

SSMSを開いて(LocalDB)\MSSQLLocalDB
これで、すべてのLocalDBインスタンスが表示されます。

これは少なくともSS2016で機能します。

enter image description here

13
Legends

Visual Studio 2017では、SQL ServerオブジェクトエクスプローラーにすべてのLocalDbインスタンスが表示されます

5
Ricky Keane

コマンドラインからすべてのインスタンスを取得するために使用している方法は次のとおりです-

    internal static List<string> GetLocalDBInstances()
    {
        // Start the child process.
        Process p = new Process();
        // Redirect the output stream of the child process.
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.FileName = "cmd.exe";
        p.StartInfo.Arguments = "/C sqllocaldb info";
        p.StartInfo.CreateNoWindow = true;
        p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        p.Start();
        // Do not wait for the child process to exit before
        // reading to the end of its redirected stream.
        // p.WaitForExit();
        // Read the output stream first and then wait.
        string sOutput = p.StandardOutput.ReadToEnd();
        p.WaitForExit();

        //If LocalDb is not installed then it will return that 'sqllocaldb' is not recognized as an internal or external command operable program or batch file.
        if (sOutput == null || sOutput.Trim().Length == 0 || sOutput.Contains("not recognized"))
            return null;
        string[] instances = sOutput.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
        List<string> lstInstances = new List<string>();
        foreach (var item in instances)
        {
            if (item.Trim().Length > 0)
                lstInstances.Add(item);
        }
        return lstInstances;
    }
5
Ram