none
Pesquisa com select no sql 2012 RRS feed

  • Pergunta

  • Bom dia...

    Tenho uma aplicação que ao fazer uma pesquisa em uma tabela no banco de dado, faz o seguinte comando SQL :

    select c.name, c.status, o.name from syscolumns c, sysobjects o where c.id = object_id ('dbo.Tipo_Operacao_Fiscal') and c.cdefault *= o.id order by colid ASC

     

    E, está dando problema no *=,

    O que fazer para resolver ?

    Abs,


    JUNIOR GUERREIRO T.I


    quinta-feira, 15 de maio de 2014 13:20

Respostas

  • Durval e o seguinte se eu precisar desinstalar o sql 2012 do server, e instalar o sql 2008 vou ter algum problema, com a instancia..

    JUNIOR GUERREIRO T.I

    quinta-feira, 15 de maio de 2014 14:43
  • Durval e o seguinte se eu precisar desinstalar o sql 2012 do server, e instalar o sql 2008 vou ter algum problema, com a instancia..

    JUNIOR GUERREIRO T.I

    Tchula,

    Você poderá ter problemas com outros bancos que podem estar nesta mesma instância. Reinstale a versão que você utilizava anteriormente em outro servidor para fazer seu sistema retornar ao funcionamento em Produção sem maiores impactos.

    Se você não tem acesso aos fontes, acredito que você não tem muitas outras opções e deverá manter esta versão do SQL Server, onde o software foi testado e homologado para uso.

    Não esqueça de marcar como resposta todos os posts que ajudaram na solução!

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    sexta-feira, 16 de maio de 2014 13:28
    Moderador
  • Tchula,

    Uma alternativa para tentar utilizar este tipo de Join, que foi criado para os padrões SQL Ansi 90 é alterar o nível de compatibilidade do banco de dados para 80 que representa o SQL Server 2000.

    Agora desculpe-me a sinceridade o seu fornecedor precisa melhorar esta aplicação, não é aceitável que este tipo de instrução que já foi removida a aproximadamente 10 anos ainda seja utilizada.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]


    quarta-feira, 21 de maio de 2014 13:18
  • Bom dia Pedro...

    Vc pode me dizer como e onde eu faço esta alteração no SQL 2012, e se eu vou ter problemas depois de feita esta alteração..


    JUNIOR GUERREIRO T.I

    quarta-feira, 21 de maio de 2014 14:36
  • Tchula,

    A alteração do nível de compatibilidade é nas propriedades do Banco de Dados.

    Em relação a problemas, somente se você estiver utilizando alguma funcionalidade que foi aplicada após o nível de compatibilidade 80, mas pelo seu cenário acredito que não terá.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 21 de maio de 2014 14:50
  • Boa tarde..

    Rodei este comando no banco de dados

    USE EGISSQL
    GO
    ALTER DATABASE EGISSQL
    SET COMPATIBILITY_LEVEL = 80
    GO

    e me deu um erro dizendo que o sql 2012 só e compatível com 90, 100, 110


    JUNIOR GUERREIRO T.I

    quarta-feira, 21 de maio de 2014 15:01

Todas as Respostas

  • Tchula,

    Altere seu SELECT para utilizar LEFT JOIN, veja um exemplo abaixo para você adaptar à sua necessidade.

    select c.name, c.status, o.name 
    from syscolumns c 
    LEFT JOIN sys.sysobjects o ON c.cdefault = o.id where c.id = object_id ('dbo.Tipo_Operacao_Fiscal') order by colid ASC
    


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quinta-feira, 15 de maio de 2014 13:56
    Moderador
  • Bom dia...

    Durval, obrigado pela sua atenção,  mas sem o fornecedor do software trocar a aplicação, gostaria de saber se exite um parametro no sql 2012 que permita funcionar os selects com *= ao invés do Left Join..


    JUNIOR GUERREIRO T.I

    quinta-feira, 15 de maio de 2014 14:12
  • Tchula,

    Esta sintaxe é uma herança que o SQL Server ainda mantinha vindo do Sybase, mas que não é mais suportada nas novas versões.

    Acredito que para manter esta consulta sem nenhuma alteração você vai precisar manter este banco de dados em uma versão anterior do SQL Server, uma vez que alterar o nível de compatibilidade dos bancos (onde está esta tabela e o "master") pode gerar problemas de funcionamento para toda sua instância SQL.

    A analise da melhor opção é sua (alterar o fonte com o fornecedor ou a versão do SQL Server).


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quinta-feira, 15 de maio de 2014 14:29
    Moderador
  • Durval e o seguinte se eu precisar desinstalar o sql 2012 do server, e instalar o sql 2008 vou ter algum problema, com a instancia..

    JUNIOR GUERREIRO T.I

    quinta-feira, 15 de maio de 2014 14:43
  • Durval o problema e que na aplicação do fornecedor não existe no fonte aquele comando sql para ser alterado, ligamos o profile e foi gerado dinamicamente.

    Alguma dica?


    JUNIOR GUERREIRO T.I

    quinta-feira, 15 de maio de 2014 14:48
  • Durval e o seguinte se eu precisar desinstalar o sql 2012 do server, e instalar o sql 2008 vou ter algum problema, com a instancia..

    JUNIOR GUERREIRO T.I

    Tchula,

    Você poderá ter problemas com outros bancos que podem estar nesta mesma instância. Reinstale a versão que você utilizava anteriormente em outro servidor para fazer seu sistema retornar ao funcionamento em Produção sem maiores impactos.

    Se você não tem acesso aos fontes, acredito que você não tem muitas outras opções e deverá manter esta versão do SQL Server, onde o software foi testado e homologado para uso.

    Não esqueça de marcar como resposta todos os posts que ajudaram na solução!

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    sexta-feira, 16 de maio de 2014 13:28
    Moderador
  • Tchula,

    Uma alternativa para tentar utilizar este tipo de Join, que foi criado para os padrões SQL Ansi 90 é alterar o nível de compatibilidade do banco de dados para 80 que representa o SQL Server 2000.

    Agora desculpe-me a sinceridade o seu fornecedor precisa melhorar esta aplicação, não é aceitável que este tipo de instrução que já foi removida a aproximadamente 10 anos ainda seja utilizada.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]


    quarta-feira, 21 de maio de 2014 13:18
  • Bom dia Pedro...

    Vc pode me dizer como e onde eu faço esta alteração no SQL 2012, e se eu vou ter problemas depois de feita esta alteração..


    JUNIOR GUERREIRO T.I

    quarta-feira, 21 de maio de 2014 14:36
  • Tchula,

    A alteração do nível de compatibilidade é nas propriedades do Banco de Dados.

    Em relação a problemas, somente se você estiver utilizando alguma funcionalidade que foi aplicada após o nível de compatibilidade 80, mas pelo seu cenário acredito que não terá.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 21 de maio de 2014 14:50
  • Boa tarde..

    Rodei este comando no banco de dados

    USE EGISSQL
    GO
    ALTER DATABASE EGISSQL
    SET COMPATIBILITY_LEVEL = 80
    GO

    e me deu um erro dizendo que o sql 2012 só e compatível com 90, 100, 110


    JUNIOR GUERREIRO T.I

    quarta-feira, 21 de maio de 2014 15:01