Subject: | DBD::ODBC - [Microsoft][SQL Server Native Client 10.0][SQL Server]The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. |
Date: | Wed, 29 Jul 2009 10:45:59 -0700 |
To: | bug-DBD-ODBC [...] rt.cpan.org |
From: | Michael Thomas <mockodin [...] gmail.com> |
Bug:
DBD::ODBC::db do failed: [Microsoft][SQL Server Native Client
10.0][SQL Server]The incoming tabular data stream (TDS) remote
procedure call (RPC) protocol stream is incorrect. Parameter 7 (""):
Data type 0xE7 has an invalid data length or metadata length.
(SQL-42000) [for Statement "INSERT INTO longdescs
(bug_id,who,bug_when,thetext,isprivate)
VALUES (?,?,?,?,?)"] at Bugzilla/DB/Mssql.pm line 626
Bugzilla::DB::Mssql::do(undef, 'INSERT INTO longdescs
(bug_id,who,bug_when,thetext,isprivate)...', undef, 9, 1, '2009-07-28
17:45:59.353', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...',
0) called at Bugzilla/Bug.pm line 540
Bugzilla::Bug::create('Bugzilla::Bug', 'HASH(0x408a098)') called at
D:\WebRoot\Bugzilla\post_bug.cgi line 175
It appears that when inserting to a NVARCHAR(MAX) field in a MSSQL
2008 database, that the precision is being incorrectly calculated.
NVARCHAR(MAX) behaves more inline with a text field in relation to how
much data it will hold, I believe that no precision needs to be sent.
Using Management Studio for mssql 2008 I have tested inserting up to
500k characters in to a nvarchar(max) field with no issues.
http://msdn.microsoft.com/en-us/library/ms186939.aspx*
nvarchar* [ ( n | *max* ) ]
Variable-length Unicode character data. *n** *can be a value from 1 through
4,000. *max indicates that the maximum storage size is 2^31-1 bytes*. The
storage size, in bytes, is two times the number of characters entered + 2
bytes. The data entered can be 0 characters in length.
Environment:
Windows 2008 SP2
64 Bit
IIS7
ActiveState Perl version: 5.10
DBD::ODBC version: 2.22