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

MS SQL Server Discussion :

Préfixe dbo automatique


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Préfixe dbo automatique
    Bonjour à tous les experts !

    Je viens d'importer 280 Tables accdb dans un fichier Server Express *.mdf.

    Lorsque je ré-importe maintenant ces Tables (link) dans un nouveau fichier front-end Access 2007, ils se retrouvent tous renommés avec le préfixe "dbo_" ("Personalia" devient "dbo_Personalia", etc, etc...). Et naturellement rien ne fonctionne plus !!!

    Je ne peux pas passer mon temps à recomposer tous les recordsource de tous mes formulaires et encore moins à modifier les Docmd.RunSQL du code VBA....

    Que faites-vous dans un cas pareil ??? Existe-il un moyen d’empêcher l'ajout automatique du préfixe dbo, ou bien faut-il se résoudre à renommer manuellement toutes les Tables liées ??? On pourrait peut-être renommer toutes les Tables d'un seul coup avec un loop vba ?

    Merci d'avance !

    phil


    Je viens de faire ceci, qui marche bien à première vue... Quelqu'un a-t-il d'autres suggestions plus élégantes svp ?

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Dim obj As AccessObject, dbs As Object, i As Long
     
        With CurrentData
            For i = .AllTables.Count - 1 To 0 Step -1
                Set obj = .AllTables(i)
                If obj.Name Like "dbo*" Then DoCmd.Rename Right(obj.Name, (Len(obj.Name) - 4)), acTable, obj.Name
            Next
        End With
     
        Set dbs = Nothing
        Set obj = Nothing

  2. #2
    Rédacteur

    À priori pas d'autre solution que de corriger à postériori. En effet ACCES n'est pas doté du niveau SCHEMA SQL de la norme. SQL Server oui. Or les schémas permettent d'isoler des pans entier de la base dans différents "compartiments" qui sont représentés par des schéma SQL ceci afin d'organiser la base et de régler des problèmes de sécurité d'accès de manière générique.

    Deux possibilités :
    Corriger ta base Access (solution préférable, plus longue mais pérenne)
    Corriger le script (plus rapide)

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  3. #3
    Membre à l'essai
    Okay merci Frédéric !

    Je pense bien conserver ma nomenclature d'origine.

    Le loop Docmd.Rename ne prend que 2 secondes et il peut être amélioré pour les essais suivants (tenir compte d'éventuels MSys ou de Tables temp locales à conserver ou à supprimer).

    Juste une remarque sur le Dialogue d'importation "Link Tables" de Access, qui mélange toutes les Tables et toutes les Vues, sans possibilité de multi-select. On se retrouve donc à cliquer 280 fois sur les Tables à lier, sinon le "Select All" englobe aussi toutes les Vues INFORMATION_SCHEMA... et les sys.*... C'est long, surtout qu'il demande de confirmer quels champs sont les identificateurs uniques, alors qu'il y a déjà une clef unique partout...!

    Aujourd'hui j'attaque la synchronisation des Tables de données sensibles que les utilisateurs ne veulent pas voir transiter par Internet.

    Je vais voir comment fonctionne le Moniteur de réplication de MSSQL Express. Avec 2003, j'utilisais déjà JRO avec un jeu de Tables de Transit sur clés USB. Mais j'ai dé-répliqué pour passer à 2007. Tout le code est déjà fait, y-compris la synch des répertoires de jpg (DBPix de Ammara) et d'archives pdf (méthode s. Leban).

    A+, merci et bonne journée !

  4. #4
    Rédacteur

    J'ai l'impression que vous êtes en train de mettre en œuvre une architecture monstrueuse, peu adaptée.... Pourquoi toutes ces réplications vers des bases access ? Sont-ce des bases locales sur les PC de chacun des utilisateurs qui "dialoguent" avec la base centrale avec des import/export continuels ?

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  5. #5
    Membre à l'essai
    Citation Envoyé par SQLpro Voir le message
    Sont-ce des bases locales sur les PC de chacun des utilisateurs qui "dialoguent" avec la base centrale avec des import/export continuels ?
    A +
    Oui : des bases locales au(x) cabinet(s), sur le laptop des voitures en visite, et aux domiciles de chacun le soir. Il y a donc beaucoup de saisies de données hors connexion durant les visites rurales avec l'impression des ordonnances.

    Une mise à jour quotidienne de chaque poste est suffisante, il n'y a pas de flux import/export continuel. Ce système fonctionne depuis des années, et génère même automatiquement le Cerfa mensuel de déclaration de TVA (plan comptable personnalisé), au centime près pour le comptable. C'est assez complet, mais ça marche sans bug.

    Il y a aussi la gestion de stock et commandes automatisées en fonction des ventes, trois fois par semaine auprès de 5 fournisseurs avec comparaison des tarifs à jour (DoCmd.TransferText).

    Pharmacologie, Taxonomie, cas cliniques, etc, etc,...

    Mais je ne peux plus me contenter de la réplication JRO par clés USB, qui a ses limites !

  6. #6
    Rédacteur

    Dans ce cas il faut passer à du tout MS SQL Server : SQL Server Express sur les portable et un SQL Server standard centralisé.

    En effet, SQL Server inclus des systèmes de réplications au nombre de 9 différents, tous automatisés.
    L'un d'entre eux permet de synchroniser automatiquement les bases satellites de la base centrale dans tous les sens. Dès que le portable se connecte au réseau d'entreprise, cela est détecté par le serveur qui démarre aussitôt une session de réplications de données. Même s'il y a des coupures de réseau, le système est suffisamment résilient pour redémarrer là ou il en était...

    Note de synthèse sur la réplication :
    https://docs.microsoft.com/fr-fr/sql...l-server-ver15

    Dans votre cas, le plus adapté est la réplication de fusion :
    https://docs.microsoft.com/fr-fr/sql...l-server-ver15

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  7. #7
    Membre à l'essai
    Citation Envoyé par SQLpro Voir le message
    Dans ce cas il faut passer à du tout MS SQL Server : SQL Server Express sur les portable et un SQL Server standard centralisé.
    Je m'en doutais bien et je me demandais déjà comment emballer l'installation complète pour les nouveaux utilisateurs.

    En effet, SQL Server inclus des systèmes de réplications au nombre de 9 différents, tous automatisés.
    L'un d'entre eux permet de synchroniser automatiquement les bases satellites de la base centrale dans tous les sens. Dès que le portable se connecte au réseau d'entreprise, cela est détecté par le serveur qui démarre aussitôt une session de réplications de données. Même s'il y a des coupures de réseau, le système est suffisamment résilient pour redémarrer là ou il en était...
    Formidable !

    Note de synthèse sur la réplication :
    https://docs.microsoft.com/fr-fr/sql...l-server-ver15

    Dans votre cas, le plus adapté est la réplication de fusion :
    https://docs.microsoft.com/fr-fr/sql...l-server-ver15

    A +
    Je vais voir ça tout de suite !

    Un grand merci !

    Ouiiiiiiiii ! Merge replication, c'est exactement cela !!!!!!!! Tout colle !!!!!! Il n'y a jamais beaucoup de conflits en vue, mais j'espère que le dialogue de résolution sera plus explicite que celui de Access 2003, avec lequel il faut parfois être un vrai devin !!