Usuário com melhor resposta
Inserir linhas na view da master Sys.messages

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.messagesselect
* from testeerro.dbo.messages_error_ptMais 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)
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
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 -
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 -
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?
-
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 -
-
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. -
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 -
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 -
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 -
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á!
-
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_addmessageselect
'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- Sugerido como Resposta Gustavo Maia Aguiar 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..
-
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