如何使用t-sql中的脚本重命名用户,添加角色等

时间:2011-03-20 20:41:06

标签: sql tsql

我必须

  • 重命名用户(从yyyyyy \ xxxx到xxxx)
  • 向用户添加角色
  • 查看授予指定角色的存储过程的权限(我找到了一个包含有关表的信息的表,但没有存储过程)

全部在t-sql中。我知道怎么做mannualy,但有400多名用户,我希望能把我解决问题。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您需要做的是遍历用户以修改和执行命令以进行所需的更改。您可以通过查询syslogins表并创建包含结果的游标来完成此操作。

我添加了重命名用户的语句,但添加角色就像添加第二个语句和exec一样简单sp_addrolemember

DECLARE @Login as varchar(50);

DECLARE LoginsCrsr CURSOR FOR
SELECT name
FROM syslogins
WHERE name like '%John%'; --Whatever critera you need

OPEN LoginsCrsr;

FETCH NEXT FROM LoginsCrsr
INTO @Login;

WHILE (@@FETCH_STATUS = 0)
BEGIN
   DECLARE @TSQL as varchar(255)
   DECLARE @NewLogin as varchar(50)

   SELECT @NewLogin = @Login   -- Do your own thing here

   SELECT @TSQL = 'ALTER LOGIN [' + @Login + '] WITH NAME=[' + @NewLogin + ']' 
   PRINT @TSQL
   EXEC (@TSQL)

   --Whatever else you need to do

   FETCH NEXT FROM LoginsCrsr
   INTO  @Login
END
GO

CLOSE LoginsCrsr;
DEALLOCATE LoginsCrsr;
GO