ID do artigo: 153449 - Última revisão: segunda-feira, 17 de novembro de 2003 - Revisão: 3.0 INF: Páginas de código do SQL Server e comportamento de AutoAnsiToOem
Nesta páginaSumárioEste artigo explica páginas de código no SQL Server e como inserir ou recuperar dados é afetado por ativar ou desativar a configuração AutoAnsiToOem. Uma página de código, também conhecido como um caractere definido, é um conjunto de 256 maiúsculas e minúsculas, números e símbolos. Os caracteres imprimíveis dos primeiros 128 valores são os mesmos para todas as opções de conjunto de caracteres. Os últimos 128 caracteres, às vezes referidos como caracteres estendidos, diferem de conjunto para conjunto. A página de código padrão para o SQL Server 4.21a é página de código 850 (multilíngüe). O padrão do SQL Server 6.0 e 6.5 é ISO 8859-1 (Latino 1 ou ANSI), também conhecido como página de código 1252. A página de código para o SQL Server determina ambos os tipos de caracteres que o SQL Server reconheça no seu banco de dados e os resultados que o SQL Server retorna para consultas que envolvem comparações de caractere. Observe que a página de código do SQL Server é diferente da página de código do sistema operacional. Sistemas operacionais Windows NT e Windows 95 ter uma página de código ANSI e uma página de código OEM. As páginas de código ANSI e OEM dependem das configurações de país. Para os EUA inglês Windows NT e Windows 95, a página de código ANSI padrão é 1252, e a página de código OEM é 437 (Estados Unidos Em inglês). MS-DOS só tem uma página de código OEM. Para o português do Brasil, esta página de código é 437 por padrão. Windows 3.x é executado como uma extensão para MS-DOS e tem uma página de código 1252 ANSI por padrão. Console do Windows NT é internamente unicode; no entanto, isso é um caso especial e devem aparecer estar em execução em uma página de código do MS-DOS. Portanto, aplicativos de console no Windows NT efetivamente executar a página de código OEM do computador. No entanto, qualquer linha de comando parâmetros passados para o aplicativo de console são na página de código ANSI em vez da página de código OEM e, assim, uma tradução de AnsiToOem é exigida pelo aplicativo de console para passar corretamente os parâmetros para o SQL Server. A entrada do Registro AutoAnsiToOem controla o comportamento de conversão padrão quando dados são inseridos ou recuperados. Se AutoAnsiToOem estiver habilitada, conversão estiver habilitada nos seguintes casos:
Todos os clientes baseados no Windows (como ISQL/w, SQL Enterprise Manager, Gerenciador de transferência, administrador SQL e Gerenciador de objetos SQL) são considerados clientes ANSI. MS-DOS ou aplicativos console como ISQL e BCP são considerados clientes OEM. A exceção a isso é a opção de transferir dados do Gerenciador de objetos, que se comporta como um cliente OEM. Um SQL Server com uma página de código de 1250 1259 a é considerado para ser um servidor de ANSI e um SQL Server com qualquer outra página de código (por exemplo, 437 ou 850) é considerado como um servidor do OEM. A página de código OEM usada para converter caracteres depende a atual página de código OEM do sistema operacional do cliente. Por exemplo, com a opção AutoAnsiToOem ativada, o caractere ASCII 165 ([ASCII 165]) em um servidor de ANSI obtém convertido para ASCII 190 ([ASCII 165]) ao selecionar de um cliente OEM com página de código 850 e ASCII 157 ([ASCII 165]) ao selecionar de um cliente OEM com página de código 437. Mais InformaçõesA tabela a seguir fornece uma visão geral para o restante deste artigo: Recolher esta tabela
PARTE A: Como determinar a página de código do SQL ServerO procedimento armazenado sp_helpsort pode ser usado para localizar classificação do SQL Server conjunto ordem e o caractere.Parte B: Habilitando ou desabilitando AutoAnsiToOemA entrada do Registro AutoAnsiToOem pode ser habilitada ou desabilitada, selecionando o ANSI automático à caixa de seleção de OEM no utilitário de configuração do cliente. No SQL Server 4.21a, automática ANSI para OEM é desabilitado por padrão, ao passo que nas versões 6.0 e 6.5, ele é ativado por padrão.PARTE C: Como verificar a validade dos dados salvosA função de seqüência de caracteres Transact SQL ASCII(char_expr) pode ser usada para determinar o que realmente é salvo no servidor. Esta função mostra o valor código ASCII o caractere mais à esquerda em uma expressão de caractere. Por exemplo, se você tiver caracteres "[ASCII 177]" salvo em um servidor 850, selecionando os dados de isql/w pode mostrar caracteres "[ASCII 177]" (quando for AutoAnsiToOem em) ou "[ASCII 241]" (quando AutoAnsiToOem está desativado). No entanto, selecionar ASCII(<column_name>) mostrará 241 (que é "[ASCII 177]" na página de código 850).PARTE D: o que acontece quando um caractere em uma página de código não está em outro disponívelSe uma conversão ocorre e um caractere em uma página de código não está disponível em outro, o caractere obtém convertido para seu caractere mais próximo equivalente na página de código. Por exemplo, 224 ASCII ("alfa") na página de código 437 é convertido para 97("a") na página de código ANSI. Quando você convertê-lo volta para a página de código 437, você recebe 97("a"). Este é um problema, porque agora você perdeu 224("alpha") original. Isso pode causar potencialmente dados incorretos sejam salvos no seu servidor, como acontece nos dois exemplos a seguir:Exemplo 1: Você tem um servidor de OEM na qual você está inserindo dados em um cliente ANSI e sua opção de AutoAnsiToOem está habilitada. Se o caractere que você está inserindo é válido em ambas as páginas de código, os dados corretos serão salvas. No entanto, se o caractere é válido em ANSI mas não no OEM, os dados corretos só serão salvas. Exemplo 2: Você insere dados em um servidor de ANSI de um cliente OEM e é ativada a opção AutoAnsiToOem. Se o caractere que você está inserindo é válido em ambas as páginas de código, os dados corretos serão salvas. No entanto, se o caractere é válido em OEM e não em ANSI, em seguida, dados corretos não serão salvas. PARTE E: Inserindo estendido de caracteres com um teclado americanoPressione NUMLOCK e utilizar o teclado numérico no lado direito do teclado. Para inserir caracteres estendidos ANSI, mantenha pressionada a tecla ALT e digite o código ASCII do caractere precedido por um zero (0). Para inserir caracteres estendidos de OEM, mantenha a tecla ALT e digite apenas o código do caractere ASCII. Por exemplo, para inserir +, mantenha pressionada a tecla ALT e digite 0165, ou digite 157 (se página de código OEM do cliente for 437) ou digite 190 (se a página de código OEM do cliente é 850).PARTE F: Como alterar a página de código OEM do Windows NT e Windows 95Para Windows NT 3.51, o método preferido de alterar a página de código OEM no Windows NT é alterar o idioma da International do painel de controle. Para Windows NT 4.0 ou Windows 95, a página de código OEM é escolhida durante a instalação inicial.Além disso, página de código OEM O pode ser alterada por alterar o OEMCP e OEMHAL (somente Windows NT) valores do registro no seguinte local: HKEY_LOCAL_MACHINE\SYSTEM\CurrentlControlSet\Control\Nls\CodePage O valor de OEMCP controla qual código OEM página para converter ANSI e o valor OEMHAL controla a exibição dos caracteres estendidos em um prompt de comando. Alguns dos valores possíveis para esses valores do Registro são: Recolher esta tabela
Além de alterar o valor de registro OEMCP, essa configuração também altera o valor OEMHAL, que controla a exibição dos caracteres estendidos em um prompt de comando. PARTE G: Como alterar a página de código OEM do MS-DOS e do Windows 3.xPara alterar a página de código para MS-DOS, consulte o capítulo 6, suporte ao idioma nacional no MS-DOS programação referência 6.0. Depois que a página de código do MS-DOS é alterada, execute o programa de instalação do Windows para alterar suas tabelas de conversão de ANSI OEM do ANSI para OEM conversão.H: PART sugestões de cliente para dados consistentesAs sugestões a seguir ajudará a garantir que os dados armazenados no SQL Server é armazenados acordo com para a página de código do SQL Server em vez de página de código do cliente, que geralmente é a causa do dados inválidos.Os clientes do MS-DOS: MS-DOS como tem apenas uma página de código OEM e nenhuma página de código ANSI, nenhuma conversão é feita. O cliente sempre armazenará dados no servidor com página de código OEM do cliente, a página de código do SQL Server deve ser definida como corresponder à página de código do cliente. Clientes OEM e ANSI: se o computador que está executando o SQL Server não estiver usando a página de código ANSI, alterar a página de código OEM do cliente para coincidir com a página de código do SQL Server e ativar a conversão AutoAnsiToOem. Se o computador que executa o SQL Server estiver usando a página de código ANSI, basta ative a conversão AutoAnsiToOem. Exceções para as sugestões acima são:
PARTE I: MS-DOS Isql.exe exemplosAs tabelas em cada um dos exemplos a seguir mostram os equivalentes decimais do caractere em vários pontos.INSERT e SELECT da + caractere com o cliente MS-DOS Isql.exe com uma página de código 437 do OEM para e partir de um código 437 página SQL Server. Recolher esta tabela
* O valor nunca é alterada de 157, desde que os clientes do MS-DOS não executam conversões AnsiToOem. PARTE J: Win32 bcp.exe exemplosExemplo 1:EXPORT e IMPORT do + caractere Win32 Bcp.exe cliente com uma página de código OEM 850 em uma página de 850 código SQL Server. Recolher esta tabela
* Como o cliente e o servidor são OEM, nenhuma conversão é executada. Exemplo 2: IMPORT de + caractere Win32 Bcp.exe cliente com uma página de código OEM 437 e dados criados com página de código 437, em uma página de código ANSI SQL Server. Recolher esta tabela
* + convertido para o equivalente ANSI. Exemplo 3: EXPORT de 165 caractere Win32 Bcp.exe cliente com uma página de código 437 de OEM, de uma página de código ANSI SQL Server, para importar posteriormente para uma página de 437 código SQL Server. Recolher esta tabela
* + convertido novamente para OEM equivalente. Exemplo 4: EXPORT de + caractere Win32 Bcp.exe cliente com uma página de código de OEM 1252, de um ANSI código página SQL Server para importar posteriormente para o mesmo SQL Server. Recolher esta tabela
* Porque a página de código ANSI coincide com a página de código OEM no cliente, nenhuma conversão ocorre. PARTE K: Exemplos de Isqlw.exeExemplo 1:INSERT, SELECT do Win16 e Win32 Isqlw.exe cliente em uma página de código ANSI SQL Server. Recolher esta tabela
* Como o cliente e o servidor são ANSI, nenhuma conversão é executada. Exemplo 2: Cliente INSERT, SELECT do Win16 e Win32 ISQLW.EXE com página de código OEM 437 em uma página de 437 código SQL Server. Recolher esta tabela
* [ASCII 165] convertidas em equivalentes de OEM. ** [ASCII 165] convertidas em ANSI equivalentes. PARTE L: Exemplos de Gerenciador de transferênciaExemplo 1:SQL Server Transfer Manager 6.0 entre duas páginas de código ANSI SQL Servers. Recolher esta tabela
* Como o cliente e o servidor são ANSI, nenhuma conversão é executada. Exemplo 2: SQL Server Transfer Manager 6.0 com OEM página de código 437, de uma página de 437 código SQL Server para um ANSI código página SQL Server. Recolher esta tabela
* [ASCII 165] convertidas em ANSI equivalentes. ** Porque tanto o cliente e servidor são ANSI nenhuma conversão é executada. Exemplo 3: SQL Server Transfer Manager 6.0 com página de código OEM 850, de um ANSI código página SQL Server para uma página de 850 código SQL Server. Recolher esta tabela
* Como o cliente e o servidor são ANSI nenhuma conversão é executada. ** [ASCII 165] convertidas em equivalentes de OEM. Exemplo 4: SQL Server Transfer Manager 6.0 com página de código OEM 850, de uma página de 850 código SQL Server para uma página de 850 código SQL Server. Recolher esta tabela
* [ASCII 165] convertidas em ANSI equivalentes. ** [ASCII 165] convertidas em equivalentes de OEM. PARTE M: ODBC e ANSI para OEM conversõesTodos os clientes ODBC (aplicativos de GUI e de console) são clientes ANSI conforme definido pela especificação ODBC. Conversão somente ocorrerá com página de código não-ANSI SQL Servers. Os clientes ODBC ter três opções de conversão: nenhuma conversão, traduzir com página de código OEM, ou usar um conversor de página de código ODBC. Conversão com a página de código OEM funciona da mesma biblioteca de banco de dados ANSI para a conversão de OEM, em que a página de código OEM do cliente determina o que é armazenado no servidor. Essa opção é escolhida, selecionando ConvertOEM à caixa de seleção de caracteres ANSI na caixa de diálogo configuração de fonte de dados. Para usar um conversor de página de código ODBC, clique no botão Select na seção de conversão da caixa de diálogo Configurar fonte de dados, clique no conversor de página de código do Microsoft e, em seguida, selecione o conversor de página de código para usar. Esta opção substitui o OEM converter para caixa de seleção de caracteres ANSI e faz a conversão OEM acordo com para o conversor escolhido, em vez da página de código OEM. Todos os clientes ODBC são clientes ANSI e conversão somente ocorrerá com página de código não-ANSI SQLservers.PART N: Exemplos de cliente MS Query ODBCExemplo 1:SELECT do cliente do Microsoft Query de uma página de código ANSI SQL Server. Recolher esta tabela
* Como o cliente e servidor são ANSI, nenhuma conversão é executada independentemente de qual conversão é escolhido. Exemplo 2: SELECT do cliente do Microsoft Query com página de código OEM 437 e converter OEM para caractere ANSI ativado, de uma página de 437 código SQL Server. Recolher esta tabela
* Convertidas em ANSI equivalentes. Exemplo 3: SELECT de cliente do Microsoft Query com página de código OEM 437, converter OEM para caractere ANSI habilitado e o Windows Latino 1 (1252) / 850 conversor de página de código MS (Multilíngüe-Latino 1) de um código 850 página SQL Server. Recolher esta tabela
* Convertido em ANSI equivalente usando a página de código OEM 850 devido à conversor. PARTE O: Outros relacionados código página artigosPara obter mais informações sobre páginas de código e a opção AnsiToOem, consulte os seguintes artigos na Base de dados de Conhecimento da Microsoft:75435 - Windows, Code Pages, and Character Sets (http://support.microsoft.com/kb/75435/EN-US/ ) 152980 - BUG: AnsiToOem Check Box Does Not Work in 6.0 Transfer Manager (http://support.microsoft.com/kb/152980/EN-US/ ) A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 153449
(http://support.microsoft.com/kb/153449/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



Voltar para o início