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>
Der RPC -Protokollstrom (TDS) Remote Procedure Call (TDS) Remote Procedure Call (TDS) ist falsch ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post