2017-07-24 4 views
1

J'utilise la commande suivante:SQL Server CREATE ASSEMBLY

CREATE ASSEMBLY [xxxx] from 'my dll path ' 
WITH PERMISSION_SET = UNSAFE; 

mais je reçois une erreur:

system.web, version = 4.0.0.0 not found

Pourquoi dois-je besoin d'un .net framework .net? Je ne comprends pas.

Le serveur SQL a installé .net framework.

+1

'CREATE ASSEMBLY' crée un objet de base de données pour contenir un ensemble ** .NET ** - par conséquent, vous avez bien sûr besoin du framework .NET intégré à SQL Server. Mais ce SQL CLR n'inclut pas ** l'assembly 'System.Web' qui contient principalement des contrôles d'interface graphique basés sur des formulaires Web - rien de ce dont vous aurez réellement besoin dans le code SQL Server. Mais comme l'indique l'erreur - l'assembly que vous essayez d'entrer dans SQL Server * fait * référence * cette dépendance 'System.Web' - se débarrasser de cela et vous devriez être bien –

+0

Merci, il est clair pour moi maintenant – Ian

Répondre

2

L'hôte CLR interne de SQL Server (c'est-à-dire SQLCLR) est un environnement très restreint. Ce n'est pas comme utiliser l'hôte CLR du système d'exploitation (applications de console et applications Windows/desktop, ce à quoi la plupart des programmeurs sont habitués), et il est plus proche de créer une application Web avec des ressources partagées. fonctionnalité. Il existe une liste courte de bibliothèques incluses dans le CLR de SQL Server: Supported .NET Framework Libraries. D'autres bibliothèques .NET Framework, telles que System.Web, doivent être chargées manuellement, si elles peuvent être chargées du tout. Il est généralement préférable d'éviter de telles choses que vous pouvez facilement avoir des ennuis en le faisant. Pour plus d'informations sur le travail avec SQLCLR en général, veuillez consulter la série d'articles que j'écris à ce sujet sur SQL Server Central (l'inscription gratuite est requise pour lire le contenu sur ce site): Stairway to SQLCLR.

Dans votre cas, si vous avez besoin de se connecter à une page Web ou un service Web, vous feriez mieux d'utiliser HttpWebRequest et HttpWebResponse car ils sont inclus dans les bibliothèques prises en charge et ne nécessitent EXTERNAL_ACCESS et non UNSAFE.

+0

Merci vous, c'est clair pour moi maintenant – Ian