SQL Server: как найти все имена экземпляра localdb

У меня есть две версии (2012, 2014) SQL Server Express LocalDB, установленные в моей системе.

Как найти все существующие имена экземпляров LocalDB?

Я нашел способ сделать это с помощью командной строки, как указано в разделе ответов.

Есть ли лучший и простой способ сделать это?

Ответы

Ответ 1

Я нашел утилиту 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.

Ответ 2

Если вы предпочитаете способ пользовательского интерфейса (может больше не работать с SSMS2019)

Просто откройте вашу SSMS и подключитесь к (LocalDB)\MSSQLLocalDB.
Теперь вы увидите все ваши LocalDB-инстансы.

Это работает по крайней мере с SS2016.

enter image description here

Ответ 3

Вот метод, который я использую, чтобы получить все экземпляры из командной строки -

    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;
    }

Ответ 4

В Visual Studio 2017 обозреватель объектов SQL Server покажет вам все экземпляры LocalDb