sql server由另一个用户创建登录和用户

时间:2011-03-02 09:59:18

标签: c# .net sql sql-server sql-server-2005

我正在使用SQL Server Express 2005。 我有一个数据库myDB

我在数据库myDB上创建了一个带有用户U-1的Login L-1。

要连接到数据库myDB,我发现了3种方法:

-1(a) - 在创建L-1使用默认数据库= myDB登录后,我必须创建一个用户U-1,当我连接到SQL服务器时,它就连接了。

我使用了这个查询:

create login L-1 with password='passL1'  , default_database = myDB

use myDB

create user U-1 for login L-1 

表示在登录中创建用户意味着隐式地为用户提供连接权限。我是对的吗?

-1(b)-I没有创建任何用户U-1,但执行了这个:

use myDB

sp_grantdbaccess L-1 

这也使我联系,原因是,sql在myDB数据库中隐式添加了一个名为L-1的用户。我是对的吗?

-1(c) - 这次,我没有创建任何用户U-1,但我执行了这个:

sp_changedbowner L-1  

这也使我联系,原因是,sql在myDB数据库中隐式添加了一个名为L-1的用户。我是对的吗?

现在,我想给1(a)中创建的用户U-1以下权限:

  1. 创建登录L-2,L-3
  2. 创建用户U2,U3,它也可以连接到数据库myDB。
  3. 我该怎么做?

1 个答案:

答案 0 :(得分:1)

是的 - 调用sp_grantdbaccesssp_changedbowner只会隐含地执行您通常使用CREATE USER执行的操作 - 没有区别。

明确调用CREATE USER只是更清晰,更明显的是你在做什么等。

另外:不再使用sp_grantdbaccess - 因为:

  

此功能将被删除   Microsoft SQL的未来版本   服务器。避免使用此功能   新的发展工作,并计划   修改当前使用的应用程序   此功能。请改用CREATE USER。

来源:Technet on sp_Grantdbaccess

也不要使用sp_changedbowner - 原因相同:

  

此功能将被删除   Microsoft SQL的未来版本   服务器。避免使用此功能   新的发展工作,并计划   修改当前使用的应用程序   此功能。使用ALTER AUTHORIZATION   代替。

来源:Technet on sp_changedbower