none
SQL2000 所有者 RRS feed

  • 问题

  • 我再SQL2000企业管理器中,表,存储过程前面的所有者  都是 unierp.表   ,unierp. 存储过程  ;我想把所有者改成  metis.表,metis.存储过程;怎么修改?
    2013年1月28日 2:18

答案

全部回复

  • sp_changeobjectowner 'unierp.表名', 'metis'
    • 已标记为答案 shenyubox 2013年1月29日 1:44
    2013年1月28日 2:40
  • 我这边又上百张表和SP,,不可能一个个去手工改,,有简单点的办法吗?

    2013年1月28日 2:42
  • You can generate statements with ''select 'sp_changeobjectowner uniepr.' + name + ', metis.' + name from sysobjects where ..." then run them.
    2013年1月28日 3:58
  • EXEC 'select 'sp_changeobjectowner uniep.' + name + ', metis.' + name from sysobjects where xtype = 'U''

    这样执行的时候

    提示

    服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: 'select ' 附近有语法错误。

    2013年1月28日 5:52
  • rmiao大侠的意思是:

    你先执行select  'sp_changeobjectowner uniep.' + name + ', metis.' + name from sysobjects where xtype = 'U'

    之后将执行出来的结果集拿到查询分析器中执行


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.

    2013年1月28日 7:48
  • 理解。谢谢。我后来找到一个使用游标的方法:


    declare cur cursor for
    select name
    from sysobjects
    where uid=user_id('unierp')

    declare @name sysname
    declare @sqlstr varchar(5000)

    open cur
    fetch next from cur
    into @name

    while @@fetch_status=0
    begin
    set @sqlstr='exec sp_changeobjectowner ''unierp.'+@name+''',''metis'''
    exec (@sqlstr)
    fetch next from cur
    into @name
    end
    close cur
    deallocate cur

    2013年1月29日 1:43