SQL Server: How to find all localdb instance names

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.

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


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