2007-04-29

如何进行 SQL Server 批理修改权限

来源: 本站收集整理 作者:佚名 评论 0 条
 

问题:在机器备份的数据库到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'

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


(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:检测和解决 SQL Server2000 SP4中问题  
下一篇:深入了解SQLServer系统数据库工作原理
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号