zoukankan      html  css  js  c++  java
  • 修改MS SQL2000数据库的所有者

    有些时候,一个数据库的管理员,需要将几个不同的数据库内的数据合并到一起,如果几个数据库的结构基本相同,只需新建一个数据库,将其它几个数据库内的对象复制并追加到新数据库内并做细微调整即可达到目的,但是,不同的数据库可能存在不同的用户账号,数据库对象——譬如:表,存储过程及视图等——的所有者也可能不同,这样,在倒入数据时,系统会将同名但不同所有者的数据库对象识别为不同的对象,会在目标库中新建对象而非追加,并且会因为目标库中没有相应的用户账号而报用户不存在的错,那么,统一数据库对象的所有者就狠必要了。

      还是老习惯,下面给出更改数据库表,存储过程及视图所有者的SQL脚本,需要说明的是,这段脚本同样可以用于将数据库对象的所有者由DBO用户更改为其它指定的用户,使用的方法为:将YourUserName更改为DBO,在原有DBO的位置输入想要指定的用户账号名称,执行即可,当然,这段脚本代码在使用的时候是狠灵活的,并非只针对关于DBO与其它指定账号之间的更改,实践一下就自然明白了

    1. 修改表的所有者

    declare @tn varchar(120)

    declare table_cursor cursor for
    Select '[' + sysusers.name + '].' + sysobjects.name AS table_name
    FROM sysobjects INNER JOIN sysusers ON sysobjects.uid = sysusers.uid
    Where sysusers.name = 'YourUserName' AND sysobjects.type = 'U'

    open table_cursor
    fetch next from table_cursor into @tn

    while @@FETCH_STATUS = 0
    begin
      exec sp_changeobjectowner @tn, 'dbo'

      fetch next from table_cursor into @tn
    end

    close table_cursor
    deallocate table_cursor


    2. 修改存储过程的所有者

    declare @tn varchar(120)

    declare procedure_cursor cursor for
    Select '[' + sysusers.name + '].' + sysobjects.name AS procedure_name
    FROM sysobjects INNER JOIN sysusers ON sysobjects.uid = sysusers.uid
    Where sysusers.name = 'YourUserName' AND sysobjects.type = 'P'

    open procedure_cursor
    fetch next from procedure_cursor into @tn

    while @@FETCH_STATUS = 0
    begin
      exec sp_changeobjectowner @tn, 'dbo'

      fetch next from procedure_cursor into @tn
    end

    close procedure_cursor
    deallocate procedure_cursor


    3. 修改视图的所有者

    declare @tn varchar(120)

    declare view_cursor cursor for
    Select '[' + sysusers.name + '].' + sysobjects.name AS view_name
    FROM sysobjects INNER JOIN sysusers ON sysobjects.uid = sysusers.uid
    Where sysusers.name = 'YourUserName' AND sysobjects.type = 'V'

    open view_cursor
    fetch next from view_cursor into @tn

    while @@FETCH_STATUS = 0
    begin
      exec sp_changeobjectowner @tn, 'dbo'

      fetch next from view_cursor into @tn
    end

    close view_cursor
    deallocate view_cursor
  • 相关阅读:
    win10使用Scoop软件包管理器,支持版本切换
    使用ddns-go实现本地IP或公网IP动态域名解析
    使用Frp实现内网穿透
    Win10开发环境搭建
    Java使用Jabba进行版本管理
    Win10将用户目录Users迁移到其他盘
    【测试开发】十五、接口测试-接口定义-实现接口编辑功能
    【测试开发】十四、接口测试-接口定义功能-前后端-实现新增
    【测试开发】十三、接口测试-接口定义功能-前端-实现动态增删表单
    【测试开发】十二、接口测试-实现接口列表功能-递归查询子节点下的接口
  • 原文地址:https://www.cnblogs.com/wantingqiang/p/1354738.html
Copyright © 2011-2022 走看看