locked
Não consigo visualizar objeto numa base SQL Server 2008 RRS feed

  • Pergunta

  • Pessoal, estou com seguinte problema. Preciso dar um alter table em um objeto numa base de dados. Executo o seguinte comando:

    alter table table_1 add table_numero varchar(20) null

    Porém a base retorna o erro: Cannot find the object "table_1" because it does not exist or you do not have permissions.

    O que acontece é o seguinte, ao expandir a guia de tabelas no banco de dados, não consigo localizar a tabela de referência table_1, porém quando uso o comando:

    select * from sys.sysobjects where type = 'u' and name = 'table_1'
    
    select * from sys.columns where object_id = 1616985087
    Localizo tranquilamente a tabela e as suas respectivas colunas. O SGBD informa que é erro de permissão ou de ausência da tabela, mas com os comandos acima e o acesso feito usando o usuário "SA" comprovam que não deveria existe o problema de permissão e nem de ausência da tabela. Alguém tem alguma dica do que pode ser??



    terça-feira, 9 de julho de 2013 15:43

Respostas

  • Olá Jeferson!

    Esta sua tabela possui um schema em particular?

    Veja abaixo como realizei a adição de uma coluna em uma tabela que criei com um schema chamado Magu:

    create table magu.testeschema (name varchar(25))
    
    alter table magu.testeschema add id int

    Se não usar o schema...

    Msg 4902, Level 16, State 1, Line 3
    Cannot find the object "testeschema" because it does not exist or you do not have permissions.

    Você pode listar as tabelas e seus respectivos schemas usando o comando abaixo:

    SELECT '['+SCHEMA_NAME(schema_id)+'].['+name+']'
    AS SchemaTable
    FROM sys.tables 
    Um abraço!


    Regards,

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   


    terça-feira, 9 de julho de 2013 17:29
  • Olá pessoal, conseguir encontrar e resolver o problema. Tudo estava de quem criou o objeto na base, pois definiram um schema que nem existia mais no banco. Resolvi da seguinte forma:

    1 - selecionei as respectivas colunas, schemas da tabela ;

    SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT
    FROM SmartHTO.INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = N'table_1';
    GO
    

    2 - verifiquei uid do schema que estava definido na tabela;

    SELECT * FROM SYSOBJECTS
    WHERE NAME='table_1' 

    3 - depois alterando com ALTER SCHEMA pra o schema dbo;

    ALTER SCHEMA dbo TRANSFER user.table_1

    4 - após os processos anteriores executados conseguir visualizar a tabela com select e dar ALTER TABLE.

    alter table table_1 add table_numero varchar(20) null
    Obrigado à todos!


    terça-feira, 9 de julho de 2013 18:07

Todas as Respostas

  • Olá Jeferson!

    Esta sua tabela possui um schema em particular?

    Veja abaixo como realizei a adição de uma coluna em uma tabela que criei com um schema chamado Magu:

    create table magu.testeschema (name varchar(25))
    
    alter table magu.testeschema add id int

    Se não usar o schema...

    Msg 4902, Level 16, State 1, Line 3
    Cannot find the object "testeschema" because it does not exist or you do not have permissions.

    Você pode listar as tabelas e seus respectivos schemas usando o comando abaixo:

    SELECT '['+SCHEMA_NAME(schema_id)+'].['+name+']'
    AS SchemaTable
    FROM sys.tables 
    Um abraço!


    Regards,

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   


    terça-feira, 9 de julho de 2013 17:29
  • Olá pessoal, conseguir encontrar e resolver o problema. Tudo estava de quem criou o objeto na base, pois definiram um schema que nem existia mais no banco. Resolvi da seguinte forma:

    1 - selecionei as respectivas colunas, schemas da tabela ;

    SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT
    FROM SmartHTO.INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = N'table_1';
    GO
    

    2 - verifiquei uid do schema que estava definido na tabela;

    SELECT * FROM SYSOBJECTS
    WHERE NAME='table_1' 

    3 - depois alterando com ALTER SCHEMA pra o schema dbo;

    ALTER SCHEMA dbo TRANSFER user.table_1

    4 - após os processos anteriores executados conseguir visualizar a tabela com select e dar ALTER TABLE.

    alter table table_1 add table_numero varchar(20) null
    Obrigado à todos!


    terça-feira, 9 de julho de 2013 18:07