sql常用系统储存过程 - addlogin

sp_addlogin
 创建新的 Microsoft? SQL Server? 登录,

 语法:
 sp_addlogin [ @loginame = ] 'login'
     [ , [ @passwd = ] 'password' ]
     [ , [ @defdb = ] 'database' ]
     [ , [ @deflanguage = ] 'language' ]
     [ , [ @sid = ] sid ]
     [ , [ @encryptopt = ] 'encryption_option' ]

sp_adduser
 为当前数据库中的新用户添加安全帐户。包括此过程是为了向后兼容。请使用 sp_grantdbaccess。

 语法:
 sp_adduser [ @loginame = ] 'login'
     [ , [ @name_in_db = ] 'user' ]
     [ , [ @grpname = ] 'group' ]

sp_addrolemember
 将安全帐户作为当前数据库中现有 Microsoft? SQL Server? 数据库角色的成员进行添加。

 语法:
 sp_addrolemember [ @rolename = ] 'role' ,
     [ @membername = ] 'security_account'

sp_droprolemember
 从当前数据库中的 Microsoft? SQL Server? 角色中删除安全帐户。
 语法:
  sp_droprolemember [ @rolename = ] 'role' ,
      [ @membername = ] 'security_account'

sp_dropuser
 从当前数据库中删除 Microsoft? SQL Server? 用户或 Microsoft Windows NT? 用户。提供 sp_dropuser 是为了向后兼容。使用 sp_revokedbaccess 删除用户。

 语法:
  sp_dropuser [ @name_in_db = ] 'user'

sp_droplogin
 删除 Microsoft? SQL Server? 登录,以阻止使用该登录名访问 SQL Server。

 语法:
  sp_droplogin [ @loginame = ] 'login'

sp_password
 添加或更改 Microsoft? SQL Server? 登录的密码。

 语法:
  sp_password [ [ @old = ] 'old_password' , ]
      { [ @new =] 'new_password' }
      [ , [ @loginame = ] 'login' ]

sp_defaultdb
 更改登录的默认数据库。

 语法:
  sp_defaultdb [ @loginame = ] 'login' ,
      [ @defdb = ] 'database'

sp_grantdbaccess
 为 Microsoft? SQL Server? 登录或 Microsoft Windows NT? 用户或组在当前数据库中添加一个安全帐户,并使其能够被授予在数据库中执行活动的权限:。

 语法:
  sp_grantdbaccess [@loginame =] 'login'
      [,[@name_in_db =] 'name_in_db' [OUTPUT]]

sp_revokedbaccess
 从当前数据库中删除安全帐户。

 语法:
  sp_revokedbaccess [ @name_in_db = ] 'name'

