Mensaje de error cuando utiliza la clase SqlBulkCopy para copiar datos desde un recurso a una tabla de datos de .NET Framework 2.0: "System.InvalidOperationException: no se pudo obtener información de intercalación de columna de la tabla de destino"

Seleccione idioma Seleccione idioma
Id. de artículo: 944389 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

En una aplicación de Microsoft .NET Framework 2.0, utilice la clase SqlBulkCopy para copiar datos desde un System.Data.DataTable a una tabla en Microsoft SQL Server. Si el nombre de la tabla contiene un carácter de punto (.), recibirá el siguiente mensaje de error:
System.InvalidOperationException fue no controlada
Mensaje = "Error al obtener información de intercalación de columna de la tabla de destino. Si la tabla no está en la actual base de datos el nombre debe calificarse con el nombre de base de datos (por ejemplo, [mydb]...[MiTabla](por ejemplo, [mydb]...[MiTabla]); esto también se aplica a las tablas temporales (p. ej., #mytable se especifica como tempdb..#MyTable). "
Source="System.Data"

Causa

Este problema está causado por un problema en el System.Data.dll archivo.

Solución

Para evitar este problema, evite punto caracteres (.) en los nombres de tabla.

Si tiene utilizar un carácter de punto (.) en un nombre de tabla, utilice el carácter punto (.) como parte de la convención de nomenclatura de SQL. Por ejemplo, utilice un nombre de tabla similar al siguiente:
Server.Database.Schema. tablename

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Más información

Pasos para reproducir el comportamiento

  1. En la base de datos Northwind, ejecute la siguiente instrucción SQL: seleccione
    select * into [test.33] where 1 = 0
    --Create a table named [test.33].
    
  2. Crear una aplicación de C# y, a continuación, ejecuta el código siguiente:
    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();
            }
    

Información de la pila de llamadas

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)

Propiedades

Id. de artículo: 944389 - Última revisión: jueves, 03 de enero de 2008 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 3.0
  • Microsoft .NET Framework 3.5
Palabras clave: 
kbmt kbexpertiseadvanced kbtshoot kbprb KB944389 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 944389

Enviar comentarios

 

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