none
Inserir linhas na view da master Sys.messages RRS feed

  • Pergunta

  • Olá,

    Estou querendo adicionar linhas na sys.messages pois meu banco não tem a opção de portugues

    1046, então as mensagens vem em inglês

    Tava querendo adicionar as em portugues para depois usalas com um set langauge.

    Estou fazendo assim

    insert

    into sys.messages
     

    select

    * from testeerro.dbo.messages_error_pt

    Mais da esse erro embaixo, tem como dar uma permissão para alterar ou algo assim.

    Msg 259, Level 16, State 1, Line 1

    Ad hoc updates to system catalogs are not allowed.

    Att,

    • Movido Gustavo Maia Aguiar quarta-feira, 10 de agosto de 2011 15:18 (De:SQL Server - Desenvolvimento Geral)
    quarta-feira, 10 de agosto de 2011 12:45

Respostas

  • Oi Diego,

    Então temos algo que não está explicado. Se você está trabalhando com mensagens em RANGE acima de 50.000, essas mensagens nunca foram do SQL Server e não estarão contempladas em nenhuma versão. Se a sp_addmessage não for capaz de adicioná-los com o ID de sistema (Range menor que 50.000), então sua instalação do SQL Server "sumiu" com as mensagens por alguma razão.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta Richard Juhasz terça-feira, 3 de janeiro de 2012 17:51
    quarta-feira, 10 de agosto de 2011 19:13

