Der RPC -Protokollstrom (TDS) Remote Procedure Call (TDS) Remote Procedure Call (TDS) ist falsch

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Der RPC -Protokollstrom (TDS) Remote Procedure Call (TDS) Remote Procedure Call (TDS) ist falsch

by Anonymous » 16 Apr 2025, 08:04

Es gibt viele Fragen zu diesem Fehler, aber keiner scheint verwandt zu sein. < /p>

0-tabellenWertParameter (""), Zeille 0, Spalt 0: Der 0xe7-Datentyp HAT Eine Ungültige DATEN- ODER-Metadatenlän. Es ist < /p>



Der Protokollstrom (TDS) Remote-Verfahren (TDS) Remote-Verfahren (RPC) ist falsch < /p>

0xe7-ValuedParameter ("),", " Metadatalegth. (X64)
Oct 28 2016 18:17:30
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows Server 2016 Standard 6.3 (Build 14393: ) (Hypervisor)



What is causing this:

Wir verwenden benutzerdefinierte Typen, um die Tabellen -Wert -Parameter zu übergeben. Der Fehler ist reproduzierbar, um eine DataTable mit einer einzelnen Zeile und einer Spalte zu übergeben, die eine Zeichenfolge enthält.CREATE TYPE dbo.para_table_varchar AS TABLE (value nvarchar(10) COLLATE Latin1_General_ci_ai NOT NULL);
< /code>

Der C# Code (.NET 4.6.1) < /p>

DataTable table = new DataTable();
DataColumn column = table.Columns.Add("value", typeof(string));
column.MaxLength = 0;
table.Rows.Add(string.Empty);

SqlParameter para = _cmd.Parameters.Add("@ptable", SqlDbType.Structured, 0);
para.Value = table;
para.TypeName ="dbo.para_table_varchar";
< /code>

Der Befehl sieht so aus < /p>

SELECT * FROM someTable WHERE someColumn IN (SELECT value FROM @ptable)
< /code>

Dies geschieht nur in der genannten SQLServer 2016. Ungefähr 20 andere Kunden haben dieses Problem nicht. < /p>

Während Microsoft dieses Problem hier abdeckt, scheint die vorgeschlagene Arbeit (Einstellung der Größe auf -1) nicht zu funktionieren. < /p>

Top