Compartilhar via


Solucionando problemas de geração de dados

Você pode enfrentar os seguintes problemas ao trabalhar com planos de geração de dados:

  • Geração de dados falha quando as restrições de verificação forem violadas.

  • Não é possível atribuir o gerador de dados de expressão Regular para colunas de tipo definido pelo usuário

  • Não é possível gerar dados para tabelas com disparadores de exclusão

  • Problemas com dados vinculados geradores

  • Não é possível gerar dados para as colunas ESPARSAS

Geração de dados falha quando as restrições de verificação forem violadas.

Quando você gera dados para uma coluna que tem uma restrição de verificação, a operação falhará se os dados serão gerados que viola a restrição. Você pode usar o Visualização de geração de dados janela para ver se os dados violam a restrição, antes de executar o plano. Para obter mais informações, consulte Como: Visualizar um plano de geração de dados.

Para corrigir esse problema, você deve usar um dos seguintes métodos:

Não é possível atribuir o gerador de dados de expressão Regular para colunas de tipo definido pelo usuário com restrições exclusivas

Quando você tentar atribuir um gerador de dados para uma coluna que possui uma restrição exclusiva, a lista de geradores disponíveis exibe somente os geradores podem produzir valores exclusivos. Porque o gerador de expressão Regular não é garantido para produzir valores exclusivos, você não pode usá-lo para preencher uma coluna de tipo definido pelo usuário que possui uma restrição exclusiva.

Para gerar dados para uma coluna de tipo definido pelo usuário com uma restrição exclusiva, você deve usar o gerador de ligação de dados ou um gerador de dados personalizados. Para obter mais informações, consulte Os dados ligados gerador e Gerar dados de teste especializado com um gerador de dados personalizados.

Não é possível gerar dados para tabelas com disparadores de exclusão

Algumas tabelas têm disparadores que impedem que você exclua as linhas naquelas tabelas. Se você tentar excluir linhas de uma tabela, o disparador traz de volta a operação de exclusão. Você não pode gerar dados normalmente como uma tabela ou uma tabela que faz referência a essa tabela. Por exemplo, você não pode gerar dados normalmente para a tabela de funcionários no banco de dados AdventureWorks.

Para gerar dados para essa tabela, use um dos seguintes métodos:

  • Desativar ou excluir o disparador, executar o plano de geração de dados e reabilitar ou adicionar novamente o disparador.

  • Execute o plano de geração de dados. Quando for solicitado para limpar o conteúdo das tabelas antes de novas linhas são inseridas, clique em não. Os novos dados que você gerar são adicionados para todos os dados existentes na tabela para que o disparador de exclusão não ocorre. Esse método pode causar resultados imprevisíveis e erros podem aparecer se qualquer uma das colunas tem uma restrição exclusiva.

Problemas com dados vinculados geradores

Se a geração de dados falha para um ou mais colunas para o qual você especificou um dados vinculados gerador de coluna na saída do gerador de Detalhes da coluna janela exibe um dos "sem saída" ou "Nenhuma saída coercitivo". As seções a seguir descrevem os motivos para esse tipo de falha de geração de dados.

Nenhuma saída.

Se a coluna de saída do gerador exibe "Sem saída", a instrução SELECT que você especificou na propriedade Selecionar consulta provavelmente está incorreta. Porque a instrução SELECT pode ser difícil ver o Propriedades janela, você talvez queira copiar e colar a instrução na Transact-SQL editor para verificar se a instrução está correta.

Nenhuma saída coercitivo

Se a coluna de saída do gerador exibe "Não coercitivo saída", o tipo de dados que não pode ser forçada a instrução SELECT para retornar o tipo de dados para a coluna para a qual você está gerando dados. Por exemplo, se você quiser gerar dados para uma coluna do tipo INT, a seguinte instrução SELECT causaria "Não coercitivo saída" para aparecer:

SELECT RAND() * (column1 - column2) AS Column1 FROM Table1

Você deve atualizar a instrução SELECT para retornar os dados é coercitivo para INT, da seguinte maneira:

SELECT CAST(RAND() * (column1 - column2) AS INT) AS Column1 FROM Table1

Não é possível gerar dados para as colunas ESPARSAS

Quando você tenta gerar dados para uma tabela que contém um ou mais colunas ESPARSAS e um COLUMN_SET, o seguinte erro pode aparecer: "Falha na geração de dados devido a seguinte exceção: A propriedade ColumnMapping não corresponde a nenhuma coluna na origem ou de destino."

Isso pode ocorrer, por exemplo, se você tentar gerar dados para a tabela a seguir:

CREATE TABLE [dbo].[SparseTable]
(
ID INT PRIMARY KEY,
C1 varchar(20) SPARSE NULL, 
C2 smallint SPARSE NULL,
C3 varchar(20) SPARSE NULL,
SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS
)

Para gerar dados para uma tabela que contém as colunas ESPARSAS e um COLUMN_SET, você deve alterar o método preferido de inserção de dados para "sqlv1compatibilitysink" ou, você deve usar um gerador de dados personalizados.

Se você usar "sqlv1compatibilitysink", a geração de dados pode ser lenta em tabelas grandes.

Para obter mais informações sobre como alterar o método preferido de inserção de dados, consulte Como: Especifique opções para geradores de dados e padrões. Para obter mais informações sobre como criar e implantar um gerador de dados personalizados, consulte Gerar dados de teste especializado com um gerador de dados personalizados.