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