Mensagem de erro quando utiliza a classe SqlBulkCopy para copiar dados de um recurso para uma tabela de dados no .NET Framework 2.0: "System.InvalidOperationException: não foi possível obter informações de agrupamento de coluna para a tabela de destino"

Traduções de Artigos Traduções de Artigos
Artigo: 944389 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Numa aplicação do Microsoft .NET Framework 2.0, utilize a classe SqlBulkCopy para copiar dados a partir de um System.Data.DataTable a uma tabela do Microsoft SQL Server. Se o nome da tabela contém um carácter ponto (.), receberá a seguinte mensagem de erro:
System.InvalidOperationException foi não processada
Mensagem = "não foi possível obter informações de agrupamento de coluna para a tabela de destino. Se a tabela não está na base de dados actual o nome tem de ser qualificado utilizando o nome de base de dados (por exemplo, [mydb]...[tabelaprivada](por exemplo, [mydb]...[tabelaprivada]); Isto também se aplica a tabelas temporário (por exemplo, #mytable deverá ser especificada como tempdb...#MyTable). "
Source="System.Data"

Causa

Este problema é causado por um problema do System.Data.dll ficheiro.

Como contornar

Para contornar este problema, evite ponto caracteres (.) em nomes de tabela.

Se tiver de utilizar um carácter ponto (.) no nome de uma tabela, utilize o carácter ponto (.) como parte da convenção de nomenclatura de SQL. Por exemplo, utilize um nome de tabela é semelhante ao seguinte:
Server.Database.Schema. tablename

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Mais Informação

Passos para reproduzir o comportamento

  1. Na base de dados Adamastor, execute a seguinte instrução de SQL: seleccione
    select * into [test.33] where 1 = 0
    --Create a table named [test.33].
    
  2. Criar uma aplicação do Visual C# e execute o seguinte código: principal anulação estático ([] argumentos de cadeia)
    static void Main(string[] args)
            {
                SqlConnection con = new SqlConnection("Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=.");
                con.Open();
                SqlConnection dst = new SqlConnection("Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=.");
                dst.Open();
                SqlCommand com = new SqlCommand("select * from customers", con);
                SqlDataReader dr = com.ExecuteReader();
                SqlBulkCopy sbc = new SqlBulkCopy(dst);
                sbc.DestinationTableName = "Northwind.dbo.[Test.33]";
                sbc.WriteToServer(dr); // The failure occurs here.
                dst.Close();
                con.Close();
            }
    

Informações de pilha de chamadas

at System.Data.SqlClient.SqlBulkCopy.AnalyzeTargetAndCreateUpdateBulkCommand(BulkCopySimpleResultSet internalResults)
       at System.Data.SqlClient.SqlBulkCopy.WriteToServerInternal()
       at System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServer(Int32 columnCount)
       at System.Data.SqlClient.SqlBulkCopy.WriteToServer(IDataReader reader)

Propriedades

Artigo: 944389 - Última revisão: 3 de janeiro de 2008 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 3.0
  • Microsoft .NET Framework 3.5
Palavras-chave: 
kbmt kbexpertiseadvanced kbtshoot kbprb KB944389 KbMtpt
Tradução automática
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 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: 944389

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com