*******************************************************************************
sp_addlogin
 创建新的 Microsoft? SQL Server? 登录,使用户得以连接使用 SQL Server 身份验证的 SQL Server 实例。

 语法:
  sp_addlogin [ @loginame = ] 'login'
      [ , [ @passwd = ] 'password' ]
      [ , [ @defdb = ] 'database' ]
      [ , [ @deflanguage = ] 'language' ]
      [ , [ @sid = ] sid ]
      [ , [ @encryptopt = ] 'encryption_option' ]

 参数:
  [@loginame =] 'login'
   登录的名称。login 的数据类型为 sysname,没有默认设置。

  [@passwd =] 'password'
   登录密码。password 的数据类型为 sysname,默认设置为 NULL。sp_addlogin 执行后,password 被加密并存储在系统表中。

  [@defdb =] 'database'
   登录的默认数据库(登录后登录所连接到的数据库)。database 的数据类型为 sysname,默认设置为 master。

  [@deflanguage =] 'language'
   用户登录到 SQL Server 时系统指派的默认语言。language 的数据类型为 sysname,默认设置为 NULL。如果没有指定 language,那么 language 被设置为服务器当前的默认语言(由 sp_configure 配置变量 default language 定义)。更改服务器的默认语言不会更改现有登录的默认语言。language 保持与添加登录时所使用的默认语言相同。

  [@sid =] sid
   安全标识号 (SID)。sid 的数据类型为 varbinary(16),默认设置为 NULL。如果 sid 为 NULL,则系统为新登录生成 SID。尽管使用 varbinary 数据类型,非 NULL 的值也必须正好为 16 个字节长度,且不能事先存在。SID 很有用,例如,如果要编写 SQL Server 登录脚本,或要将 SQL Server 登录从一台服务器移动到另一台,并且希望登录在服务器间具有相同的 SID 时。

  [@encryptopt =] 'encryption_option'
   指定当密码存储在系统表中时,密码是否要加密。encryption_option 的数据类型为 varchar(20),可以是下列值之一。

   值 描述
   NULL 加密密码。这是默认设置。
   skip_encryption 密码已加密。SQL Server 应该存储值而且不用重新对其加密。
   skip_encryption_old 已提供的密码由 SQL Server 较早版本加密。SQL Server 应该存储值而且不用重新对其加密。此选项只供升级使用。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  SQL Server 登录和密码可包含 1 到 128 个字符,包括任何字母、符号和数字。但是,登录不能:
   1. 含有反斜线 (/)。
   2. 是保留的登录名称,例如 sa 或 public,或者已经存在。
   3. 为 NULL,或为空字符串 ('')。
  如果提供默认数据库的名称,则不用执行 USE 语句就可以连接到指定的数据库。但是,不能使用默认的数据库,直到数据库所有者(使用 sp_adduser 或 sp_addrolemember)或 sp_addrole 授予对该数据库的访问权限:为止。

  SID 号是唯一的 Microsoft Windows NT? 用户标识号。必须保证每个用户的 SID 号在 Windows NT 域中的唯一性。SQL Server 自动使用 Windows NT SID 标识 Windows NT 用户和组,并为 SQL Server 登录生成一个 SID。

  将登录添加到 SQL Server 时,如果密码已经是加密的形式,则使用 skip_encryption 取消密码加密是有用的。如果此密码由以前的 SQL Server 版本加密,则使用 skip_encryption_old。

  不能从用户定义的事务中执行 sp_addlogin。

  下表显示了几个与 sp_addlogin 一起使用的存储过程。

   存储过程     描述
   sp_grantlogin   添加 Windows NT 用户或组。
   sp_password   更改用户密码。
   sp_defaultdb   更改用户的默认数据库。
   sp_defaultlanguage  更改用户的默认语言。

 权限:
  只有 sysadmin 和 securityadmin 固定服务器角色的成员才可以执行 sp_addlogin。

 示例:
  A. 创建没有密码和主默认数据库的登录 ID
   下面的示例:为用户 Victoria 创建一个 SQL Server 登录名,没有指定密码或默认数据库。

   EXEC sp_addlogin 'Victoria'

  B. 创建登录 ID 和默认数据库
   此示例:为用户 Albert 创建一个 SQL Server 登录,并指定密码 food 以及名为 corporate 的默认数据库。

   EXEC sp_addlogin 'Albert', 'food', 'corporate'

  C.创建使用其它默认语言的登录 ID
   下面的示例:为用户 Claire Picard 创建一个 SQL Server 登录名,密码为"caniche",默认数据库为 public_db,默认语言为 French。

   EXEC sp_addlogin 'Claire Picard', 'caniche', 'public_db', 'french'

  D. 创建带有特定 SID 的登录 ID
   下面的示例:为用户 Michael 创建一个 SQL Server 登录名,密码为"chocolate",默认数据库为 pubs,默认语言为 us_english,SID 为 0x0123456789ABCDEF0123456789ABCDEF。

   EXEC sp_addlogin 'Michael', 'chocolate', 'pubs', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF

  E. 创建登录 ID 并且不加密密码
   下例在 Server1 上为用户 Margaret 创建了一个密码为"Rose"的 SQL Server 登录,再析取此加密密码,然后使用前面加密的密码将用户登录 Margaret 添加到 Server2,但不对此密码进一步加密。之后,用户 Margaret 即可使用密码"Rose"登录到 Server2。

   -- Server1
   EXEC sp_addlogin Margaret, Rose

   --Results
   New login created.

   -- Extract encrypted password for Margaret
   SELECT CONVERT(VARBINARY(32), password)
      FROM syslogins
      WHERE name = 'Margaret'

   --Results
   ------------------------------------------------------------------
   0x2131214A212B57304F5A552A3D513453

   (1 row(s) affected)

   -- Server2
   EXEC sp_addlogin 'Margaret', 0x2131214A212B57304F5A552A3D513453,
      @encryptopt = 'skip_encryption'

