43
votes

I have two versions (2012, 2014) of SQL Server Express LocalDB installed in my system.

How can I find all existing LocalDB instance names?

I found a way to do that using command line as mentioned in the answers section.

Is there a better and easy way to do it?

5

5 Answers

68
votes

I found SqlLocalDB utility that needs to be run on command line.

SqlLocalDB can be found in

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

or

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

To get all existing LocalDB instance names, use:

SqlLocalDB.exe i

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

To get detailed information about a specific LocalDB instance:

SqlLocalDB.exe i "MSSQLLocalDB"

info|i "instance name"
  Prints the information about the specified LocalDB instance.
21
votes

To list all localdb instances, take a look vineel's answer below!


If you want to list all databases of your default localdb instance using UI, look here (might not work with SSMS2019 anymore):

Just open your SSMS and connect to (LocalDB)\MSSQLLocalDB.
Now you will see all your LocalDB-Instances.

This works at least with SS2016.

enter image description here

6
votes

Here is the method i am using to get all instances from command line -

    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
votes

In Visual Studio 2017 the SQL Server Object Explorer will show you all of the LocalDb instances

1
votes

In Visual Studio 2019 Server Explorer (or SQL Server Object Explorer button there) click "Add SQL Server" button

Add SQL Server Button

and expand the Local tab to view the list of local SQL Server currently running services it finds. Only when you connect to the selected server it will get listed in SQL Server Object Explorer:

SQL Server Object Explorer