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 :

Liste de toutes les DB de tous les serveurs liés


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Par défaut Liste de toutes les DB de tous les serveurs liés
    Bonjour,

    Je recherche le moyen de lister toutes les Databases de chacun des serveurs distants/liés à mon sqlserver local.

    Sur mon sqlserver local j'ai lié 2 autres serveurs : serveur1 et serveur2
    Le serveur1 contient les databases DB1, DB2 et DB3
    Le serveur2 contient les databases DB4 et DB5

    A partir de mon sqlserver local, je souhaiterai via une requête avoir le résultat suivant :

    NomServeur NomDatabase
    serveur1 BD1
    serveur1 BD2
    serveur1 BD3
    serveur2 BD4
    serveur2 BD5

    Merci pour votre retour

  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 010
    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 010
    Billets dans le blog
    6
    Par défaut
    Une requête avec UNION ALL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT @@SERVERNAME AS NOM_SERVER, * FROM MonServeurLié1.master.sys.databases
    UNION ALL
    SELECT @@SERVERNAME AS NOM_SERVER, * FROM MonServeurLié2.master.sys.databases
    etc !
    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 averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Par défaut
    Merci SQLPro pour votre réponse.
    J'y ai songé également à cette requête mais je ne suis pas censé connaitre à l'avance les noms des serveurs liés.

    Je souhaiterai récupérer tous les serveurs liés et pour chaque serveur lié, lister toutes les databases liées à chacun d'eux et tout ça via une requête.

    merci pour votre retour

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'ai une routine qui fait ça :
    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
    30
    31
    32
    DECLARE @sql nvarchar(4000),@linked_instance AS nvarchar(150)
     
    DECLARE Server_cursor cursor
    FOR SELECT Name FROM Sys.Servers
     
    OPEN Server_cursor 
    FETCH NEXT FROM Server_cursor INTO @linked_instance
    WHILE @@fetch_status = 0 
    	BEGIN 
    	SET @sql = 'insert into dbo.db_data_hist 	(instance,database_name,database_id,source_database_id,owner_sid,create_date,compatibility_level,collation_name,user_access,user_access_desc,is_read_only,
    			is_auto_close_on,is_auto_shrink_on,state,state_desc,is_in_standby,is_cleanly_shutdown,is_supplemental_logging_enabled,snapshot_isolation_state,
    			snapshot_isolation_state_desc,is_read_committed_snapshot_on,recovery_model,recovery_model_desc,page_verify_option,page_verify_option_desc,
    			is_auto_create_stats_on,is_auto_update_stats_on,is_auto_update_stats_async_on,is_ansi_null_default_on,is_ansi_nulls_on,is_ansi_padding_on,
    			is_ansi_warnings_on,is_arithabort_on,is_concat_null_yields_null_on,is_numeric_roundabort_on,is_quoted_identifier_on,is_recursive_triggers_on,
    			is_cursor_close_on_commit_on,is_local_cursor_default,is_fulltext_enabled,is_trustworthy_on,is_db_chaining_on,is_parameterization_forced,
    			is_master_key_encrypted_by_server,is_published,is_subscribed,is_merge_published,is_distributor,is_sync_with_backup,service_broker_guid,
    			is_broker_enabled,log_reuse_wait,log_reuse_wait_desc,is_date_correlation_on)
    		select N'''+@linked_instance+''' as instance, name,database_id,source_database_id,owner_sid,create_date,compatibility_level,
    			collation_name,user_access,user_access_desc,is_read_only,
    			is_auto_close_on,is_auto_shrink_on,state,state_desc,is_in_standby,is_cleanly_shutdown,is_supplemental_logging_enabled,snapshot_isolation_state,
    			snapshot_isolation_state_desc,is_read_committed_snapshot_on,recovery_model,recovery_model_desc,page_verify_option,page_verify_option_desc,
    			is_auto_create_stats_on,is_auto_update_stats_on,is_auto_update_stats_async_on,is_ansi_null_default_on,is_ansi_nulls_on,is_ansi_padding_on,
    			is_ansi_warnings_on,is_arithabort_on,is_concat_null_yields_null_on,is_numeric_roundabort_on,is_quoted_identifier_on,is_recursive_triggers_on,
    			is_cursor_close_on_commit_on,is_local_cursor_default,is_fulltext_enabled,is_trustworthy_on,is_db_chaining_on,is_parameterization_forced,
    			is_master_key_encrypted_by_server,is_published,is_subscribed,is_merge_published,is_distributor,is_sync_with_backup,service_broker_guid,
    			is_broker_enabled,log_reuse_wait,log_reuse_wait_desc,is_date_correlation_on
    		from OPENQUERY("'+@linked_instance+'",''select * from master.sys.databases'') DB'
    		EXEC Sp_executesql @sql,N'@linked_instance nvarchar(150)',@linked_instance
    		FETCH NEXT FROM Server_cursor INTO @instance
    	END 
    CLOSE Server_cursor 
    DEALLOCATE Server_cursor
    Attention cependant d'avoir les droits sur les serveurs liés.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Par défaut
    Merci 7gyY9w1ZY6ySRgPeaefZ pour votre routine mais il faut absolument que je passe par une requête.
    Cette requête sera lancée par une view.xml pour afficher la liste des databases de chaque serveurs liés.

    Si vous avez la même chose sous forme de requête je suis preneur :-)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par augan Voir le message
    Merci 7gyY9w1ZY6ySRgPeaefZ pour votre routine mais il faut absolument que je passe par une requête.
    Cette requête sera lancée par une view.xml pour afficher la liste des databases de chaque serveurs liés.
    Si vous avez la même chose sous forme de requête je suis preneur :-)
    Ce n'est pas possible puisque votre liste de linked server est inconnue, il faut bien passer par du SQL dynamique à un moment ou un autre.
    Le plus simple est de stocker le résultat dans une table et de la mettre à jour de temps en temps par une job, genre tous les matins.
    Il n'y a quand même pas une création de bd par heure, non ?

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

Discussions similaires

  1. [Batch] Connexion SFTP + download de tous les fichiers ET tous les répertoires
    Par gazza dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 06/03/2014, 13h45
  2. lister tous les membres de tous les groupes AD
    Par fbb53 dans le forum VBScript
    Réponses: 1
    Dernier message: 03/10/2011, 11h24
  3. Réponses: 3
    Dernier message: 14/03/2007, 17h31
  4. Réponses: 9
    Dernier message: 16/10/2006, 16h35
  5. Réponses: 1
    Dernier message: 19/08/2006, 10h27

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