*******************************************************************
sp_adduser
 为当前数据库中的新用户添加安全帐户。包括此过程是为了向后兼容。请使用 sp_grantdbaccess。

 语法:
  sp_adduser [ @loginame = ] 'login'
      [ , [ @name_in_db = ] 'user' ]
      [ , [ @grpname = ] 'group' ]

 参数:
  [@loginame =] 'login'
   用户的登录名称。login 的数据类型是 sysname,没有默认值。login 必须是现有 Microsoft? SQL Server? 登录或 Microsoft Windows NT? 用户。

  [@name_in_db =] 'user'
   新用户的名称。user 的数据类型为 sysname,其默认值为 NULL。如果没有指定 user,则用户的名称默认为 login 名称。指定 user 即为新用户在数据库中给予一个不同于 SQL Server 上的登录 ID 的名称。

  [@grpname =] 'group'
   组或角色,新用户自动地成为其成员。group 的数据类型为 sysname,默认值为 NULL。group 必须是当前数据库中有效的组或角色。Microsoft SQL Server 7.0 使用角色而不是组。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  SQL Server 用户名可以包含 1 到 128 个字符,包括字母、符号和数字。但是,用户名不能:

   1. 含有反斜线符号 (/)。
   2. 为 NULL,或为空字符串 ('')。

  在添加完用户之后,可以使用 GRANT、DENY 和 REVOKE 语句来定义权限:,这些权限:控制着用户进行的活动。

  使用 sp_helplogin 可显示有效登录名的列表。

  使用 sp_helprole 可显示有效角色名的列表。当指定一个角色时,用户会自动地获得为该角色定义的那些权限:。如果没有指定角色,则用户获得的权限:将是授予默认 public 角色的权限:。若要将用户添加到角色,必须提供 username 的值(username 可与 login_id 相同)。

  为了访问数据库,必须使用 sp_adduser 或 sp_grantdbaccess 对登录授予访问权,或者数据库中必须存在 guest 安全帐户。

  不能在用户定义的事务内执行 sp_adduser。

 权限:
  只有 sysadmin 固定服务器角色的 dbo 和成员才能执行 sp_adduser。

 示例:
  A. 添加用户
   下面的示例:使用现有的登录 Victoria,将用户 Victoria 添加到当前数据库中现有的 fort_mudge 角色中。

   EXEC sp_adduser 'Victoria', 'Victoria', 'fort_mudge'

  B. 添加用户名(使用相同的登录 ID)
   下面的示例:为登录 Margaret 将默认用户名 Margaret 添加到当前数据库,该用户名属于默认的 public 角色。

   EXEC sp_adduser 'Margaret'

  C. 添加用户(使用不同的用户名)
   下面的示例:将 Haroldq 登录添加到当前的数据库中并使用 Harold 用户名,该用户名属于 fort_mudge 角色。

   EXEC sp_adduser 'Haroldq', 'Harold', 'fort_mudge'

