Microsoft KB Archive/944389

= Error message when you use the SqlBulkCopy class to copy data from a resource to a data table in the .NET Framework 2.0: &quot;System.InvalidOperationException: Failed to obtain column collation information for the destination table&quot; =

Article ID: 944389

Article Last Modified on 1/3/2008

-

APPLIES TO


 * Microsoft .NET Framework 2.0
 * Microsoft .NET Framework 3.0
 * Microsoft .NET Framework 3.5

-



SYMPTOMS
In a Microsoft .NET Framework 2.0 application, you use the SqlBulkCopy class to copy data from a System.Data.DataTable to a table in Microsoft SQL Server. If the table name contains a dot character (.), you receive the following error message:

System.InvalidOperationException was unhandled

Message=&quot;Failed to obtain column collation information for the destination table. If the table is not in the current database the name must be qualified using the database name (e.g. [mydb]..[mytable](e.g. [mydb]..[mytable]); this also applies to temporary-tables (e.g. #mytable would be specified as tempdb..#mytable).&quot;

Source=&quot;System.Data&quot;



CAUSE
This problem is caused by an issue in the System.Data.dll file.



WORKAROUND
To work around this problem, avoid dot characters (.) in table names.

If you have to use a dot character (.) in a table name, use the dot character (.) as part of the SQL naming convention. For example, use a table name that resembles the following:

server.database.schema.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the &quot;Applies to&quot; section.



Steps to reproduce the behavior
  In the Northwind database, run the following SQL statement: select * into [test.33] where 1 = 0 --Create a table named [test.33].   Create a Visual C# application, and then run the following code: static void Main(string[] args) {           SqlConnection con = new SqlConnection(&quot;Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=.&quot;); con.Open; SqlConnection dst = new SqlConnection(&quot;Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=.&quot;); dst.Open; SqlCommand com = new SqlCommand(&quot;select * from customers&quot;, con); SqlDataReader dr = com.ExecuteReader; SqlBulkCopy sbc = new SqlBulkCopy(dst); sbc.DestinationTableName = &quot;Northwind.dbo.[Test.33]&quot;; sbc.WriteToServer(dr); // The failure occurs here. dst.Close; con.Close; } 

Call stack information
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)

Keywords: kbexpertiseadvanced kbtshoot kbprb KB944389

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.