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 :

Problème de type défini par l'utilisateur.


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 47
    Points
    47
    Par défaut Problème de type défini par l'utilisateur.
    Bonjour!
    Actuellement, je suis sur un projet dans lequel mes outils sont : SQL Server 2005, .Net Framework, Visual Studio 2005, C#.
    J’ai vu grâce à la MSDN qu’il était possible de créer un type défini par l’utilisateur, qui sera ensuite utilisé comme un type SQL.
    J’ai créé un projet de type « SQL SERVER » ensuite j’ai choisis « type défini par l’utilisateur »
    En voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using Microsoft.SqlServer.Server;
    using System.Security.Permissions; 
     
    [Serializable]
    [Microsoft.SqlServer.Server.SqlUserDefinedType(Format.Native)]
    //[Assembly: FileIOPermission(SecurityAction.RequestOptional,Unrestricted=true)]
     
    public struct TypeEmploye : INullable
    {
        // Il s'agit d'un membre de champ indicateur de position
        public int matricule;
        // Membre privé
        private bool m_Null;
        public string Method1()
        {        //Insérez ici le code de la méthode
            return "Hello";
        }
     
        public SqlString employeeName()
        {
            SqlServerProject_ExempleType.ActiveDirectoryService.Service AD = new SqlServerProject_ExempleType.ActiveDirectoryService.Service();
            AD.Credentials = System.Net.CredentialCache.DefaultCredentials;
             return new SqlString(AD.GetUserInfo("initials", "oadia").ToString());
        }//epmloyeeName
    }//typeEmploye
    NB : J’ai ajouté une référence vers un web service qui attaque Active Directory (ce web service me ramène les informations d’un compte)
    Ici « oadia » est un compte d’utilisateur, et l’attribut « initials » dans Active Directory fait référence au matricule.
    Quand je compile le projet, il n’y a aucun problème, et le déploiement se fait automatiquement ; je crée ensuite une table de teste dont voici la structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE test_table (column1 TypeEmploye)
    J’ajoute ensuite un enregistrement. Jusque là tout se passe bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into test_table values('1')
    Lorsque je teste ma première méthode en faisant : « select column1.Method1() from test_table » j’ai bien un retour d’information ‘hello’, mais la deuxième méthode me ramène des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Msg 6522, Niveau 16, État 2, Ligne 1
    
    Une erreur .NET Framework s'est produite au cours de l'exécution de la routine ou de la fonction d'agrégation définie par l'utilisateur 'TypeEmploye' : 
    
    System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
    System.Security.SecurityException: 
       at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
       at System.Security.CodeAccessPermission.Demand()
       at System.Net.CredentialCache.get_DefaultCredentials()
       at TypeEmploye.employeeName()
    NB : j’ai pri le soin de générer auparavant l’Assembly en faisant : « sgen /assembly:SqlServerProject_ExempleType.dll » ; cela a créé la DLL « SqlServerProject_ExempleType.XmlSerializers.dll » ensuite je l’ai intégré à la base de donnée en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'clr enabled', 1;
    GO
    RECONFIGURE;
    GO
    CREATE ASSEMBLY SqlServerProject_ExempleTypeAssemblyXml
    FROM
    'C:\Documents and Settings\mpsawadogo\Mes documents\Visual Studio 2005\Projects\SqlServerProject_ExempleType\SqlServerProject_ExempleType\bin\Debug\SqlServerProject_ExempleType.XmlSerializers.dll'
    --WITH PERMISSION_SET = UNSAFE
    Go

    Là je pense avoir été explicite. J’espère pouvoir être dépanné. Je coince, et c’est urgent que je puisse trouver une solution.

    Cordialement.

  2. #2
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Je viens de résoudre mon problème!
    en fait, l'erreur relative à 'System.Security.Permissions.EnvironmentPermission était dû au fait d'une permission que je n'avais pas accordé au niveau de mon projet.
    Il fallait simplement mettre la propriété "Niveau d'autorisation" à "Externe"
    Aussi, lors de l'intégration de l'Assembly dans SQL Server, ajouter l'option:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WITH PERMISSION_SET = EXTERNAL_ACCESS
    Actuellement j'ai un type qui peut interagir avec tout et rien
    Ouff...!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Type défini par l'utilisateur non Défini
    Par jarault dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/04/2008, 07h53
  2. Réponses: 2
    Dernier message: 31/07/2007, 15h05
  3. Message erreur Type défini par l'utilisateur non défini
    Par Michel DELAVAL dans le forum Access
    Réponses: 2
    Dernier message: 27/06/2006, 16h37
  4. Trier un tableau de type défini par l'utilisateur
    Par nonaparus dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/10/2005, 21h11
  5. Modifier un type défini par l'utilisateur
    Par soazig dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/08/2004, 12h47

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