*******************************************************************************
sp_addrolemember
 将安全帐户作为当前数据库中现有 Microsoft? SQL Server? 数据库角色的成员进行添加。
 语法:
  sp_addrolemember [ @rolename = ] 'role' ,
      [ @membername = ] 'security_account'

 参数:
  [@rolename =] 'role'
   当前数据库中 SQL Server 角色的名称。role 的数据类型为 sysname,没有默认值。

  [@membername =] 'security_account'
   添加到角色的安全帐户。security_account 的数据类型为 sysname,没有默认值。security_account 可以是所有有效的 SQL Server 用户、SQL Server 角色或是所有已授权访问当前数据库的 Microsoft Windows NT? 用户或组。当添加 Windows NT 用户或组时,请指定在数据库中用来识别该 Windows NT 用户或组的名称(使用 sp_grantdbaccess 添加)。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  当使用 sp_addrolemember 将安全帐户添加到角色时,新成员将继承所有应用到角色的权限:。

  在添加 SQL Server 角色,使其成为另一个 SQL Server 角色的成员时,不能创建循环角色。例如,如果 YourRole 已经是 MyRole 的成员,就不能将 MyRole 添加成为 YourRole 的成员。此外,也不能将固定数据库或固定服务器角色,或者 dbo 添加到其他角色。例如,不能将 db_owner 固定数据库角色添加成为用户定义的角色 YourRole 的成员。

  只能使用 sp_addrolemember 将成员添加到 SQL Server 角色。使用 sp_addsrvrolemember 将成员添加到固定服务器角色。在 SQL Server 中,将成员添加到 Windows NT? 组是不可能的。

  在用户定义的事务中不能使用 sp_addrolemember。

 权限:
  只有 sysadmin 固定服务器角色和 db_owner 固定数据库角色中的成员可以执行 sp_addrolemember,以将成员添加到固定数据库角色。角色所有者可以执行 sp_addrolemember,将成员添加到自己所拥有的任何 SQL Server 角色。db_securityadmin 固定数据库角色的成员可以将用户添加到任何用户定义的角色。

 示例:
  A. 添加 Windows NT 用户
  下面的示例:将 Windows NT 用户 Corporate/JeffL 添加到 Sales 数据库,使其成为用户 Jeff。然后,再将 Jeff 添加到 Sales 数据库的 Sales_Managers 角色中。

  说明  由于 Corporate/JeffL 在 Sales 数据库中被当作是用户 Jeff,所以必须使用 sp_addrolemember 来指定用户名 Jeff。

  USE Sales
  GO
  EXEC sp_grantdbaccess 'Corporate/JeffL', 'Jeff'
  GO
  EXEC sp_addrolemember 'Sales_Managers', 'Jeff'

  B. 添加 SQL Server 用户
  下面的示例:将 SQL Server 用户 Michael 添加到当前数据库中的 Engineering 角色。

  EXEC sp_addrolemember 'Engineering', 'Michael'

*****************************************************************************
sp_droprolemember
 从当前数据库中的 Microsoft? SQL Server? 角色中删除安全帐户。

 语法:
  sp_droprolemember [ @rolename = ] 'role' ,
      [ @membername = ] 'security_account'

 参数:
  'role'
   某个角色的名称,将要从该角色删除成员。role 的数据类型为 sysname,没有默认值。role 必须已经存在于当前的数据库中。

  'security_account'
   正在从角色中删除的安全帐户的名称。security_account 的数据类型为 sysname,没有默认值。security_account 可以是 SQL Server 用户或另一个 SQL Server 角色,或 Microsoft Windows NT? 用户或组。当前数据库中必须存在 security_account。当指定 Windows NT 用户或组时,请指定该 Windows NT 用户或组在数据库中可被识别的名称(用 sp_grantdbaccess 添加)。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  通过从 sysmembers 表删除行,sp_droprolemember 删除角色成员。当从角色删除某个成员时,应用于该角色的权限:不再适用于角色从前的那个成员。

  不能使用 sp_droprolemember 从 Windows NT 组删除 Windows NT 用户;而只能在 Windows NT 安全系统中完成这个任务。若要从固定服务器角色删除用户,请使用 sp_dropsrvrolemember。不能从 public 角色删除用户,并且不能从任何角色删除 dbo。

  可以使用 sp_helpuser 查看 SQL Server 角色的成员,并且可以使用 sp_addrolemember 将成员添加到角色。

  不能从用户定义的事务内执行 sp_droprolemember。

 权限:
  只有 sysadmin 固定服务器角色、db_owner 和 db_securityadmin 固定数据库角色的成员才能执行 sp_droprolemember。只有 db_owner 固定数据库角色的成员才可以从固定数据库角色中删除用户。

 示例:
  下面的示例:从角色 Sales 中删除用户 JonB。

  EXEC sp_droprolemember 'Sales', 'Jonb'

