网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.MS SQLSERVER 中如何得到表的创建.
.在SQL2000查询中使用XDR的例子.
.dp备份检查时发现有session报错的.
.深入浅出SQL教程之SELECT语句的自.
.数据库查询结果的动态排序(6).
.查看SQL Server数据空间分配情况.
.TEMP表空间肆意扩大无法继续扩展.
.一個Select出一個表中第N條記錄的.
.在SQL Server 2005数据库中进行错.
.数据库管理员必须了解WHERE条件的.
.将数据库直接备份到网络上其它计.
.如何在Access报表中每隔N行显示一.
.用一个实例讲解数据增量抽取的模.
.在Informix数据库中释放异常的锁.
.讲解一个Informix数据库存储过程.
.用共享游标提升 SQL 性能.
.如何获取指定表中指定字段内的可.
.MS SQL数据库备份和恢复存储过程.
.数据仓库基本报表制作过程中的SQ.
.SQL Server05 M 3.0 中复制和远程.

Mssql批量修改权限

发表日期:2007-1-23


    今天恢复一个在别人机器备份的数据库到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 SERVER的版本 人气:6342
下一篇:2台服务器数据库如何同步? 人气:4854
浏览全部SQL SERVER的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