Erro: A transferência de dados de um banco de dados SQL Server 2005 Compact Edition ou SQL Server CE para um banco de dados do SQL Server remoto falha quando você usa o método de envio no acesso de dados remoto do SQL Server CE

IMPORTANTE: 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: 330741
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Erro nº: 5612 (SQL Server CE)

Sintomas
Quando você usa o método Push no Microsoft SQL Server 2000 Windows CE Edition 2.0 (SQL Server CE) ou SQL Server 2005 Compact Edition dados RDA (Remote Access) para transferir dados de uma tabela de banco de dados SQL Server CE ou SQL Server 2005 Compact Edition para um servidor SQL remoto banco de dados tabela, a transferência de dados pode falhar. Esse problema pode ocorrer se todas as seguintes condições forem verdadeiras:
  • A tabela de destino no banco de dados remoto do SQL Server contém um ou mais colunas que são definidas como NOT NULL.
  • A tabela de banco de dados do SQL Server CE contém linhas com uma seqüência vazia ou com valores de espaço para as colunas que correspondem às colunas NOT NULL na tabela de destino.

Se uma linha com uma seqüência vazia ou com valores de espaço é inserida na tabela de destino, você poderá observar valores NULL nas colunas anuláveis.

Você não pode perceber esse comportamento quando você usa replicação para transferir dados entre um banco de dados SQL Server 2005 Compact Edition ou SQL Server CE e um banco de dados do SQL Server.

Observação Esse problema não ocorre no Microsoft SQL Server 2000 Windows CE versão 1.1.
Causa
O método Push no SQL Server CE RDA ou no SQL Server 2005 Compact Edition RDA trata valores de seqüência de caracteres ou espaço vazios como valores nulos.
Como Contornar
Para contornar o problema, altere a definição de coluna das colunas que são definidos como NOT NULL na tabela de destino no banco de dados remoto do SQL Server para NULL.

Observação Antes de você re-define uma coluna de tabela de destino como NULL, certifique-se que essa alteração não afeta a integridade ou a consistência do banco de dados.
Mais Informações

Etapas para reproduzir o comportamento

  1. Execute a seguinte instrução Transact-SQL no banco de dados SQL Server remoto:
    CREATE TABLE TestNull (c1 INT PRIMARY KEY, c2 NVARCHAR(30)  NOT NULL)
  2. Usando um aplicativo que usa o SQL Server CE RDA, extrair a tabela TestNull no banco de dados SQL Server CE em seu dispositivo de mão.
  3. Execute as seguintes instruções Transact-SQL no banco de dados SQL Server CE para inserir linhas de teste:
    INSERT INTO TestNull (c1, c2) VALUES (1, ' ') INSERT INTO TestNull (c1, c2) VALUES (2, '  ')INSERT INTO TestNull (c1, c2) VALUES (3, '')INSERT INTO TestNull (c1, c2) VALUES (4, NULL)
  4. Usando o SQL Server CE RDA, envio a tabela TestNull de volta para o banco de dados remoto do SQL Server.

    Observação Você pode observar que a inserção de todas as linhas falha. A inserção falhará porque a coluna c2 na tabela TestNull no banco de dados SQL Server remoto não aceita valores nulos.

Exemplo de solução


Recrie a tabela TestNull com a coluna c2 como anulável e, em seguida, executar a transferência de dados usando RDA do SQL Server. Para fazer isso, execute estas etapas:
  1. Execute a seguinte instrução Transact-SQL no SQL Server remoto banco de dados de teste:
    DROP TABLE TestNullGOCREATE TABLE TestNull (c1 INT PRIMARY KEY, c2 NVARCHAR(30)  NULL)
  2. Usando um aplicativo que usa o SQL Server CE RDA, extrair a tabela TestNull no banco de dados SQL Server CE em seu dispositivo de mão.
  3. Execute as seguintes instruções Transact-SQL no banco de dados SQL Server CE para inserir valores de teste:
    INSERT INTO TestNull (c1, c2) VALUES (1, ' ') INSERT INTO TestNull (c1, c2) VALUES (2, '  ')INSERT INTO TestNull (c1, c2) VALUES (3, '')INSERT INTO TestNull (c1, c2) VALUES (4, NULL)
  4. Usando o SQL Server CE RDA, envio a tabela TestNull de volta para o banco de dados remoto do SQL Server.

    Observação Você pode perceber que todas as linhas na tabela TestNull são inseridas com valores nulos para a coluna c2 no banco de dados SQL Server remoto.
Referências
Para obter mais informações sobre o método Push no SQL Server CE RDA, visite o seguinte site:

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 330741 - Última Revisão: 12/07/2015 13:01:40 - Revisão: 3.5

Microsoft SQL Server 2000 Windows CE Edition 2.0, Microsoft SQL Server 2005 Compact Edition

  • kbnosurvey kbarchive kbmt kbmobility kbclient kbtsql kbtable kbserver kbdatabase kbprb KB330741 KbMtpt
Comentários