Der folgende Code implementiert einen UDT, die von einem generischen (SortedDictionary) ableitet:Warum werden von Generics abgeleitete CLR-Typen in SQL Server 2008 und höher nicht unterstützt?
[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedType(Format.UserDefined, MaxByteSize = 8000)]
public class udtMassSpectra : SortedDictionary<float, float>, INullable, IBinarySerialize, ICloneable, IDisposable
{
...
}
Erstellen der Art (T-SQL):
:
CREATE TYPE dbo.udtMassSpectra EXTERNAL NAME MassSpectra.udtMassSpectra;
eine Ausnahme auslöst Msg 10331, Ebene 16, Status 1, Zeile 1 Typ 'udtMassSpectra' in Assembly 'MassSpectra' stammt von einem generischen Typ ab, der für einenicht unterstützt wird 210 CLR-Typ.
Was ist der Grund? Gibt es eine andere Problemumgehung als das Ausblenden der Basisklasse in einem privaten Mitglied? Dieser Code funktioniert gut auf einem SQL-Server 2005.
Ich hoffe, sie werden antworten. http://connect.microsoft.com/SQLServer/feedback/details/737635/cannot-create-udt-which-derives-from-a-generic-on-sql-server-2008 – lorond
Ich denke, die Tatsache, dass es 2005 funktionierte und der Bericht wurde nicht auf Connect geschlossen, zeigt an, dass Sie über einen altmodischen Bug gestolpert sind. – Godeke