sqllocaldb error code 17892 : Logon failed for login due to trigger execution. Changed database context to‘master’.
不知道怎么肥4,过完年之后再登录Localdb就出现了这个错误,而且实例无法停止,执行 sqllocaldb stop instancename
报错。由于IT经理要求使用Localdb作为研发数据库因此不得不想办法解决这个问题。网络上的方法基本上都试过了,而且相关的资料非常的少,下面分享下解决方案:
- 1. 备份数据库文件
找到项目的数据库文件进行备份。 - 2. 修改注册表
输入regedit
打开注册表管理器,找到KEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\UserInstances
目录
在 UserInstances
中所列出的文件夹即为你当前系统中的数据库实例。倘若你创建了N个实例,你可以通过右侧的 DataDirectory
项的值来区分是哪个实例,该项值是一个文件夹路径,最后一个斜杠后面的即为你的实例名称:
将 MSSQLLocalDB
重命名为 MSSSQLLocalDB_old
点击确定。
此时你在 cmd
或 powershell
中运行 sqllocaldb i
时将会显示新旧两个名称的实例,不用担心,也不用管它。执行下一步操作后一切都会恢复正常。
- 3.创建实例
在控制台或powershell
中执行创建实例命令sqllocaldb create MSSQLLocalDB
然后启动实例sqllocaldb start MSSQLLocalDB
接下来再执行sqllocaldb i
你会发现之前我们命名为MSSQLLocalDB_old
的实例已经消失了,而且注册表中的项和值也恢复正常(MSSQLLocalDB_old
已被自动清理)。 - 4.恢复数据库
接下来就是最后一步,通过ssms工具登录localdb后,将之前备份的数据库恢复到当前实例中即可。