J'utilise le code ci-dessous pour la création d'une procédure stockée CLR. Pendant que je crée l'Assemblée. il montre le problème ci-dessous. Mon cadre cible est 4.0. serveur SQL est 2008 R2
Code SQL:
create Assembly SampleSearch from 'E:\CLR Files\Sample\ElasticSearch.dll'
message d'erreur:
CREATE Assembly for Assembly 'ElasticSearch' a échoué car l'assembly Est créé pour une version non prise en charge du runtime Common Language .
Microsoft SQL Server n'autorise pas le CLR en mode mixte. Ce qui veut dire qu’il est lié statiquement à une version particulière du CLR (ce qui n’est pas la même chose que le .NET Framework pour lequel la plupart des gens le confondent). SQL Server 2005, 2008 et 2008 R2 sont liés à la version 2.0 du CLR, qui gère les versions 2.0, 3.0 et 3.5 de .NET Framework, tandis que SQL Server 2012 et 2014 sont liés à la version 4.0 du CLR, qui prend en charge les versions 4.0 et 4.5 de .NET Framework. x, 4.6.x, etc.
Tu peux soit:
UNSAFE
, pour cela, vous devez définir l'option de base de données pour TRUSTWORTHY
sur ON
(il est préférable de laisser OFF
si possible).Pour des informations plus détaillées sur les nuances .NET dans SQL Server (SQLCLR), veuillez consulter l'article suivant que j'ai écrit sur SQL Server Central, si ce n'est l'ensemble de la série:
Escalier vers SQLCLR niveau 5: développement (utilisation de .NET dans SQL Server) (l'inscription gratuite est requise par ce site)
Définissez le cadre cible sur 2.0, puis réessayez.
La mauvaise nouvelle est vous ne pouvez pas faire ça. SQL 2008 prend en charge la version 2.0