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

Réplications SQL Server Discussion :

[SQL2008][Connexion]Connexion à un Groupe de Serveur


Sujet :

Réplications SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut [SQL2008][Connexion]Connexion à un Groupe de Serveur
    Bonjour à toutes et à tous,

    J'avoue ne pas être un expert en SQL Server mais j'essaye d'utiliser une nouvelle fonctionnalité de SQL Server 2008 afin de résoudre un problème que je rencontre dans un projet.

    L'objectif est d'interroger de multiples serveurs qui ont chacun la même base de données, comprendre par là le même schéma de base mais avec des informations différentes bien entendu En fait, il s'agit des bases de données utilisées par un Antivirus et le but est de faire du reporting au niveau national, donc d'interroger l'ensemble des bases en même temps.

    Donc pour cela, plutôt que d'utiliser de la réplication, j'ai décidé d'utiliser la nouvelle fonctionnalité de SQL Server 2008 : les Groupes de Serveurs (Server Group).

    J'ai donc créé un Server Group appelé "AntivirNational" et un serveur de gestion (Central Management Server) "TestSupervision" auquel j'ai affecté mon groupe AntivirNational. Et pour finir j'ai affecté toutes mes bases dans le groupe AntivirNational. J'ai créé cela sous SQL Server Management Studio.

    Et cette méthode parfaitement, lorsque j'effectue un clic droit -> New Query, je peux parfaitement interroger tous les serveurs en même temps. Ainsi lorsque je réalise les commandes suivantes :

    Puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM ComputersAndDeletedComputers ;
    J'ai bien le résultat remontant de toute mes bases qui apparaissent dans l'onglet "Results", chaque tuple étant précédé du nom du serveur d'où vient le résultat.

    Bref, j'ai exactement le fonctionnement que je désire (ce qui est déjà un bon point ^^) mais maintenant je voudrais avoir ce type de fonctionnement depuis une application externe. En effet, je désire utiliser une application telle que CrystalReport ou bien SQL Server 2008 Report Builder 2.0 pour interroger ce groupe de serveur et ainsi mettre en forme les résultats.

    Cependant c'est là où je ne sais pas faire, en effet sous tous ces logiciels, lorsque l'on doit configurer le connecteur pour se connecter à la base, on ne peut que sélectionner une base de donnée spécifique et non pas un Server Group comme si les Server Groups étaient invisible depuis l'extérieur de SQL Server Management Studio... ce qui serait un peu bête puisque l'intérêt d'utiliser cette fonctionnalité réside aussi dans le fait de pouvoir l'utiliser depuis une application autre...

    Voilà, j'espère que j'aurai été relativement assez clair sur mon problème, merci par avance,

    Cordialement,

  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
    21 739
    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 : 21 739
    Points : 52 451
    Points
    52 451
    Billets dans le blog
    5
    Par défaut
    Il suffit de créer sur votre serveur centralisé autant de serveur lié qu'il y a de serveur distant et de faire une vue en UNION ALL sur tous les serveur avec comme nom de table un nom qualifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ...
    FROM   MonServeurLié1.MaBase.MonSchema.MaTable
    UNION ALL
    SELECT ...
    FROM   MonServeurLié2.MaBase.MonSchema.MaTable
    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 à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Ok ok, alors le fonctionnement avec les Server Groups n'est pas forcément utile avec ta méthode.

    Actuellement je suis entrain de débugger ce que j'ai fait, en effet j'ai droit à l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cannot resolve collation conflict for column 22 in SELECT statement"
    Mais je vais de ce pas chercher sur Google l'origine du problème.

    Par contre j'ai une autre question, une fois mes serveurs liés créés, je n'aurais plus qu'à me connecter à ma base principale avec mon application externe via un connecteur ODBC et à exécuter les requête en respectant la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonServeurLié1.MaBase.MonSchema.MaTable
    Afin qu'ils puissent se référer aux bonnes tables des bonnes bases c'est bien ça ?

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    J'ai régler mon problème de Collation, mes deux bases n'utilisent pas le même Collate, ce qui est assez embêtant puisque je suis obligé d'utiliser des requêtes du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT ComputersAndDeletedComputers.name
    FROM SupervisonNational_Intranet.SOPHOS3.dbo.ComputersAndDeletedComputers
    UNION ALL
    SELECT ComputersAndDeletedComputers.name COLLATE SQL_Latin1_General_CP1_CI_AS
    FROM SupervisonNational_TestSophosBeta.SOPHOS3.dbo.ComputersAndDeletedComputers ;
    Cela fonctionne parfaitement sauf que je souhaite faire des requêtes de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * COLLATE SQL_Latin1_General_CP1_CI_AS
    FROM ...
    Mais le COLLATE ne fonctionne pas avec les SELECT * J'ai bien entendu eu l'idée de changer le COLLATE de ma base mais il y a 3 dépendances qui m'en empêchent donc je ne peux pas le faire (même si cela aurait été vraiment pratique).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Msg 5075, Level 16, State 1, Line 1
    The object 'CK_ReporterParameters_AutoPurge' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
    Msg 5075, Level 16, State 1, Line 1
    The object 'GroupPathTable' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
    Msg 5075, Level 16, State 1, Line 1
    The object 'GroupPathAndNameTable' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
    Msg 5072, Level 16, State 1, Line 1
    ALTER DATABASE failed. The default collation of database 'SOPHOS3' cannot be set to SQL_Latin1_General_CP1_CI_AS.
    Ne sachant pas comment supprimer ces dépendances, je vais rester sur un fonctionnement sans SELECT *...

    Il est cependant regrettable de ne pas pouvoir interroger les Server Groups directement depuis l'extérieur de SQL Server Management Studio car avec ce type de fonctionnement, il n'y a pas de problème de COLLATE, on peut directement interroger toutes les bases (d'ailleurs je ne sais pas comment il procède dans son fonctionnement interne).

Discussions similaires

  1. [MySQL] connexion a la bd, quel serveur mettre ?
    Par salrouge dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/01/2007, 12h26
  2. Réponses: 2
    Dernier message: 17/11/2006, 00h52
  3. Connexion entrante impossible pour les serveurs de validation W3C
    Par Squalthor dans le forum Serveurs (Apache, IIS,...)
    Réponses: 30
    Dernier message: 13/10/2006, 18h10
  4. Réponses: 5
    Dernier message: 17/05/2006, 10h19

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