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 o comportamento AutoAnsiToOem
Nesta páginaSumárioEste artigo explica páginas de código no SQL Server e como inserir ou obtenção de dados é afectado por activar ou desactivar a definição AutoAnsiToOem. Uma página de códigos, também conhecido como um carácter definido, é um conjunto de 256 em maiúsculas e minúsculas, números e símbolos. Caracteres imprimíveis dos primeiros 128 valores são iguais para todas as opções de conjunto de caracteres. Últimos 128 caracteres, por vezes referidos como caracteres expandidos, diferem de conjunto para conjunto. Página de códigos predefinida para o SQL Server 4. 21a é página de códigos 850 (multilíngue). A predefinição para o SQL Server 6.0 e 6.5 é ISO 8859-1 (Latim-1 ou ANSI), também conhecido como página de códigos 1252. A página de códigos para o SQL Server determina os tipos de caracteres do SQL Server reconhece na base de dados e os resultados que devolve o SQL Server para consultas que envolvem as comparações de caracteres. Tenha em atenção que a página de códigos do SQL Server é diferente da página de código do sistema operativo. Sistemas operativos 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 definições de país. Para o Windows NT em inglês dos Estados Unidos e Windows 95, a página de códigos ANSI predefinida é 1252 e a página de códigos OEM é 437 (Estados Unidos Em inglês). MS-DOS só tem uma página de código OEM. Para inglês (e.u.a.), esta página de códigos é 437 por predefinição. Windows 3.x é executado como uma extensão para MS-DOS e tem uma página de código ANSI 1252 por predefinição. Consola do Windows NT internamente é unicode; no entanto, este é um caso especial e tem de aparecer a ser executado numa página de código MS-DOS. Deste modo, as aplicações de consola no Windows NT eficazmente executadas a página de códigos OEM do computador. No entanto, é necessária qualquer linha de comandos são parâmetros passados para a aplicação da consola na página de códigos ANSI em vez da página de códigos OEM e deste modo, a tradução do AnsiToOem pela aplicação de consola para passar correctamente os parâmetros para SQL Server. A entrada de registo AutoAnsiToOem controla o comportamento de conversão predefinido quando são inseridos ou obter dados. Se AutoAnsiToOem estiver activada, a conversão está activado nos seguintes casos:
Todos os clientes baseados no Windows (tais como ISQL/w, SQL Enterprise Manager, o Gestor de transferência, administrador de SQL e Gestor de objectos SQL) são considerados clientes ANSI. MS-DOS ou aplicações baseadas na consola tal como ISQL e BCP são consideradas os clientes do OEM. A excepção a esta é a opção de transferência de dados do Gestor de objectos, que funciona como um cliente de OEM. Um SQL Server com uma página de código de 1250 1259 thru é considerado um servidor de ANSI e um servidor de SQL com qualquer outra página de código (por exemplo, 850 ou 437) é considerado como um servidor de OEM. A página de códigos OEM utilizada para converter caracteres depende da página de códigos OEM actual do sistema operativo do cliente. Por exemplo, com a opção AutoAnsiToOem activada, carácter ASCII 165 ([ASCII 165]) num servidor ANSI é convertido para ASCII 190 ([ASCII 165]) ao seleccionar a partir de um cliente de OEM com página de códigos 850 e 157 ASCII ([ASCII 165]) quando seleccionar a partir de um cliente de OEM com página de códigos 437. Mais InformaçãoA tabela seguinte fornece uma descrição geral para o resto deste artigo: Reduzir esta tabela
PARTE A: Como determinar a página de códigos do SQL ServerO procedimento armazenado sp_helpsort pode ser utilizado para localizar ordenação o SQL Server ordem e conjunto de caracteres.Parte B: Activar ou desactivar AutoAnsiToOemA entrada de registo AutoAnsiToOem pode ser activada ou desactivada seleccionando o ANSI automáticas à caixa de verificação de OEM no utilitário de configuração do cliente. No SQL Server 4. 21a, Automatic ANSI para OEM está desactivado por predefinição, enquanto que nas versões 6.0 e 6.5 está activada por predefinição.PARTE C: Como verificar a validade dos dados guardadosA função de cadeia de Transact SQL ASCII(char_expr) pode ser utilizada para determinar o que é realmente guardado no servidor. Esta função mostra o valor de código ASCII o carácter mais à esquerda numa expressão do carácter. Por exemplo, se tiver guardado no servidor 850 caracteres "[ASCII 177]", seleccionar os dados de ISQL/w poderá mostrar caracteres "[ASCII 177]" (quando AutoAnsiToOem está activado) ou "[ASCII 241]" (quando AutoAnsiToOem estiver desactivado). No entanto, seleccionar ASCII(<column_name>) irá mostrar-lhe 241 (que é "[ASCII 177]" na página de códigos 850).PARTE D: o que acontece quando um carácter de uma página de códigos não está disponível outroSe uma conversão ocorre e um carácter na página de um código não estiver noutra disponível, o carácter obtém convertido para o mais próximo carácter equivalente na página de códigos. Por exemplo, é convertido 224 ASCII ("alfa") na página de códigos 437 97("a") na página de código ANSI. Quando o converter para página de códigos 437, receberá 97("a"). Este é um problema, porque talvez tenha perdido agora 224("alpha") original. Isto poderá potencialmente causar dados incorrectos sejam guardados no servidor, tal como acontece nos dois exemplos seguintes:Exemplo 1: Tem um servidor de OEM no qual está a inserir dados a partir de um cliente de ANSI e a opção AutoAnsiToOem está activada. Se o carácter que está a inserir é válido em ambas as páginas de código, serão guardados os dados correctos. No entanto, se o carácter é válido em ANSI, mas não no OEM, os dados correctos não serão guardados. Exemplo 2: Pode inserir dados para um servidor de ANSI a partir de um cliente de OEM e a opção AutoAnsiToOem está activada. Se o carácter que está a inserir é válido em ambas as páginas de código, serão guardados os dados correctos. No entanto, se o carácter válido no OEM e não no ANSI, em seguida, dados correctos não serão guardados. PARTE E: Introduzir expandido caracteres com um teclado dos e.u.a.Prima NUMLOCK e utilize o teclado numérico no lado direito do teclado. Para introduzir caracteres expandidos ANSI, mantenha premida a tecla ALT e, em seguida, escreva o código ASCII do carácter precedido por um zero (0). Para introduzir caracteres expandidos do OEM, mantenha premida a tecla ALT e escreva apenas o código ASCII do carácter. Por exemplo, para introduzir +, mantenha premida a tecla ALT e escreva 0165, ou escreva 157 (se a página de códigos OEM do cliente for 437) ou escreva 190 (se a página de códigos OEM do cliente for 850).PARTE F: Como alterar a página de códigos OEM do Windows NT e Windows 95Para Windows NT 3.51, o método preferido de alterar a página de códigos OEM no Windows NT é alterar o idioma em internacional do painel de controlo. Para o Windows NT 4.0 ou Windows 95, a página de códigos OEM é escolhida durante a configuração inicial.Além disso, é possível alterar página de códigos OEM A alterando OEMCP e OEMHAL (apenas Windows NT) valores de registo na seguinte localização: HKEY_LOCAL_MACHINE\SYSTEM\CurrentlControlSet\Control\Nls\CodePage O valor OEMCP controla para o código de OEM que página para converter ANSI e o valor OEMHAL controla a apresentação de caracteres expandidos num prompt de comando. Alguns dos valores possíveis para estes valores de registo são: Reduzir esta tabela
Além de alterar o valor de registo OEMCP, esta definição também altera o valor OEMHAL, que controla a apresentação de caracteres expandidos num prompt de comando. PARTE G: Como alterar a página de códigos OEM do MS-DOS e Windows 3.xPara alterar a página de códigos para MS-DOS, consulte o capítulo 6, suporte de idioma nacional no MS-DOS Programming referência 6.0. Depois da página de código MS-DOS é alterada, tem de executar o programa de configuração para alterar respectivas tabelas de conversão ANSI-OEM para ANSI para OEM conversão.H: parte sugestões de cliente de dados consistenteAs seguintes sugestões ajudará a garantir que os dados armazenados no SQL Server são armazenados acordo com para a página de código de SQL Server em vez de página de códigos do cliente, que normalmente é a causa dos dados incorrectos.Clientes do MS-DOS: MS-DOS uma vez que só tem uma página de código OEM e nenhuma página de código ANSI, não conversões são efectuadas. O cliente irá sempre armazenar dados no servidor com página de códigos OEM do cliente, para a página de códigos do SQL Server deve ser definida para corresponder a página de códigos do cliente. Clientes OEM e ANSI: Se o computador com o SQL Server não está a utilizar a página de códigos ANSI, alterar OEM código de página o cliente para corresponder a página de código de SQL Server e activar a conversão AutoAnsiToOem. Se o computador com o SQL Server está a utilizar a página de códigos ANSI, basta Active a conversão AutoAnsiToOem. Seguem-se excepções para as sugestões acima:
PARTE I: MS-DOS Isql.exe exemplosAs tabelas em cada um dos seguintes exemplos mostram os equivalentes decimais do carácter em vários pontos.INSERT e SELECT do carácter com o cliente Isql.exe MS-DOS com uma página de código OEM 437 para um código 437 entre páginas do SQL Server. Reduzir esta tabela
* O valor nunca é alterado de 157, uma vez que os clientes de MS-DOS não efectuam conversões AnsiToOem. PART J: Exemplos de BCP.exe Win32Exemplo 1:EXPORT e IMPORT da + carácter Win32 BCP.exe cliente com uma página de código OEM 850 para uma página de 850 códigos do SQL Server. Reduzir esta tabela
* Uma vez que o cliente e o servidor são OEM, é efectuada sem conversão. Exemplo 2: IMPORT de + carácter Win32 BCP.exe cliente com uma página de código OEM 437 e dados criados com página de códigos 437, numa página de código ANSI SQL Server. Reduzir esta tabela
* + convertido para o equivalente ANSI. Exemplo 3: EXPORT do cliente de Win32 BCP.exe carácter 165 com uma página de código OEM 437, de uma página de códigos ANSI SQL Server, para importar mais tarde para uma página de 437 códigos do SQL Server. Reduzir esta tabela
* + convertido para o equivalente de OEM. Exemplo 4: EXPORT de + carácter Win32 BCP.exe cliente com uma página de código OEM de 1252, de um ANSI código de página do SQL Server para importar mais tarde para o mesmo SQL Server. Reduzir esta tabela
* Uma vez que a página de códigos ANSI corresponde à página de códigos OEM no cliente, não ocorre nenhuma conversão. PART K: Exemplos de Isqlw.exeExemplo 1:Cliente INSERT e SELECT de Win16 ou Isqlw.exe Win32 para uma página de códigos ANSI SQL Server. Reduzir esta tabela
* Uma vez que o cliente e o servidor são ANSI, é efectuada sem conversão. Exemplo 2: Cliente INSERT e SELECT de Win16 ou Win32 ISQLW.EXE com página de códigos 437 OEM numa página de 437 códigos do SQL Server. Reduzir esta tabela
* [ASCII 165] convertidos equivalente de OEM. ** [ASCII 165] convertidos equivalente ANSI. Tamanho parte transferir exemplos do ' Gestor de 'Exemplo 1:SQL Server transferência Manager 6.0 entre duas página de códigos ANSI SQL Server. Reduzir esta tabela
* Uma vez que o cliente e o servidor são ANSI, é efectuada sem conversão. Exemplo 2: SQL Server transferência Gestor 6.0 com OEM página de códigos 437, de uma página de 437 códigos do SQL Server para um ANSI código de página do SQL Server. Reduzir esta tabela
* [ASCII 165] convertidos equivalente ANSI. ** Porque o cliente e o servidor são ANSI é efectuada sem conversão. Exemplo 3: SQL Server transferência Manager 6.0 com página de códigos 850, OEM de um ANSI código de página do SQL Server para uma página de 850 códigos do SQL Server. Reduzir esta tabela
* Porque o cliente e o servidor são ANSI é efectuada sem conversão. ** [ASCII 165] convertidos equivalente de OEM. Exemplo 4: SQL Server transferência Manager 6.0 com página de código OEM 850, de uma página de 850 códigos do SQL Server para uma página de 850 códigos do SQL Server. Reduzir esta tabela
* [ASCII 165] convertidos equivalente ANSI. ** [ASCII 165] convertidos equivalente de OEM. PART M: ODBC e ANSI para OEM conversõesTodos os clientes ODBC (aplicações de consola e GUI, Graphical User Interface) são clientes de ANSI, conforme definido pela especificação de ODBC. Conversão só irá ocorrer com página de código não ANSI SQL Server. Clientes ODBC tem três opções de conversão: sem conversão, converter com página de código OEM ou utilizar um conversor de página de código de ODBC. Conversão com a página de códigos OEM funciona como ANSI de biblioteca de base de dados para conversão de OEM, de que a página de códigos OEM do cliente determina o que é armazenado no servidor. Esta opção for escolhida seleccionando ConvertOEM caixa de verificação de caracteres ANSI na caixa de diálogo Configuração da origem de dados. Para utilizar um conversor de página de código de ODBC, clique no botão Seleccionar a secção conversão da caixa de diálogo programa de configuração da origem de dados de, faça clique sobre o conversor de página de códigos de MS e, em seguida, seleccione o conversor de página de código a utilizar. Esta opção substitui o OEM converter caixa de verificação de caracteres ANSI e faz a conversão de OEM acordo com o conversor seleccionado, em vez da página de código OEM. Todos os clientes ODBC são clientes ANSI e conversão só ocorrerá com página de código não ANSI SQLservers.PART N: Exemplos de cliente MS Query ODBCExemplo 1:SELECT do cliente de Microsoft Query a partir de uma página de códigos ANSI SQL Server. Reduzir esta tabela
* Dado que o cliente e servidor são ANSI, é efectuada sem conversão independentemente conversão é seleccionada. Exemplo 2: SELECT do cliente do Microsoft Query com página de código OEM 437 e converter OEM para ANSI carácter activada, de uma página de 437 códigos do SQL Server. Reduzir esta tabela
* Convertidos equivalente ANSI. Exemplo 3: SELECT do cliente do Microsoft Query com página de códigos OEM 437, converter OEM para ANSI carácter activada e o Windows Latim-1 (1252) / 850 tradutor de página de códigos MS (Multilingual-Latim 1) a partir de um código 850 página do SQL Server. Reduzir esta tabela
* Convertido para ANSI equivalente utilizando 850 página de código OEM devido a tradução. PARTE O: Outros código de página artigos relacionadosPara 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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 de Artigos
|






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



Voltar ao topo