SSMS删除bacpac导入库后访问其他库报对象数据检索失败错误
故障根因
这是导入数据层应用(bacpac)时的默认配置触发的典型问题:使用SSMS的「Import Data-Tier Application」向导导入bacpac文件时,流程默认会勾选将当前执行导入操作的登录账号的默认数据库设置为新导入的数据库选项,绝大多数用户操作时不会特意取消这个勾选。
你删除测试导入的数据库后,对应登录账号的默认数据库配置没有同步修改,仍然指向已经被删除的库。后续你通过SSMS连接实例、检索服务器对象时,客户端会首先尝试连接登录属性中配置的默认数据库,因为目标库不存在直接触发4060登录失败错误,你看到的连接中断、对象检索失败、连接恢复失败都是这个根因引发的连锁报错——本地实例上的其他原有数据库本身没有任何损坏,不需要做数据修复。
解决步骤
- 绕开默认数据库配置连接实例
打开SSMS连接服务器的弹窗,不要直接点击连接,点击弹窗右下角的「选项」按钮,切换到「连接属性」标签页,将「连接到数据库」项手动指定为master,再点击连接,此时可以正常连上实例,不会触发找不到数据库的报错。 - 修正登录账号的默认数据库配置
成功连接到master库后,执行如下T-SQL语句,将对应登录账号的默认数据库修改为实例中现存的有效数据库(可以直接设为master,也可以改成你日常使用的业务库),执行前将语句中的占位符替换为实际信息:
如果使用Windows身份验证登录,账号名格式为ALTER LOGIN [你使用的登录账号名] WITH DEFAULT_DATABASE = [现存的有效数据库名];机器名\Windows用户名或域名\域账号名;如果使用SQL身份验证,直接填写SQL账号名即可。 - 验证修复结果
断开当前SSMS连接,重新按常规方式连接本地实例,不需要手动指定连接到master库,此时即可正常浏览所有现存数据库、执行查询操作,之前的所有报错会完全消失。
避坑说明
- 后续执行bacpac导入操作时,在向导的最终配置确认页,注意取消将新数据库设为登录默认数据库的勾选,即可避免同类问题。
- 日常删除数据库前,可以先检查是否有登录账号将待删除库设为默认数据库,提前调整配置后再执行删库操作。
内容的提问来源于stack exchange,提问作者user2128702
相关产品推荐
相关产品推荐

