Sql server 为什么无法登录到还原的SQL Server 2012数据库?

Sql server 为什么无法登录到还原的SQL Server 2012数据库?,sql-server,windows-authentication,Sql Server,Windows Authentication,作为开发Windows服务工作的一部分,我将生产数据库恢复到同一SQL Server实例上的测试数据库,并且可以通过SSMS访问测试数据库。我将数据库的db_所有者角色授予了另外两个无法登录的用户,这两个用户都收到了SQL错误消息 错误:18456,严重性:14,状态:38。 登录有效但数据库不可用(或不允许登录) 下面是一条基本信息,其中提到了问题所在的数据库 用户“NT AUTHORITY\SYSTEM”登录失败。原因:无法打开显式指定的数据库“MedFile\u TestDataServe

作为开发Windows服务工作的一部分,我将生产数据库恢复到同一SQL Server实例上的测试数据库,并且可以通过SSMS访问测试数据库。我将数据库的db_所有者角色授予了另外两个无法登录的用户,这两个用户都收到了SQL错误消息

错误:18456,严重性:14,状态:38。
登录有效但数据库不可用(或不允许登录)

下面是一条基本信息,其中提到了问题所在的数据库

用户“NT AUTHORITY\SYSTEM”登录失败。原因:无法打开显式指定的数据库“MedFile\u TestDataServer”。[客户:]

数据库未处于“还原”状态

第一个用户是
NT Authority\System
,第二个用户是Windows用户。这两个凭据都用于运行以更新模式访问数据库的Windows服务、来自同一服务器的系统用户、来自VS2013的Windows用户,这些用户在我的桌面上作为命令程序运行该服务。两者都可以通过更改数据库名称来获取同一数据库的其他副本,因此不要认为存在连接字符串问题。我比较了数据库中的每个属性,这些属性可以工作,也可以不工作,除了文件名之外,没有任何区别,这两个登录名对它们可以访问的数据库的权限更少

几乎就像这个数据库在恢复后不可用,但我在数据库上找不到这样的属性集,我可以通过SSMS访问。我已经重新启动了包含ergo SQL server数据库的服务器

我还尝试以数据库管理员的身份运行该服务,但得到了相同的错误,即使该用户通过SSMS访问数据库也没有问题

是否有任何东西可以使数据库“不可用”


这是尝试使用测试数据库的Windows服务软件开发的一部分。我同时使用EF 6.02和最新的ADO.NET版本。

您能检查这两个用户的默认数据库是什么吗


如果您(意外/故意)为SQL Server登录用户设置了默认数据库,而该用户没有访问该数据库的权限,则会出现此错误。

检查您的数据库是否将“自动关闭”属性设置为“真”。如果是,请将其更改为“False”


您可以从SSMS中看到它:右键单击数据库-属性-选项。

Windows用户是否能够通过SSMS访问还原的数据库?是否检查数据库用户是否绑定到服务器登录名(即孤立用户)?@Dave-数据库用户确实显示他们映射到了相同的登录名。@Sujay-是,我可以登录到服务器,启动SSMS,访问数据库,一切都很好。为什么要投两票来结束这个问题?不够老练,不适合问警察,还是我做了其他的假乞丐?有效的问题包括:程序员常用的软件工具;这是一个实际的、可回答的问题,是软件开发特有的。两个数据库都有其他的db默认值,所以将它们设置为这个数据库,但没有帮助。下面是一条基本信息,其中提到了问题所在的数据库。“用户‘NT AUTHORITY\SYSTEM’登录失败。原因:无法打开显式指定的数据库‘MedFile_TestDataServer’。[客户端:”“能否尝试将主数据库设置为默认数据库?系统用户将主数据库设置为默认数据库。”。在任何情况下,如果错误没有抱怨该数据库,那又有什么好处呢?Fwiw,所有用户现在都将master作为默认db.Thx,但Auto Close被设置为false。这将我保存在一个SQL Express数据库上,该数据库在运行复杂查询以在IIS上提供页面服务后拒绝AJAX连接。