ignorieren all dies und sehen Sie das Update unter
Im SS 2016 habe ich eine einfache Tabelle haben wie folgt:Odd Fehler mit HierarchyID mit VB
ID int indentity
Code hierarchyid
Name varchar(50)
In meinem VB-Anwendung Ich versuche, die Daten zu lesen, wie folgt:
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.SqlServer.Types
Dim Nodes As New List(Of Node)
Using conn As New SqlConnection(My.Settings.ConnectionString)
com = New SqlCommand("GetInfo", conn)
com.CommandType = CommandType.StoredProcedure
conn.Open()
Dim rdr As SqlDataReader = com.ExecuteReader
While rdr.Read
Nodes.Add(New Node With {.ID = CLng(rdr(0)), .Code = CType(rdr(1), SqlHierarchyId), .Name = CStr(rdr(2))})
End While
End Using
Wo die Abfrage GetInfo nur alle Daten in der SQL-Tabelle zurückgibt und Knoten ist nur eine Klasse, die die drei Spalten in der SQL-Tabelle hält.
Als ich das laufen bekomme ich eine extrem lange Fehlermeldung, die wie folgt beginnt:
System.IO.FileLoadException was unhandled
FileName=Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
FusionLog==== Pre-bind state information ===
LOG: DisplayName = Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
(Fully-specified)
Wenn ich entfernen ".CODE = CType (rdr (1), SqlHierarchyId)" aus dem Innern der While-Schleife I bekomme keinen Fehler und die Knotenliste ist richtig ausgefüllt. Meine Schlussfolgerung ist, dass die Verwendung der HierarchId irgendwie das Problem verursacht.
Aber die Fehlermeldung macht keinen Sinn für mich. Der einzige Hinweis, den ich anbieten kann, ist, dass mein Projekt Verweis auf Microsoft.SQLServer.Types Version 13.0.0.0 ist, während in der Fehlermeldung es als Version 10.0.0.0 aufgeführt ist. Könnte dies das Problem sein, und wenn ja, wie würde ich gehen es reparieren. Wenn nicht, wo sollte ich nach dem Problem suchen?
Ich kann die ganze Fehlermeldung veröffentlichen, wenn Sie denken, dass das helfen könnte.
Update Das Problem ist in der Tat eine Diskrepanz in SQL Server-Typen. Wie bereits erwähnt, ist die Standardeinstellung für Type System Version "neueste", die veraltet ist. Also habe ich "neuste" durch "Type System Version = SQL Server 2016" ersetzt, was zu einem Fehler führte, dass es sich um einen ungültigen Wert handelte. Irgendwann habe ich festgestellt, dass "Type System Version = SQL Server 2012" OK kompiliert, aber jetzt will Microsoft.SqlServer.Types, Version = 11.0.0.0, die nicht auf meinem System ist. Ich habe Version 13. Also habe ich immer noch ein Versionskonfliktproblem. Nun die Frage ist, wie gebe ich meine Verbindungszeichenfolge, um es zu sagen, Version 13 zu verwenden.