【问题标题】:SQL2012 LocalDB: how to check in c# if it is currently installed?SQL2012 LocalDB:如果当前已安装,如何检查 c#?
【发布时间】:2012-07-24 09:51:11
【问题描述】:

如果当前安装了 LocalDB,如何检查 c# 代码?另外,如何检查系统中是否存在SQLNCLI11?

【问题讨论】:

    标签: sql-server-2012 localdb


    【解决方案1】:

    通过查找此注册表项检查是否安装了 LocalDB:

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

    SQLNCLI11 - 检查文件版本和此文件是否存在:C:\WINDOWS\system32\sqlncli.dll

    【讨论】:

    • 我有点困惑。需要知道一些事情来清除。在 MS Visual Studio 2010 中,我可以创建数据库并使用它。 (可能是 MS SQL Server express,默认情况下与 VS 2010 集成)。是我们所说的 LocalDB 吗?
    • 不,不完全相同,但产品相似
    • 如果用户卸载 localdb,这将不起作用。密钥未删除。
    • 你可以试试 HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
    【解决方案2】:

    这是一个检查 LOCALDB 的 VB.NET 示例

    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
    

    【讨论】:

    • 注意:此测试适用于 localdb 2014。对于 2012,您需要检查安装的版本 11.0 和 MSSQL11E.LOCALDB。 (抱歉有任何混淆)
    【解决方案3】:

    我正在使用the answer to this question 检查sqllocaldb.exe是否存在

    像这样:

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

    【讨论】:

      【解决方案4】:

      我发现了这个 nuget 包,它结束了使用 SQLLocalDB 有以下命令

      SqlLocalDbApi.IsLocalDBInstalled()
      

      【讨论】:

        猜你喜欢
        • 2012-09-30
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-02
        • 2019-11-21
        • 2013-03-24
        相关资源
        最近更新 更多