SqlBulkCopy kopiert zu viele Zeilen?!

02/06/2008 - 16:15 von Jürg Danuser | Report spam
Hallo zusammen
Ich habe eine SQL-Tabelle, welche ich von einer Datenbank in eine
andere kopieren möchte. Allerdings erhalte ich beim letzten Datensatz
immer eine SQLException: "Zeichenfolgen- oder Binàrdaten würden
abgeschnitten."

Kann mir da eventuell jemand weiterhelfen?

Ich arbeite mit C# unter .NET 2.0 mit dem SQL-Server 2005 Developer.

Code:

SqlConnection connServer = new SqlConnection("packet
size@96;server=sqlserv;Trusted_Connection=true;database=BTO_DCReplTest;uid=sa;pwd=PWD");
SqlConnection connClient = new SqlConnection("packet
size@96;server=sqlserv;Trusted_Connection=true;database=repl;uid=sa;pwd=PWD");

connServer.Open();
connClient.Open();

SqlCommand SQLCmdDel = new SqlCommand("DELETE FROM
BTOReleaseplanung1", connClient);
SQLCmdDel.ExecuteNonQuery();

SqlCommand SQLCmdRead = new SqlCommand("SELECT * FROM
BTOReleaseplanung1", connServer);
SqlDataReader reader = SQLCmdRead.ExecuteReader();

SqlBulkCopy bulk = new SqlBulkCopy(connClient);
bulk.BulkCopyTimeout = 0;
bulk.DestinationTableName = "BTOReleaseplanung1";
bulk.WriteToServer(reader);

connServer.Close();
connClient.Close();


Schema der Tabelle BTOReleaseplanung1 (Tabelle 100% identisch in
beiden DB's):

CREATE TABLE [dbo].[BTOReleaseplanung1](
[Id] [int] NOT NULL,
[Form_Id] [int] NOT NULL,
[BTOCombo1] [nvarchar](60) NULL,
[BTOCombo3] [nvarchar](60) NULL,
[BTOCombo2] [nvarchar](60) NULL,
[BTOCombo4] [nvarchar](60) NULL,
[BTONumberText1] [float] NULL,
[BTODate1] [datetime] NULL,
[BTONumberText2] [float] NULL,
[BTOTextbox2] [nvarchar](255) NULL CONSTRAINT
[DF__BTOReleas__BTOTe__3EE80C3F] DEFAULT ('Searchbox refering to
responsable developer'),
[BTOTextbox1] [nvarchar](255) NULL CONSTRAINT
[DF__BTOReleas__BTOTe__40D054B1] DEFAULT ('Search field refering to
separate table'),
[BTOOptionalButtons1] [nvarchar](10) NULL CONSTRAINT
[DF__BTOReleas__BTOOp__3DF3E806] DEFAULT ('Test result'),
[BTOCombo5] [nvarchar](255) NULL,
[BTOTextbox3] [nvarchar](255) NULL CONSTRAINT
[DF__BTOReleas__BTOTe__3FDC3078] DEFAULT ('Search box refering to
responsable tester'),
[BTOCombo6] [nvarchar](255) NULL,
[BTOCombo7] [nvarchar](255) NULL,
[BTOSearchCombo1] [nvarchar](100) NULL,
[BTOSearchCombo2] [nvarchar](100) NULL,
[Insert_RId] [int] NULL,
[Update_RId] [int] NULL,
[BTONumberText3] [float] NULL,
[BTODate2] [datetime] NULL,
[BTODate3] [datetime] NULL,
[RTFControl] [ntext] NULL CONSTRAINT
[DF__BTOReleas__RTFCo__3CFFC3CD] DEFAULT ('|0|0|0|0|0|0|0|0|0|0'),
[BTOCombo9] [nvarchar](255) NULL,
[BTOCombo8] [nvarchar](255) NULL,
[BTOCombo10] [nvarchar](255) NULL,
[BTOTextbox4] [nvarchar](50) NULL,
CONSTRAINT [BTOReleaseplanung1_Id] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY
= OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]


Vielen Dank im Voraus!
 

Lesen sie die antworten

#1 Elmar Boye
02/06/2008 - 16:50 | Warnen spam
Hallo Jürg,

Jürg Danuser schrieb:
Ich habe eine SQL-Tabelle, welche ich von einer Datenbank in eine
andere kopieren möchte. Allerdings erhalte ich beim letzten Datensatz
immer eine SQLException: "Zeichenfolgen- oder Binàrdaten würden
abgeschnitten."



Das besagt nur, dass die Daten für eine der Spalten zu lang sind.
Da beim BulkCopy die Daten blockweise übertragen werden, ist es
auch nicht gesagt, dass die letzte Zeile ist.

Prüfe bitte, ob die Schemata von Quell- und Zieltabelle identisch sind.
Schon wenn die Reihenfolge abweicht, muß ein Mapping vorgegeben werden:
<URL:http://msdn.microsoft.com/de-de/lib...s.aspx>

und ein "SELECT * ..." sollte man deswegen gleich vermeiden.

Ich arbeite mit C# unter .NET 2.0 mit dem SQL-Server 2005 Developer.



BTW: Die Frage passt besser in die Datenbank Newsgruppe.
<URL:news://msnews.microsoft.com:119/microsoft.public.de.german.entwickler.dotnet.datenbank>

Gruß Elmar

Ähnliche fragen