zoukankan      html  css  js  c++  java
  • 更改数据库对象所有者

    个人在开发中,整理出来,已试过,可以用!

    SQL Server2005可以使用系统存储过程sp_changeobjectowner更改数据库对象所有者。

    一.单个修改

    sp_changeobjectowner '对象名(包括架构名)','新架构名'
    如:sp_changeobjectowner 'text.userdr','dbo'

    把表userdr的所有者text改成所有者dbo

    二.多个修改(批量修改)

    --// 新建查询运行(此方法可以)

    declare @name sysname

    declare csr1 cursor

    for select TABLE_NAME from INFORMATION_SCHEMA.TABLES

    open csr1

    FETCH NEXT FROM csr1 INTO @name

    while (@@FETCH_STATUS=0)

    BEGIN

    SET @name='旧架构名.'+@name

    EXEC SP_ChangeObjectOwner @name, '新架构名'

    fetch next from csr1 into @name

    END

    CLOSE csr1

    DEALLOCATE csr1

    --// 新建存储过程

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go


    ALTER PROCEDURE [dbo].[ChangeObjectOwner]
    @OldOwner as NVARCHAR(128),--参数原所有者
    @NewOwner as NVARCHAR(128)--参数新所有者
    AS

    DECLARE @Name   as NVARCHAR(128)
    DECLARE @Owner as NVARCHAR(128)
    DECLARE @OwnerName as NVARCHAR(128)

    DECLARE curObject CURSOR FOR
    select 'Name'   = name,
    'Owner'   = user_name(uid)
    from sysobjects
    where user_name(uid)=@OldOwner
    order by name

    OPEN curObject
    FETCH NEXT FROM curObject INTO @Name, @Owner
    WHILE(@@FETCH_STATUS=0)
    BEGIN  
    if @Owner=@OldOwner
    begin
    set @OwnerName = @OldOwner + '.' + rtrim(@Name)
    exec sp_changeobjectowner @OwnerName, @NewOwner
    end

    FETCH NEXT FROM curObject INTO @Name, @Owner
    END

    close curObject
    deallocate curObject

  • 相关阅读:
    类数组(伪数组)
    go面试题[2]
    go面试题[1]
    go编程第十五课时
    php实现堆排序
    go编程第十三课时
    go第十一课时
    关于循环队列 -> 击鼓传花
    网栅格布局
    《学习JAVASCRIPT数据结构与算法》 ES6 部分笔记
  • 原文地址:https://www.cnblogs.com/xingyuan13/p/2444076.html
Copyright © 2011-2022 走看看