22

How to check in c# code if LocalDB currently installed? also, how to check if SQLNCLI11 presents in system?

ZedZip
  • 5,794
  • 15
  • 66
  • 119

4 Answers4

16

Check if LocalDB is installed, by looking for this registry key:

[HKLM\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\11.0]

SQLNCLI11 - check the file version and presence of this file: C:\WINDOWS\system32\sqlncli.dll

shA.t
  • 16,580
  • 5
  • 54
  • 111
ErikEJ
  • 40,951
  • 5
  • 75
  • 115
  • I have a little confusion. Need to know a little something to clear. In MS Visual Studio 2010, I can create database and work with it. (probably MS SQL Server express, which is by default integrated with VS 2010). Is it what we're refering as LocalDB? – Zeeshan Nov 28 '13 at 06:27
  • No, not exactly the same, but similar products – ErikEJ Nov 28 '13 at 10:25
  • This won't work if the user uninstalls localdb. The key is not removed. – P a u l Jun 03 '14 at 17:53
  • You might try HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup – P a u l Jun 03 '14 at 18:09
3

Here is a VB.NET example checking for LOCALDB

Public Shared Function CheckLocalDBExists() As Boolean
    Dim s As String = ""
    Dim reg As RegistryKey
    Dim rtn As Boolean = False
    reg = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\12.0", True)
    Try
        s = reg.GetValue("ParentInstance", "").ToString
        reg.Close()
    Catch ex As Exception
        s = Nothing
    End Try
    'MessageBox.Show(s)
    If s = "MSSQL12E.LOCALDB" Then
        rtn = True
    End If
    Return rtn
End Function
Scott
  • 143
  • 1
  • 9
  • Note: This test is for localdb 2014. For 2012 you need to check for installed version 11.0 and MSSQL11E.LOCALDB. (sorry for any confusion) – Scott Jul 18 '16 at 14:36
3

I'm using the answer to this question to check for the existence of sqllocaldb.exe

Like so:

public static bool IsLocalDBInstalled()
{
    return ExistsOnPath("SqlLocalDB.exe"); ;
}

public static bool ExistsOnPath(string fileName)
{
    return GetFullPath(fileName) != null;
}

public static string GetFullPath(string fileName)
{
    if (File.Exists(fileName))
        return Path.GetFullPath(fileName);

    var values = Environment.GetEnvironmentVariable("PATH");
    foreach (var path in values.Split(';'))
    {
        var fullPath = Path.Combine(path, fileName);
        if (File.Exists(fullPath))
            return fullPath;
    }
    return null;
}
Community
  • 1
  • 1
JochemKempe
  • 2,566
  • 2
  • 16
  • 12
2

I found this nuget package that wraps up working with SQLLocalDB Has the following command

SqlLocalDbApi.IsLocalDBInstalled()
Lord Darth Vader
  • 1,895
  • 1
  • 17
  • 26