理解和处理SQL Server数据库中的孤立用户
2008-10-22 10:07:33 来源:WEB开发网问题
把数据库从一个服务器实例附加和恢复到另一个实例中是数据库管理员执行的常见的任务。附加或者恢复一个数据库之后,之前在数据库中创建和配置的登录名已经不能访问了。这个问题最常见的症状是应用程序会遇到登录失败的错误,或者是当你试着把登录名添加到数据库中时,你可能会得到一个信息比如这个用户已经在这个数据库中存在。当你执行一个附加或者一个恢复时,这是很常见的一种情况,那么你如何解决这个问题呢?
专家解答
当数据库从一个服务器迁移到另一个服务器时,存储在主从数据库中的登录名ids与存储在每个用户数据库中的登录名ids不符合。正如上面所说的,附加或恢复一个数据库之后你会看到的一些错误包括:
Msg229,Level14,State1
%spermissiondeniedonobject%.*s,database%.*s,owner%.*s
或者
Microsoft SQL-DMO (ODBC SQLState: 42000) Error 15023: User or role '%s' already exists in the current database.
没有正确的理解和适当的计划,你可能会遇到这个问题。你可能会删除和重新创建这个用户,但是你将释放所有配置的权限。所以一个正确的链接机制是需要的,因此要保留权限。
你可能看到的一些可能的错误信息包括
在开始这个问题的解决方案之前,最好看看反方向的问题。存储在主从数据库中的SQL Server 登录名映射到个别的数据库中。SQL Server 登录名通过使用映射到适当的SQL Server 登录名的数据库用户来访问个别的数据库。有两种情况例外,那就是来宾帐户和Microsoft Windows组成员身份。服务器实例上的SQL Server 2005登录名在sys.server_principals系统目录视图和sys.syslogins视图上是可见的。对于SQL Server 2000,你可以在sysxlogins表中得到SQL Server登录名信息。
更多精彩
赞助商链接