更换用户登陆的语句怎么写啊??
比如一开始我用SA登陆,然后又想用用户名san登陆,用语句怎么写啊
[解决办法]
建立新的 Microsoft® SQL Server™ 登入,允使用者利用「SQL Server 的」至 SQL Server 的行。
安全性附 可能使用「Windows 的」。
法
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 位元,而且不可是已存在的。在您指令或 SQL Server 登入一伺服器移至另一伺服器,而您希望登入在伺服器之有相同的 SID,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 字元,由字母、符以及字成。但是登入不能:
含有反斜 (\)。
保留的登入名,例如 sa、public 或其他任何已存在的名。
是 NULL 或是空字串 ( ' ')。
若料名已提供,您不需行 USE 述式就可以至指定的料。但在料有者使用 sp_adduser、sp_addrolemember 或 sp_addrole 授料存取限之前,您是法使用料。
安全 (SID) 是唯一的 Microsoft Windows NT® 使用者。Windows NT 域中的每位使用者保都有唯一的安全。SQL Server 自使用 Windows NT 安全 Windows NT 使用者及群, SQL Server 登入生安全。
若在新增登入至 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. 建立主要料的登入
此例建立使用者 Victoria 的 SQL Server 登入,但不指定料。
EXEC sp_addlogin 'Victoria ', 'B1r12-36 '
B. 建立登入及料
此例建立使用者 Albert 的 SQL Server 登入,密 "B1r12-36 " ,且料 corporate。
EXEC sp_addlogin 'Albert ', 'B1r12-36 ', 'corporate '
C. 以不同言建立登入
此例建立使用者 Claire Picard 的 SQL Server 登入,密 "B1r12-36 ",料 public_db,而言法文。
EXEC sp_addlogin 'Claire Picard ', 'B1r12-36 ', 'public_db ', 'french '
D. 以特定安全建立登入
此例建立使用者 Michael 的 SQL Server 登入,密 "B1r12-36, ",料 pubs,言 us_english,而安全 0x0123456789ABCDEF0123456789ABCDEF。
EXEC sp_addlogin 'Michael ', 'B1r12-36 ', 'pubs ', 'us_english ', 0x0123456789ABCDEF0123456789ABCDEF
E. 建立登入且密不行加密
此例建立使用者 Margaret 的 SQL Server 登入,其在 Server1 的密 "B1r12-36 " ,萃取加密的密,然後利用之前加密的密新增使用者 Margaret 的登入至 Server2,但不一步密加密。接著使用者 Margaret 可以利用密 Rose 登入 Server2。
-- Server1
EXEC sp_addlogin 'Margaret ', 'B1r12-36 '
--Results
New login created.
-- Extract encrypted password for Margaret
SELECT CONVERT(VARBINARY(256), password)
FROM syslogins
WHERE name = 'Margaret '
--Results
------------------------------
0x0100163A5F026DA00F9FBCF3CB2E75B0C84887F3A87E191F8E0B7A2660F064A52B19590B9DE20D94DC0DFF857EDA
(1 row(s) affected)
-- Server2
EXEC sp_addlogin 'Margaret ', 0x0100163A5F026DA00F9FBCF3CB2E75B0C84887F3A87E191F8E0B7A2660F064A52B19590B9DE20D94DC0DFF857EDA,
@encryptopt = 'skip_encryption '
[解决办法]
/*--示例说明
示例在数据库pubs中创建一个拥有表jobs的所有权限、拥有表titles的SELECT权限的角色r_test
随后创建了一个登录l_test,然后在数据库pubs中为登录l_test创建了用户账户u_test
同时将用户账户u_test添加到角色r_test中,使其通过权限继承获取了与角色r_test一样的权限
最后使用DENY语句拒绝了用户账户u_test对表titles的SELECT权限。
经过这样的处理,使用l_test登录SQL Server实例后,它只具有表jobs的所有权限。
--*/
USE pubs
--创建角色 r_test
EXEC sp_addrole 'r_test '
--授予 r_test 对 jobs 表的所有权限
GRANT ALL ON jobs TO r_test
--授予角色 r_test 对 titles 表的 SELECT 权限
GRANT SELECT ON titles TO r_test
--添加登录 l_test,设置密码为pwd,默认数据库为pubs
EXEC sp_addlogin 'l_test ', 'pwd ', 'pubs '
--为登录 l_test 在数据库 pubs 中添加安全账户 u_test
EXEC sp_grantdbaccess 'l_test ', 'u_test '
--添加 u_test 为角色 r_test 的成员
EXEC sp_addrolemember 'r_test ', 'u_test '
--拒绝安全账户 u_test 对 titles 表的 SELECT 权限
DENY SELECT ON titles TO u_test
/*--完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限--*/
--从数据库 pubs 中删除安全账户
EXEC sp_revokedbaccess 'u_test '
--删除登录 l_test
EXEC sp_droplogin 'l_test '
--删除角色 r_test
EXEC sp_droprole 'r_test '