我正在使用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以下权限:
我该怎么做?
答案 0 :(得分:1)
是的 - 调用sp_grantdbaccess
或sp_changedbowner
只会隐含地执行您通常使用CREATE USER
执行的操作 - 没有区别。
明确调用CREATE USER
只是更清晰,更明显的是你在做什么等。
另外:不再使用sp_grantdbaccess
- 因为:
此功能将被删除 Microsoft SQL的未来版本 服务器。避免使用此功能 新的发展工作,并计划 修改当前使用的应用程序 此功能。请改用CREATE USER。
来源:Technet on sp_Grantdbaccess
也不要使用sp_changedbowner - 原因相同:
此功能将被删除 Microsoft SQL的未来版本 服务器。避免使用此功能 新的发展工作,并计划 修改当前使用的应用程序 此功能。使用ALTER AUTHORIZATION 代替。