2008-10-02 75 views

回答

95

我想通了。在SQL Management Studio中,您必须右键单击数据库 - >属性 - >文件 - >所有者字段。将此字段更改为您希望与该数据库的“dbo”用户名关联的登录名/帐户。请记住,您选择的登录名称/帐户必须已经在安全性 - >登录下的sql server中设置。

0

这是Windows登录名,而不是SQL Server登录名,因此您无法“更改”登录名,因为它已链接到Active Directory中的用户帐户。

创建映射到新窗口用户的新服务器登录(Windows)(并在必要时删除旧的用户)。然后在登录的安全>用户映射,权限,该权限登录到相应的数据库用户“DBO”(或分配到db_owner角色)

+1

我怀疑您没有正确理解SQL Server安全模型。 *整个服务器实例*具有与服务器关联的**登录**。这些可能是SQL或Windows登录。服务器上的每个数据库都有许多**用户**,并有权访问该数据库。数据库**用户**与SQL **登录**相关联,这些登录**通常(但不是必须)是相同的。 ** dbo **是每个数据库上的*特殊用户*。 OP没有试图和一个新的拥有数据库的db_owner权限的任意用户 - 他试图将不同的服务器登录与标准的** dbo **用户相关联。 – 2012-06-19 09:07:42

5

如果你想重新映射登录到分贝用户可以使用sp_change_user_login

exec sp_change_user_login'Update_One','user','login'

+1

sproc看起来像是'sp_change_users_login'(即_users_)。仅供参考,BOL还声明不推荐使用,并且将来应该使用ALTER USER。 – 2010-11-26 11:12:14

+1

虽然通常这会起作用,但存储过程非常具体**拒绝**尝试以这种方式更改** dbo **用户。 – 2012-06-19 08:59:44

0

PantomTypist使用GUI给出了一个很好的答案。为了达到与TSQL相同的结果,您可以使用以下代码:

USE [My_Database_Name] 
GO 
EXEC dbo.sp_changedbowner @loginame = N'domain\abc', @map = false 
GO