*******************************************************************************
sp_dropuser
 从当前数据库中删除 Microsoft? SQL Server? 用户或 Microsoft Windows NT? 用户。提供 sp_dropuser 是为了向后兼容。使用 sp_revokedbaccess 删除用户。

 语法:
  sp_dropuser [ @name_in_db = ] 'user'

 参数:
  [@name_in_db =] 'user'
   将要被删除的用户的名称。user 的数据类型为 sysname,没有默认值。user 必须已经存在于当前的数据库中。当指定 Windows NT 用户时,请指定该 Windows NT 用户在数据库中可被识别的名称(用 sp_grantdbaccess 添加)。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  sp_dropuser 执行 sp_revokedbaccess 以从当前数据库中删除用户。

  使用 sp_helpuser 可以显示一个用户名的列表,可以将这些用户名从当前数据库中删除。

  当删除某个用户的安全帐户时,也就删除了该用户的所有别名。如果某个用户在数据库中拥有任意对象,那么就不能删除该用户。必须使用 sp_changeobjectowner 将对象的所有关系更改到另一用户。删除用户时,也就自动地删除与该用户相关的权限:,并且将这些相关的权限:从该用户所在的任何角色中删除。

  不能使用 sp_dropuser 删除 dbo 或 INFORMATION_SCHEMA 用户,也不能从 master 或 tempdb 数据库中删除 guest 用户。

  不能从用户定义的事务内执行 sp_dropuser。

 权限:
  只有 sysadmin 固定服务器角色、db_owner 或 db_accessadmin 固定数据库角色的成员才能执行 sp_dropuser。

 示例:
  下面的示例:从当前数据库删除用户 Albert。

  EXEC sp_dropuser 'Albert'

*******************************************************************************
sp_droplogin
 删除 Microsoft? SQL Server? 登录,以阻止使用该登录名访问 SQL Server。

 语法:
  sp_droplogin [ @loginame = ] 'login'

 参数:
  [@loginame =] 'login'
   将被删除的登录。login 的数据类型为 sysname,没有默认值。login 必须已经存在于 SQL Server 中。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  不能删除映射到任何数据库中现有用户的登录。必须首先使用 sp_dropuser 删除该用户。此外,不能删除下面这些登录:

   系统管理员 (sa) 登录。
   拥有现有数据库的登录。
   在 msdb 数据库中拥有作业的登录。
   当前正在使用并且被连接到 SQL Server 的登录。

  可以使用 sp_changedbowner 更改数据库的所有者。
  删除某个登录同时也就删除了所有映射到该登录的远程及链接服务器登录。
  不能在用户定义的事务内执行 sp_droplogin。

 权限:
  只有 sysadmin 和 securityadmin 固定服务器角色的成员才能执行 sp_droplogin。

  sp_droplogin 必须检查服务器上的所有数据库,以便确定在这些数据库中是否有与正被删除的登录相关的用户帐户。因此,服务器上的每个数据库都必须满足下列条件之一:

  正在执行 sp_droplogin 的用户必须有访问该数据库的权限:。

  guest 用户帐户必须存在于数据库中。
  即使不能访问数据库,登录仍然可以被删除。但是会产生错误信息 15622,并且在那个不能访问的数据库中,所有与被删除的登录相关的用户都会变成孤立的。若要确定孤立用户,请在 sp_droplogin 不能访问的每个数据库中执行 sp_change_users_login REPORT。

 示例:
  下面的示例:从 SQL Server 中删除登录 Victoria。

  EXEC sp_droplogin 'Victoria'

