none
Mudar o OWNER do Database RRS feed

  • Pergunta

  • Quero que todas as tabelas que estiverem com usuario OWNER X passar para Y (SQL SERVER 2000 SP4)

    Name          owner          type    create date
     
    000ABC1     USUARIO1   USER  XX/XX/XXXX
    000ABC2     USUARIO1   USER  XX/XX/XXXX
    .
    .
    000ABC500 USUARIO1  USER XX/XX/XXXX

    Quero passar todas as tabelas deste database para USUARIO2 por exemplo
    wjm
    terça-feira, 25 de agosto de 2009 19:54

Respostas

Todas as Respostas

  • Oi Wilson, se é no SQLServer 2k usa a sp sp_changeobjectowner:


    EXEC sp_changeobjectowner 'Nome_da_Sua_Tabela', 'Novo_Owner';


    Eu sei que é uma Stored Procedure que está com os "dias contados", funciona no 2000 e no 2005, não sei como está no 2008


    Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil * http://dba-sqlserver.blogspot.com/
    terça-feira, 25 de agosto de 2009 19:58
  • Mas tenho que fazer isto tabela por tabela ???
    wjm
    terça-feira, 25 de agosto de 2009 19:59
  • Sim, mas monta um script para isso....

    A sp_MSforeachtable é uma Stored Procedure não documentada, há quem diga que não é bom usar, e há que diga que sim.... eu sou da turma dos que usa.


    exec sp_MSforeachtable 'Print("EXEC sp_changeobjectowner ''?'' , ''Novo_Owner''")'


    Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil * http://dba-sqlserver.blogspot.com/
    terça-feira, 25 de agosto de 2009 20:07
  • Esta dando o seguinte erro: 'sapiensb'' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.
    wjm
    quarta-feira, 26 de agosto de 2009 12:10
  • Mas Obrigado

    wjm
    quarta-feira, 26 de agosto de 2009 12:11
  • Passa a query que você está executando.
    Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil * http://dba-sqlserver.blogspot.com/
    quarta-feira, 26 de agosto de 2009 13:00
  • exec sp_MSforeachtable 'Print("EXEC sp_changeobjectowner ''?'' , ''Sapiensb''")'
    wjm
    quarta-feira, 26 de agosto de 2009 13:29
  • Isso está parecendo alguma diferença de sintax no 2000, eu uso o 2005 e não tenho como testar.

    Então voltamos ao método tradicional, tenta essas:

    Select 'EXEC sp_changeobjectowner ''' + A.name + ''', ''Sapiensb'''
      From Sysobjects A
           Inner Join Sys.Tables B On A.id = B.Object_id



    Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil * http://dba-sqlserver.blogspot.com/
    quarta-feira, 26 de agosto de 2009 15:38
  • Fausto, obrigado mas nos testes que fiz quando ia na aba security/logins e verificava qual o owner do banco o mesmo estava com o Sapiensb contudo quando dia no interprise manager e listava as tabelas do banco do Owner estava outro (sapiensa) , nao deixando que o usuario Sapiensb acessasse as tabelas. Como era um base backup , apaguei recriei tudo e deu certo, mas sinceramente gostaria de saber como resolver isto.

    wjm
    sexta-feira, 28 de agosto de 2009 13:41