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 :

Travailler avec les Extended Properties [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Travailler avec les Extended Properties
    Bonjour à tous,

    J'ai une colle que je n'arrive pas à résoudre, vous allez peut être pouvoir m'aider.
    Afin de clarifer, si une database est utilisé pour de la Prod ou autre, je voudrais utiliser les "extended properties" :

    Code pour les créer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC [Database].sys.sp_addextendedproperty @name=N'MS_description Name', @value=N'xxxx'
    Voici le code pour les afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    USE database
    SELECT name, value
    FROM fn_listextendedproperty(default, default, default, default, default, default, default);
    Par contre, est t'il possible d'avoir cette meme information mais pour toutes les bases de mon serveur ?
    Avec un foreach peut être? Quelles sont vos conseils?

    Merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Vous pouvez faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    EXECUTE master.sys.sp_MSforeachdb 
    'use ?;
    SELECT name, value
    FROM fn_listextendedproperty(default, default, default, default, default, default, default);
    '

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Le seul soucis, c'est que le nombre de DB est amené à evoluer, car j'ai toujours un "use"
    N'est t'il pas possible de pouvoir utiliser par exemple la vue sys.databases avec une jointure pour être sur d'avoir toutes les bases?

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    ce que je vous ai proposé va exécuter la commande sur chacune des bases présentes au moment de l’exécution.

    en gros, master.sys.sp_MSforeachdb va remplacer automatiquement le ? par le nom de chaque base sur le serveur, et exécuter la commande.

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Autant pour moi, par contre je rencontre un probleme de syntaxe sur certaines bases.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 911, Level 16, State 1, Line 1
    Could not locate entry in sysdatabases for database 'SharePoint_AdminContent_XXXXXX'. No entry found with that name. Make sure that the name is entered correctly.
    Il semble tronqué le nom de la DB, du coup j'ai essayé avec une syntaxe du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EXEC sp_MSforeachdb 
    'use ''?'';'
    Mais là c'est toutes les bases qu'il me met en erreur.

    Merci en tout cas pour l'aide apporté

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DECLARE @SQL NVARCHAR(max);
    SET @SQL = N'';
    SELECT @SQL = @SQL + N'SELECT ''' + name +N''' AS DB_NAME, name, value FROM [' + name 
           + N'].sys.fn_listextendedproperty(default, default, default, default, default, default, default) UNION ALL '
    FROM   sys.databases 
    WHERE  source_database_id IS NULL
      AND  user_access = 0
      AND state = 0
      AND is_in_standby = 0;
    SET @SQL= SUBSTRING(@SQL, 1, LEN(@SQL) - 10);
    EXEC (@SQL);
    Pour vous former :
    Nom : Couverture livre SQL server Eyrolles.jpg
Affichages : 169
Taille : 105,0 Ko

    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/ * * * * *

  7. #7
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour Frédéric,

    Merci de ton retour, on étions ensemble en formation au mois de Juin/Juillet ! Je veux bien acheter ton livre, mais je pense que tu ne fais toujours pas de reduction :p

    Merci

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Hélas, les réduction, c'est pas de mon ressort, mais :
    1) de Eyrolles
    2) du gouvernement qui interdit des remises supérieures à 5% sur les livres !

    Même moi, je ne peut bénéficier de livres au prix remisé que pour 10 exemplaires d'auteur, à condition de l'acheter avec mes deniers (pas de facture société...)

    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/ * * * * *

  9. #9
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour Frédéric et tous,

    Est ce que je peux de votre aide de nouveau ?
    Le but c'est d'interroger un serveur distant (linked server) et d'insérer les résultats dans une table.

    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
     
    INSERT into MATABLE (test)
    SELECT *
    from openquery("MONSERVEUR",'
     
    DECLARE @SQL NVARCHAR(max);
    SET @SQL = N'''';
    SELECT @SQL = @SQL + N''SELECT '''' + name +N'''' AS DB_NAME, name, value, @@servername as ServerName FROM ['' + name 
           + N''].sys.fn_listextendedproperty(default, default, default, default, default, default, default) UNION ALL ''
    FROM   sys.databases 
    WHERE  source_database_id IS NULL
      AND  user_access = 0
      AND state = 0
      AND is_in_standby = 0;
    SET @SQL= SUBSTRING(@SQL, 1, LEN(@SQL) - 10);
    EXEC (@SQL);
     
    ')
    Je dois logiquement dédoubler les apostrophes, par contre je rencontre un problème du type :

    Invalid length parameter passed to the LEFT or SUBSTRING function.
    Une idée ?
    Merci beaucoup

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/06/2006, 11h03
  2. travailler avec les images et les vecteurs
    Par susimido dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/04/2006, 15h02
  3. Travail avec les int8
    Par VirtualDolby dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/04/2006, 09h33
  4. Réponses: 8
    Dernier message: 22/11/2005, 07h29

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