sql本地数据库实例不存在

时间:2018-01-05 03:06:20

标签: localdb

  1. 我成功创建了一个本地系统帐户实例。 然后我用“info”命令检查了实例信息,显示了实例的所有信息。 但几秒钟后我再次运行“info”命令,实例被删除了。 为什么删除了实例? localdb instance was deleted
  2. 我在本地系统帐户下运行窗口服务。 此服务可以使用“MSSQLLocalDB”实例连接到SQL本地数据库,但是虽然私有实例是共享的,但无法使用私有实例进行连接。 请各位给我一个解决这个问题的建议,好吗?

1 个答案:

答案 0 :(得分:0)

一般观察

Local System创建的LocalDB实例存在问题。请参阅MS doc for SQL LocalDB

中的以下内容

enter image description here

我遇到过你提到的两个问题。 我找到了这些的解决方法以及许多其他相关问题,但这是一个痛苦的过程。如果我不得不重新开始,我会听取微软的建议并避免本地系统拥有的实例,或使用SQL LocalDB之外的其他东西。

注意事项:

  • 以下信息仅适用于Local拥有的实例 系统。下面的文件路径,注册表项和警告是 正常Windows帐户拥有的实例不同。
  • 在32位Windows中运行时,某些路径可能会有所不同 - 我只使用64位 视窗。

回答问题1

最有可能的是,您的实例已损坏,未被删除。尝试再次创建实例。如果创建不成功,则现有的损坏实例会阻止重新创建,删除和连接。此类损坏可能发生在64位进程中由本地系统帐户创建的实例中,但随后在32位进程中进行访问,该进程也作为本地系统运行(反之亦然)。

我发现完全删除损坏的实例的唯一方法是

  1. 从此处删除损坏实例的文件夹(如果在64位进程中创建):

    • C:\ Windows \ System32 \ config \ systemprofile \ AppData \ Local \ Microsoft \ Microsoft SQL Server本地数据库\实例\ {实例名称}

      或此处(如果在32位进程中创建):

    • C:\ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ Microsoft \ Microsoft SQL Server本地数据库\实例\ {实例名称}

  2. 并删除相关的注册表项。

    • HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server Local 数据库\共享实例\ {实例名称} - (只有您这样才存在) 共享实例)
    • HKEY_USERS \ S-1-5-18 \ Software \ Microsoft \ Microsoft SQL Server \ UserInstances \ { GUID } - (选择其DataDirectory路径值以...结尾的GUID实例名称)
  3. 毕竟,在再次创建实例时,请确保您从具有相同“位数”(32或64)的进程创建和访问实例。这是繁琐且难以实施的,除非您拥有该机器并控制对它的所有访问。

    回答问题2

    我发现通过作为本地系统运行的进程连接到本地系统所拥有的LocalDB实例的唯一一致方法是指定命名管道连接字符串中实例的地址。即,

    Server=np:\\.\pipe\LOCALDB#xxxxxxxx\tsql\query
    

    取代

    Server=(localdb)\.\{instance name}
    

    您可以使用sqllocaldb.exe工具找到LocalDB实例的命名管道地址,使用以下语法:

    sqllocaldb info {instance name}
    

    您可能在不同的操作系统(32位与64位)或不同版本的SQL LocalDB或其组合上取得了成功,但我发现只有在使用命名管道地址进行连接时才能取得成功。尝试通过实例名称进行连接可能无法连接,甚至更糟糕的是,会破坏实例,如问题#2的答案中所述。