*******************************************************************************
sp_password
 添加或更改 Microsoft? SQL Server? 登录的密码。

 语法:
  sp_password [ [ @old = ] 'old_password' , ]
      { [ @new =] 'new_password' }
      [ , [ @loginame = ] 'login' ]

 参数:
  [@old =] 'old_password'
   是旧密码。old_password 为 sysname 类型,其默认值为 NULL。

  [@new =] 'new_password'
   是新密码。new_password 为 sysname 类型,无默认值。如果没有使用命名参数:,就必须指定 old_password。

  [@loginame =] 'login'
   是受密码更改影响的登录名。login 为 sysname 类型,其默认值为 NULL。login 必须已经存在,并且只能由 sysadmin 固定服务器角色的成员指定。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  SQL Server 密码可包含 1 到 128 个字符,其中可包括任何字母、符号和数字。

  新密码以加密的形式更新和存储,因此,任何用户(甚至系统管理员)都不能查看密码。

  当 sysadmin 或 securityadmin 固定服务器角色的成员使用带全部三个参数:的 sp_password 重新设置他们自己的密码时,审核记录反映的却是他们正在更改别人的密码。

  sp_password 不能用于 Microsoft Windows NT? 安全帐户。通过 Windows NT 网络帐户连接到 SQL Server 的用户是由 Windows NT 授权的,因此其密码只能在 Windows NT 中更改。

  sp_password 不能在用户定义的事务中执行。

 权限:
  执行权限:默认地授予 public 角色,以供用户更改自己的登录密码。只有 sysadmin 角色的成员可更改其他用户的登录密码。

 示例:
  A.无原密码的情况下更改登录密码
  下面的示例:将登录 Victoria 的密码更改为 ok。

  EXEC sp_password NULL, 'ok', 'Victoria'

  B.更改密码
  下面的示例:将登录 Victoria 的密码由 ok 改为 coffee。

  EXEC sp_password 'ok', 'coffee'

*******************************************************************************
sp_defaultdb
 更改登录的默认数据库。

 语法:
  sp_defaultdb [ @loginame = ] 'login' ,
      [ @defdb = ] 'database'

 参数:
  [@loginame =] 'login'
   是登录名。login 的数据类型为 sysname,没有默认值。login 可以是现有 Microsoft? SQL Server? 登录或者是 Microsoft Windows NT? 用户或组。如果 SQL Server 上没有 Windows NT 用户或组,系统会自动添加。

  [@defdb =] 'database'
   新的默认数据库的名称。database 的数据类型为sysname,没有默认值。database 必须已经存在。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  当客户端连接 SQL Server 时,如果没有显式使用 USE 语句,则为其登录定义的默认数据库将成为当前数据库。可以在 sp_addlogin 添加登录时定义默认数据库。当执行 sp_addlogin 时,如果没有指定数据库,则 master 数据库将成为默认数据库。

  执行 sp_defaultdb 后,当用户下次登录时登录将连接到新数据库。但 sp_defaultdb 不能自动将数据库访问权授予登录。数据库所有者 (dbo) 必须通过 sp_grantdbaccess 将数据库访问权授予登录,或者该登录必须是一个在数据库中指定的 guest 用户。

  推荐使用 sp_defaultdb 更改所有登录(而不是 sysadmin 固定数据库角色成员)的默认数据库。这将防止用户不经意间使用或创建 master 数据库中的对象。

  在用户定义的事务中不能执行 sp_defaultdb。

 权限:
  执行权限:默认授予 public 角色,以便用户更改他们自己登录的默认数据库。只有 syadmin 或 securityadmin 固定服务器角色的成员可以为其它登录执行 sp_defaultdb。

 示例:
  下面的示例:将 pubs 设置为用户 Victoria 的默认数据库。

  EXEC sp_defaultdb 'Victoria', 'pubs'

