欢迎光临
我们一直在努力

mssql批量修改权限_数据库技巧

建站超值云服务器,限时71元/月

    今天恢复一个在别人机器备份的数据库到SQL SERVER,恢复后该数据库中有一个mooip用户,该用户是数据库所有者,很多表的所有者也是他,但安全性里的登录中没有该用户,删除不了该用户,提示“因为选定的用户拥有对象,所以无法除去该用户”!
具体解决方式如下:
      1 如果是一张表有此问题,解决方式如下:
      
       exec sp_changeobjectowner mooip.tablename, dbo
    
       这样就把tablename指定的表的所有者赋值给了dbo用户


     2 如果所有表都存在此问题,这是就要编写存储过程实现批量修改了
      
         IF OBJECT_ID(ChangeAll) IS NOT NULL Drop PROC ChangeAll
         GO


         Create PROCEDURE ChangeAll (
             @old sysname,
             @new sysname
         )
        AS
             DECLARE @objname sysname


             SET NOCOUNT ON


             IF USER_ID(@old) IS NULL
                BEGIN
                    RAISERROR (The @old passed does not exist in the database, 16, 1)
                    RETURN
                END
             IF USER_ID(@new) IS NULL
                BEGIN
                    RAISERROR (The @new passed does not exist in the database, 16, 1)
                    RETURN
                END


             DECLARE owner_cursor CURSOR FOR


             Select name FROM sysobjects Where uid = USER_ID(@old)
             OPEN owner_cursor
             FETCH NEXT FROM owner_cursor INTO @objname
             WHILE (@@fetch_status <> -1)
                 BEGIN
                     SET @objname = @old + . + @objname
                     EXEC sp_changeobjectowner @objname, @new
                     FETCH NEXT FROM owner_cursor INTO @objname
                 END


            CLOSE owner_cursor
            DEALLOCATE owner_cursorz
            GO


EXEC ChangeAll @old = mooip, @new = dbo


这样就完成了批量修改权限的工作

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » mssql批量修改权限_数据库技巧
分享到: 更多 (0)