web-dev-qa-db-fra.com

Créez une procédure stockée CLR à l'aide de la dll créée par .net framework 4.0 in the server SQL 2008. Elle affiche une erreur

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 .

19
Kirupananthan.G.S

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:

  • Recompilez en utilisant une version de structure inférieure, mais si vous utilisez une fonctionnalité démarrée dans .NET Framework version 4.0 ou ultérieure, cela ne fonctionnera pas. L'utilisation de .NET Framework 2.0 est toujours le pari le plus sûr pour SQL Server 2005-2008. Si vous devez utiliser .NET Framework 3.0 ou 3.5 pour des fonctionnalités qui ne sont pas dans la version 2.0 (et non dans la liste des bibliothèques .NET Framework prises en charge), vous devez également enregistrer le fichier .NET Framework 3.0/3.5 approprié. DLL dans SQL Server en tant que 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).
  • Effectuez une mise à niveau vers SQL Server 2012, 2014 ou 2016.

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)

22
Solomon Rutzky

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

0
Alireza