IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Référencer une dll du .Net


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Par défaut Référencer une dll du .Net
    Bonjour tout le monde,

    J'aimerai référencer du code C# dans SQL Server 2008 R2. Pour ce faire, j'ai créé un nouveau projet "SQL Server Project" depuis Visual Studio 2008. en suivant le tutoriel http://rudi.developpez.com/sqlserver.../sprocsdotnet/.
    Lorsque je tente d'ajouter la référence System.Web je ne la trouve pas dans la liste. Ceci est normal puisqu'elle nest pas dans les DLL autorisées par SQL Server. J'ai donc suivi le topic http://www.developpez.net/forums/d70...e-stockee-clr/

    Côté SQL Server je dois aussi autoriser cette DLL et c'est là que mes problèmes commencent:

    Si j'essaye la comande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE ASSEMBLY System_Web FROM
    'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll'
        WITH PERMISSION_SET=UNSAFE
    J'obtiens alors le message :
    Assembly 'System.Web' references assembly 'system.web, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a.', which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: version, culture or public key mismatch). Please load the referenced assembly into the current database and retry your request.
    J'ai essayé de référencer manuellement les dépendances
    System.DirecoryServices.dll
    System.DirecoryServices.Protocols.dll
    System.EnterpriseServices.dll
    System.Runtime.Remoting.dll
    Pour les 2 premières il a fallut exécuter le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE ASSEMBLY [System.DirecoryServices.dll]
    FROM 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.DirectoryServices.dll'
    WITH PERMISSION_SET = UNSAFE
    Pour les 2 dernières impossible
    An asymmetric key with name 'System_EnterpriseServices_Key' already exists or this asymmetric key already has been added to the database.
    Alors que je n'ai jamais exécuté ce code avant (testé sur 2 serveurs différents) Je me suis dit que si la clé existait déjà alors le CREATE ASSEMBLY devait fonctionner. Pas du tout.

    Dernier point
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from sys.asymmetric_keys
    Ne m'affiche pas les clés soient disant présentes

    Merci pour votre aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 001
    Billets dans le blog
    6
    Par défaut
    Est-ce que votre base est digne de confiance ? (TRUSTWORTHY ON)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Par défaut CLR - Create Assembly
    Bonjour,

    Merci pour cette info. J'ai testé sur une base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ALTER DATABASE [AdventureWorks] SET TRUSTWORTHY ON
     
    CREATE ASSEMBLY [System.Web.dll]
    FROM 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll'
    WITH PERMISSION_SET = UNSAFE
    et j'ai alors les messages précédemment obtenus :
    Warning: The Microsoft .NET Framework assembly 'system.web, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a, processorarchitecture=x86.' you are registering is not fully tested in the SQL Server hosted environment and is not supported. In the future, if you upgrade or service this assembly or the .NET Framework, your CLR integration routine may stop working. Please refer SQL Server Books Online for more details.
    Warning: The Microsoft .NET Framework assembly 'system.drawing, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a, processorarchitecture=msil.' you are registering is not fully tested in the SQL Server hosted environment and is not supported. In the future, if you upgrade or service this assembly or the .NET Framework, your CLR integration routine may stop working. Please refer SQL Server Books Online for more details.
    Warning: The Microsoft .NET Framework assembly 'system.directoryservices, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a, processorarchitecture=msil.' you are registering is not fully tested in the SQL Server hosted environment and is not supported. In the future, if you upgrade or service this assembly or the .NET Framework, your CLR integration routine may stop working. Please refer SQL Server Books Online for more details.
    Warning: The Microsoft .NET Framework assembly 'system.directoryservices.protocols, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a, processorarchitecture=msil.' you are registering is not fully tested in the SQL Server hosted environment and is not supported. In the future, if you upgrade or service this assembly or the .NET Framework, your CLR integration routine may stop working. Please refer SQL Server Books Online for more details.
    Warning: The Microsoft .NET Framework assembly 'system.enterpriseservices, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a, processorarchitecture=x86.' you are registering is not fully tested in the SQL Server hosted environment and is not supported. In the future, if you upgrade or service this assembly or the .NET Framework, your CLR integration routine may stop working. Please refer SQL Server Books Online for more details.
    Warning: The Microsoft .NET Framework assembly 'system.runtime.remoting, version=2.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil.' you are registering is not fully tested in the SQL Server hosted environment and is not supported. In the future, if you upgrade or service this assembly or the .NET Framework, your CLR integration routine may stop working. Please refer SQL Server Books Online for more details.
    Msg 10300, Level 16, State 2, Line 1
    Assembly 'System.Web' references assembly 'system.web, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a.', which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: version, culture or public key mismatch). Please load the referenced assembly into the current database and retry your request.
    L'ajout d'une DLL peut-elle être globale ? Au niveau serveur et non base ?

  4. #4
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    1.
    As-tu essayé d'ajoutant une directive using en entête de ta classe ?
    2.

    Pour l'ajout manuel de reférence, as-tu trouvé dans l'onglet SQL server (de la fenêtre Ajout des reférences) la dll system.Web ?


    3. as-tu essayé d’enregistrer la dll avec Regsvr32 ?

    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

  5. #5
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Oups !
    Etienne ZINZINDOHOUE
    Billets-Articles

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Par défaut
    Bonjour Zinzineti et merci pour ta réponse,

    Citation Envoyé par zinzineti Voir le message
    1.
    As-tu essayé d'ajoutant une directive using en entête de ta classe ?
    Dans le code c#, c'est le cas effectivement.

    2.

    Pour l'ajout manuel de reférence, as-tu trouvé dans l'onglet SQL server (de la fenêtre Ajout des reférences) la dll system.Web ?
    Ce point là fonctionne dans Visual Studio, c'est au niveau SQL Server que le Create Assembly pose problème.

    3. as-tu essayé d’enregistrer la dll avec Regsvr32 ?
    Non, mais comme la dll est dans le Gac. Je vais tenter

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par CoderCool Voir le message
    Non, mais comme la dll est dans le Gac. Je vais tenter
    Inutile. Cela ne sert que pour les DLL COM, cela n'a absolument aucun rapport avec le sujet.

    D'une manière générale,ce n'est pas du tout une bonne idée d'utiliser le SQLCLR pour de la communication externe (ce que semble indiquer ton idée de rajouter la DLL System.Web).

    Il vaut mieux se limiter aux éléments du framework apparaissant quand on crée un projet SQL CLR sous Visual Studio.

    Accessoirement, il est impossible d'enregistrer une assembly qui déclare des variables static non readonly. (question de sécurité : un objet SQLCLR doit être "sans contexte").

    Si tu dois faire causer ta base avec le monde externe, je te suggère plutot d'aller voir du coté du Service Broker.

    Précise nous ton besoin fonctionnel et on pourra t'aiguiller.

Discussions similaires

  1. Référencer une DLL dans framewok inférieur en .net
    Par aiglelibre dans le forum Visual Studio
    Réponses: 2
    Dernier message: 23/08/2010, 15h21
  2. Référencer une DLL C# sous un projet C++
    Par spinta dans le forum C#
    Réponses: 1
    Dernier message: 09/06/2010, 16h22
  3. utilistion d'une dll perso .net
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/12/2009, 20h32
  4. comment référencer une dll
    Par benkunz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 20/04/2007, 16h01
  5. Réponses: 1
    Dernier message: 18/07/2006, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo