SQL Server:登录成功,但"无法访问数据库[dbName].(ObjectExplorer)"

Man*_*mar 43 sql-server login

我使用的是Windows 8.1和SQL Server 2012.

我使用操作系统帐户"Manoj"通过Windows身份验证访问SQL SERVER.最近我删除了操作系统的用户帐户"Manoj",并创建了一个名为"Manoj"的新帐户.

但该系统将新帐户视为"Manoj_2".这个改变使我无法访问我创建的旧数据库.

它说

无法访问数据库[dbName].(ObjectExplorer)

每当我尝试访问我创建的任何先前的数据库时.

我曾经在SQL Server中为"Manoj_2"创建新登录,默认DB为"master".但问题仍然存在.

我无法分离数据库.我无法扩展数据库.

注意:在操作系统中,我拥有"Manoj"帐户的管理员权限.

请有人告诉我,该怎么办?使用OS或SQL Server

Max*_*Max 31

对于这种情况,您必须以单用户模式连接到数据库.

以单用户模式启动SQL Server使计算机的本地Administrators组的任何成员都可以作为sysadmin固定服务器角色的成员连接到SQL Server实例.

在这里,您可以找到执行此操作的分步说明.

简而言之,在使用Windows身份验证启动Sql Server Management Studio之后,必须使用参数-m启动sqlserver实例.

现在您是一个sysadmin,将sysadmin角色分配给您的用户,退出并删除-m参数并重新启动sql server.


del*_*via 10

问题是数据库中的用户是"孤儿".这意味着没有与用户关联的登录ID或密码.即使存在与用户匹配的登录ID,也是如此,因为还存在必须匹配的GUID(在Microsoft中称为SID).

这曾经是一个痛苦的修复,但目前(SQL Server 2000,SP3)有一个存储过程,可以解决繁重的问题.

所有这些说明都应该作为数据库管理员完成,并选择已恢复的数据库.

首先,确保这是问题所在.这将列出孤立用户:

EXEC sp_change_users_login 'Report'
Run Code Online (Sandbox Code Playgroud)

如果您已拥有此用户的登录ID和密码,请执行以下操作进行修复:

EXEC sp_change_users_login 'Auto_Fix', 'user'
Run Code Online (Sandbox Code Playgroud)

如果要为此用户创建新的登录ID和密码,请执行以下操作进行修复:

EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'
Run Code Online (Sandbox Code Playgroud)

该文本来自Dez-13-2017的http://www.fileformat.info/tip/microsoft/sql_orphan_user.htm


Fio*_*ite 8

真的很愚蠢的解决方案,但我会在这里添加它,万一有人从谷歌搜索到这里.

我刚刚重新启动SQL服务并且收到了这个错误,在我的情况下,等待10分钟就足够了,它再次没问题了.似乎这是刚刚启动时出现的错误.

  • 奇怪的 !但为我工作。非常感谢分享。 (2认同)

Jua*_*gel 5

如果您使用的是 Sql Management Studio,只需以管理员身份启动即可。

右键->以管理员身份运行