Todas as Respostas

  • Diego,

     

    Isso pode ser resolvido com esse comando:

    sp_configure 'allow updates',1

    GO

    RECONFIGURE WITH OVERRIDE

    GO

     

    Mas o que exatamente voce tem em mente?


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quarta-feira, 10 de agosto de 2011 12:53
    Moderador
  • Apenas me explicando, creio que o que voce quer, a procedure SP_ADDMESSAGE pode ser mais util e muito mais facil de ser utilizada, veja este link do books online: ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/54746d30-f944-40e5-a707-f2d9be0fb9eb.htm
    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quarta-feira, 10 de agosto de 2011 13:02
    Moderador
  • Eu quero adicionar as mensagens em portugues na tabela sys.messages e depois

    usar o set language para alterar para português, para voltar a mensagem em português.

    Porque eu queria deixar a language em inglês, mais só em alguns casos queria passar para portugues. Mais minha sys.messages não tem erro com 1046 que é pt.

    Mais esse sp_configure 'allow updates',1 muda o que?

    Depois tem como voltar valor antigo, vai afetar em que no config, do sqlserver?

    quarta-feira, 10 de agosto de 2011 13:05
  • Diego,

     

    Então, o allow updates quer dizer que voce pode fazer updates em algumas tabelas de sistemas entre outras coisas, porem seu caso é bem especifico a utilização da procedure de sistema sp_addmessage creio que seja a melhor e mais segura opção, todo caso, é possivel sim voltar ao valor anterior basta colocar 'allow updates',0 e dar um reconfigure.


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quarta-feira, 10 de agosto de 2011 13:07
    Moderador
  • Tentei com sp_configure 'allow updates',1 mais não funciona da o mesmo erro citado acima!
    quarta-feira, 10 de agosto de 2011 13:08
  • Diego,

    Segue um exemplo da criação de uma mensagem:

    execute  sp_addmessage
    50500,16,'O aluno código %d está estudando %s na sala %s','us_english','true'

    declare @codigo int
    set @codigo = 123

    declare @treinamento varchar(200)
    set @treinamento = 'SQL SERVER'

    declare @sala varchar(100)
    set @sala = '18'

    raiserror(50500,16,1,@codigo,@treinamento,@sala)

    Esperto ter ajudado, se for o caso, marque como útil e como resposta.


    Rafael Godoi Sabadin
    http://www.linkedin.com/pub/rafael-godoi-sabadin/30/b20/a0b
    Classifique as respostas. O seu feedback é essencial.
    quarta-feira, 10 de agosto de 2011 13:15
  • Diego,

     

    Veja se esse script te ajuda:

    --CRIA EM INGLES

    EXEC sp_addmessage @msgnum = 5000002, @severity = 20, 

       @msgtext = N'hey Man!(%1!)', 

       @lang = 'us_english';

     

    --CRIA EM PORTUGUES

    EXEC sp_addmessage @msgnum = 5000002, @severity = 20, 

       @msgtext = N'Vixi mano!(%1!)', 

       @lang = 'portuguese';

     

    --TESTE

    SET LANGUAGE us_english

    RAISERROR(5000001,1,1,15)

    GO

    SAIDA: hey Man!

     

    SET LANGUAGE portuguese

    RAISERROR(5000001,1,1,15)

    GO

    SAIDA: Vixi mano!


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quarta-feira, 10 de agosto de 2011 13:15
    Moderador
  • Diego,

    vc deseja incluir novas mensagens ou traduzir as defaults de ingles para português?

    pois por padrão o SYS.MESSAGES já tem as mensgens default em português

    Select * from sys.messages where language_id=1046
    


    Se você deseja adicionar novas mensages customizadas, vc deve seguir o exemplo dos colegas acima com a SP_ADDMESSAGE


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 10 de agosto de 2011 13:21
    Moderador
  • Bom Dia,

    Inserir dados em tabelas de sistemas com o Allow Updates é uma técnica que funciona no SQL Server 2000, mas não irá funcionar no 2005 e posteriores. Considerando que você referiu a sys.messages, provavelmente não está usando o SQL Server 2000.

    Ainda que o 2005 (com algumas artimanhas) permite inserir dados diretamente nas tabelas de sistema, nem de longe esse é o caminho recomendado. A sp_addmessage é o caminho mais correto para fazê-lo.

    Eu sigo a recomendação do Marcelo. Até onde sei, as mensagens em português já estão contempladas. Não seria o caso de verificar o SET LANGUAGE ?

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 10 de agosto de 2011 14:24
  • Bom dia Gustavo,

    Então aproveitando você e o Marcelo..

    Tipo não sei por quais motivos o sys.messages está sem a opção do português = 1046

    Por isso que eu estava querendo incluir, ai usuária o set language como você disse!

    Agora será que tem um jeito de reinstalar o banco e checar essa opção pra copiar os erros em portugues, sem perder meus dados gravados no sqlserver?

    Ai já resolveria o problema!

    Obrigado desde já!

    quarta-feira, 10 de agosto de 2011 14:50
  • Bom Dia,

    Se você reinstalar o banco irá perder as suas mensagens, pois, o SQL Server irá disponibilizar as mensagens que vêm por padão. Claro que os bancos, você não irá perder (desde que tenha feito backup), mas as mensagens que você eventualmente tenha cadastrado serão perdidas. Nesse caso você tem duas opções:

    - Mapear suas mensages próprias (se houver), reinstalar e restaurar seus bancos
    - Rodar o script abaixo em um lugar que tenha as mensagens em português e executar o resultado no seu banco de dados. O script irá gerar as instruções para a procedure sp_addmessage

    select
     'EXEC sp_addmessage @msgnum = ' + CAST(message_id As Varchar(5)) +
     ', @severity = ' + CAST(severity As VARCHAR(3)) +
     ', @msgtext = ''' + REPLACE(text,'''',CHAR(39) + CHAR(39)) +
     ', @lang = ''' + CAST(language_id As VARCHAR(5)) +
     ', @with_log = ' + CASE WHEN is_event_logged = 0 THEN '''FALSE''' ELSE '''TRUE''' END
    from sys.messages
    where language_id = 1046

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 10 de agosto de 2011 15:18
  • Gustavo,

    Testei seu script e é muito bom, mais tem um problema, a sp_addmessagens só aceitam mensagens com a id acima 50000, então ela da erro de número quando vou executar..

    Tava pensando em instalar o Service Pack 4 do sql server para a versão Standart que é do nosso banco.. mais não tem a opção em português igual do Express..

    http://www.microsoft.com/download/en/details.aspx?id=7218

    Será se eu atualizar tem uma opção pra Adicionar essas mensagens em Português..

    Não usamos mensagens da sp_addme.. somente a do sys.mes..

    Acho que seria o único jeito!

    Abraço..


    quarta-feira, 10 de agosto de 2011 16:52
  • Oi Diego,

    Então temos algo que não está explicado. Se você está trabalhando com mensagens em RANGE acima de 50.000, essas mensagens nunca foram do SQL Server e não estarão contempladas em nenhuma versão. Se a sp_addmessage não for capaz de adicioná-los com o ID de sistema (Range menor que 50.000), então sua instalação do SQL Server "sumiu" com as mensagens por alguma razão.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta Richard Juhasz terça-feira, 3 de janeiro de 2012 17:51
    quarta-feira, 10 de agosto de 2011 19:13