none
Eviter les doublons RRS feed

  • Question

  • Bonjour Habituer à utiliser Access dans mes développements je suis novice dans l'utilisation de sql server. Ma question est la suivante:    Existe-t-il dans la définition d'une colonne d'une table la possibilité d'éviter les doublons à la manière d'Access ce qui évite de se compliquer la vie dans les requêtes. D'avance merci. P. S.


    ps

    lundi 5 mai 2014 15:55

Réponses

  • Bonjour

    Question 1. Oui.  Vous devez créer une contrainte d'unicité.

    ALTER TABLE laTable
    ADD CONSTRAINT UX_Constraint UNIQUE (laColonneUnique)
    GO

    Question 2. Dans le concepteur vous avez la possibilité de définir un champ entier comme Identity. Il est l'équivalent d'un autonumber Access. Il vous demande aussi la première valeur et le pas (d'habitude 1, 1).

    Question 4. Ici vous avez une possible réponse. Je crois que vous parlez de nvarbinary et pas nvarchar.
    Varbinary(Max) vs image data type

    Bien cordialement,

     


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera mardi 6 mai 2014 06:00
    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:33
    mardi 6 mai 2014 05:24
  • Je reformule donc mes questions :

    Dans une base Access en créant une colonne d'une table nous pouvons décider qu'une colonne n'accepte pas les doublons je n'ai rien vu de comparable ? Cela est-il possible sans passer par les requêtes?

    De même dans une base Access une colonne de numération des enregistrements se créée automatiquement: cela est très pratique. Est ce possible d'avoir le même mécanisme dans sql server?

    Au vue des forums sur sql server l'enregistrement d'image se fait fréquemment dans une colonne de type nvarchar(Max) et non de type image quel en est la raison?

    D'avance merci

    P.S.


    ps

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:33
    lundi 5 mai 2014 19:43
  • Bonjour,

    - Votre réponse  répond bien à ma question.

    - Toutefois "comment utiliser un script" sur SQL Server est ce que systématique je dois l'inclure dans ma requête c#?

    - Je n'arrive pas à supprimer un ou plusieurs enregistrements avec la commande de suppression d'enregistrement:

    "Delete * From Base.Messages"; ou "Delete * from Base.Messages where Nom=AAA";

    - Je suppose également que je dois inclure un script mais quel est-il?

    Dans mon appli en cours de développement avec des Web Services et Visual studio je constate qu'après redémarrage de mon ordinateur l'appli se voit refuser l'accès à la base de données. Il faut à chaque fois que j'ouvre ma base de données via Sql Server Management Studio pour que l'accès soit autoriser à mon appli. Comment éviter ce verrouillage de la base de données au redémarrage.

    D'avance merci

    P.S.


    ps

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:35
    mardi 6 mai 2014 07:21
  • Vous ne devez pas inclure le scripte dans une requête.
    Ce scripte doit être exécutée  une seule fois et vas modifier la structure de la table.
    Chaque essaye d’insertion d’une valeur qui existe déjà vas générer une erreur et annuler l’insert dans la table. 
    Donc simplement exécutez la scripte dans Sql Server Management Studio.
    La commande Delete n’accepte pas le « * »,  donc Delete from Base.Messages where Nom='AAA'
    Pour le dernier  problème, quelle version de SQL utilisez-vous?
    Vous attachez un fichier DB après ouvrir la connexion avec SQL Server Management Studio?

    Quel string de conexion utilisez-vous?

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:33
    mardi 6 mai 2014 08:18
  • Apres avoir ouvrir la SQL Server Management Studio, vous avez Nouvelle requête ou "New Query". Voir l'image:

    Normalement "Delete from BaseClients.Message" vas vider la table BaseClients.Message. Si vous avez une condition Where après, il va supprimer seulement les lignes ou la condition est vraie.

    Vous pouvez essayer truncate table BaseClients.Message qui fonctionne en certains cas.

    Voir ici quelques examples pour extraire des champs de type image de BD :

    http://forums.asp.net/t/1440518.aspx?Retrieving+images+from+Sql+server+and+Display+at+Gridview+C+

    Pour la creation d'un utilisateur prenez quelques minutes pour lire cet article :

    http://technet.microsoft.com/fr-fr/library/aa337562.aspx

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:35
    mardi 6 mai 2014 11:18
  • Bonjour

    Un petit retour?

    Merci!

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:35
    jeudi 8 mai 2014 06:33

Toutes les réponses

  • Bonjour

    Merci de reformule la question ,


    Said WAHID

    lundi 5 mai 2014 19:19
  • Je reformule donc mes questions :

    Dans une base Access en créant une colonne d'une table nous pouvons décider qu'une colonne n'accepte pas les doublons je n'ai rien vu de comparable ? Cela est-il possible sans passer par les requêtes?

    De même dans une base Access une colonne de numération des enregistrements se créée automatiquement: cela est très pratique. Est ce possible d'avoir le même mécanisme dans sql server?

    Au vue des forums sur sql server l'enregistrement d'image se fait fréquemment dans une colonne de type nvarchar(Max) et non de type image quel en est la raison?

    D'avance merci

    P.S.


    ps

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:33
    lundi 5 mai 2014 19:43
  • Bonjour

    Question 1. Oui.  Vous devez créer une contrainte d'unicité.

    ALTER TABLE laTable
    ADD CONSTRAINT UX_Constraint UNIQUE (laColonneUnique)
    GO

    Question 2. Dans le concepteur vous avez la possibilité de définir un champ entier comme Identity. Il est l'équivalent d'un autonumber Access. Il vous demande aussi la première valeur et le pas (d'habitude 1, 1).

    Question 4. Ici vous avez une possible réponse. Je crois que vous parlez de nvarbinary et pas nvarchar.
    Varbinary(Max) vs image data type

    Bien cordialement,

     


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera mardi 6 mai 2014 06:00
    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:33
    mardi 6 mai 2014 05:24
  • Bonjour,

    - Votre réponse  répond bien à ma question.

    - Toutefois "comment utiliser un script" sur SQL Server est ce que systématique je dois l'inclure dans ma requête c#?

    - Je n'arrive pas à supprimer un ou plusieurs enregistrements avec la commande de suppression d'enregistrement:

    "Delete * From Base.Messages"; ou "Delete * from Base.Messages where Nom=AAA";

    - Je suppose également que je dois inclure un script mais quel est-il?

    Dans mon appli en cours de développement avec des Web Services et Visual studio je constate qu'après redémarrage de mon ordinateur l'appli se voit refuser l'accès à la base de données. Il faut à chaque fois que j'ouvre ma base de données via Sql Server Management Studio pour que l'accès soit autoriser à mon appli. Comment éviter ce verrouillage de la base de données au redémarrage.

    D'avance merci

    P.S.


    ps

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:35
    mardi 6 mai 2014 07:21
  • Vous ne devez pas inclure le scripte dans une requête.
    Ce scripte doit être exécutée  une seule fois et vas modifier la structure de la table.
    Chaque essaye d’insertion d’une valeur qui existe déjà vas générer une erreur et annuler l’insert dans la table. 
    Donc simplement exécutez la scripte dans Sql Server Management Studio.
    La commande Delete n’accepte pas le « * »,  donc Delete from Base.Messages where Nom='AAA'
    Pour le dernier  problème, quelle version de SQL utilisez-vous?
    Vous attachez un fichier DB après ouvrir la connexion avec SQL Server Management Studio?

    Quel string de conexion utilisez-vous?

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:33
    mardi 6 mai 2014 08:18
  • Merci de votre réponse:

    - Comment executer le script une fois avec Sql management studio ou avec Visual studio?

    - Ma string de connexion est@"Data Source=MATHURIN\SQLEXPRESS;Initial Catalog= BaseClients;Integrated Security=True";

    - J'aimerai d'ailleurs ajouter un Login un password mais je ne sais comment procéder j'ai peur de fermer la base une fois pour toute.

    - En ce qui concerne le Delete j'ai essayé la string "Delete from BaseClients.Message" pour enlever toutes les lignes de la table message mais sans succès. Cela ne m'enlève qu'une seule ligne à la fois. C'est pourquoi j'ai pensé qu'il fallait un script en outre ma table en phase de mise au point du programme comporte de nombreuses lignes identiques (doublons).

    - Sur certaines tables j'ai des colonnes string et des colonnes image avez vous un exemple de code pour service Web  de type Aspnet pour charger ses tables avec des données ( string et Image (byte je suppose) ou les lire.

    - Sur Access je n'avais aucun problème pour réaliser ce genre de travail mais sur Sql server avec lequel je suis novice je n'ai pas trouver d'exemples de web service avec insert pour le remplissage de la table qui comprend des colonnes photos et des colonnes images  mais seulement en lecture de colonnes string.

    Merci d'avance

    P.S.


    ps

    mardi 6 mai 2014 10:51
  • Apres avoir ouvrir la SQL Server Management Studio, vous avez Nouvelle requête ou "New Query". Voir l'image:

    Normalement "Delete from BaseClients.Message" vas vider la table BaseClients.Message. Si vous avez une condition Where après, il va supprimer seulement les lignes ou la condition est vraie.

    Vous pouvez essayer truncate table BaseClients.Message qui fonctionne en certains cas.

    Voir ici quelques examples pour extraire des champs de type image de BD :

    http://forums.asp.net/t/1440518.aspx?Retrieving+images+from+Sql+server+and+Display+at+Gridview+C+

    Pour la creation d'un utilisateur prenez quelques minutes pour lire cet article :

    http://technet.microsoft.com/fr-fr/library/aa337562.aspx

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:35
    mardi 6 mai 2014 11:18
  • Bonjour

    Un petit retour?

    Merci!

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse SEVRY1444 jeudi 8 mai 2014 14:35
    jeudi 8 mai 2014 06:33