*******************************************************************************
sp_grantdbaccess
 为 Microsoft? SQL Server? 登录或 Microsoft Windows NT? 用户或组在当前数据库中添加一个安全帐户,并使其能够被授予在数据库中执行活动的权限:。

 语法:
  sp_grantdbaccess [@loginame =] 'login'
      [,[@name_in_db =] 'name_in_db' [OUTPUT]]

 参数:
  [@loginame =] 'login'
   当前数据库中新安全帐户的登录名称。Windows NT 组和用户必须用 Windows NT 域名限定,格式为"域/用户",例如 LONDON/Joeb。登录不能使用数据库中已有的帐户作为别名。login 的数据类型为 sysname,没有默认值。

  [@name_in_db =] 'name_in_db' [OUTPUT]
   数据库中帐户的名称。name_in_db 是 sysname 类型的 OUTPUT 变量,默认值为 NULL。如果没有指定,则使用 login。如果将其指定为 NULL 值的 OUTPUT 变量,则设置 @name_in_db 为 login。当前数据库不必存在 name_in_db。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  SQL Server 用户名可以包含 1 到 128 个字符,包括字母、符号和数字。但是,用户名不能:

   含有反斜线符号 (/)。
   为 NULL,或为空字符串 ('')。

  在使用安全帐户访问数据库之前,必须授予它对当前数据库的访问权。使用 sp_grantdbaccess 仅可以管理当前数据库中的帐户。若要从数据库中删除帐户,请使用 sp_revokedbaccess。

  如果当前数据库中没有 guest 安全帐户,而且 login 为 guest,则可以添加 guest 的安全帐户。

  sa 登录不能添加到数据库中。

  不能从用户定义的事务中执行 sp_grantdbaccess。

 权限:
  只有 sysadmin 固定服务器角色、db_accessadmin 和 db_owner 固定数据库角色的成员才能执行 sp_grantdbaccess。

 示例:
  下面的示例:在当前数据库中为 Windows NT 用户 Corporate/GeorgeW 添加帐户,并取名为 Georgie。

  EXEC sp_grantdbaccess 'Corporate/GeorgeW', 'Georgie'

*******************************************************************************
sp_revokedbaccess
 从当前数据库中删除安全帐户。

 语法:
  sp_revokedbaccess [ @name_in_db = ] 'name'

 参数:
  [@name_in_db =] 'name'
   是要删除的帐户名。name 的数据类型为 sysname,无默认值。name 可以是 Microsoft? SQL Server? 用户名或 Microsoft Windows NT? 用户名或组名,而且必须存在于当前数据库中。当指定 Windows NT 用户或组时,请指定该 Windows NT 用户或组在数据库中可被识别的名称(即用 sp_grantdbaccess 添加的名称)。

 返回代码值:
  0(成功)或 1(失败)

 注释:
  删除帐户时,依赖于该帐户的权限:和别名将自动删除。

  只能用 sp_revokedbaccess 删除当前数据库中的帐户。若要向数据库中添加帐户,请使用 sp_grantdbaccess。若要删除 SQL Server 角色,请使用 sp_droprole。从当前数据库中删除拥有对象的帐户时,必须先删除对象或用 sp_changeobjectowner 更改对象所有者后,再执行 sp_revokedbaccess。

  sp_revokedbaccess 存储过程不能删除:
   public 角色、dbo 或 INFORMATION_SCHEMA 用户。
   数据库中的固定角色。
   master 和 tempdb 数据库中的 guest 用户帐户。
   Windows NT 组中的 Windows NT 用户。

  在用户定义事务内部不能执行 sp_revokedbaccess。

 权限:
  只有 sysadmin 固定服务器角色成员及 db_accessadmin 和 db_owner 固定数据库角色成员才能执行 sp_revokedbaccess。

 示例:
  下例从当前数据库中删除帐户 Corporate/GeorgeW。

  EXEC sp_revokedbaccess 'Corporate/GeorgeW'