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

MS SQL Server Discussion :

mettre un serveur en parametre de procédure stockée


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 68
    Par défaut mettre un serveur en parametre de procédure stockée
    Bonjour a tous,

    je sollicite une fois encore votre aide...

    je souhaite mettre un script en procédure stocké ( script seul ne retourne pas d'erreur), avec en paramètre le nom d'un server/instance (le nom peut varier suivant qui on veut interroger)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE PROCEDURE ma_procédure
    (
    @Nomdemonserver sysname
    )
     
    AS
     
    Monscript..
    il est retrouvé dans le script sous 2 formes:

    1. select * from [@Nomdemonserver].table
    2. exec @sqlcommand at "@Nomdemonserver"


    Autant pour mettre les dates dans la déclaration de la procédure stocké il n'y pas de problème, mais la je suis un bloque:

    il me dit a juste raison que '@Nomdemonserver' n'est pas retrouvé dans sysservers et de le créer avec addlinkedserver ( erreur 7202)

    si vous avez des suggestion quant a la déclaration de mon paramètre server je suis preneur!

    vous remerciant!

    Gabouille

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Il faut utiliser du Dynamic T-SQL, pour construire la requête dynamiquement... En complément : http://support.microsoft.com/kb/314520
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 68
    Par défaut
    Merci pour ces informations mais après lecture et re-lecture j'ai du mal a saisir le fonctionnement du dynamic SQL dans la création de la procédure stocké..

    Je précise que ma requête fais près de 300 lignes...

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Le Dynamic SQL ça consiste à construire la requête dynamiquement, un peu comme si tu découpais ta requête en plusieurs string, et que tu les concatènes à la fin.

    Que ta requête fasse 3 ou 3000 lignes, ce que tu souhaites faire ne peut être réalisé que par cette méthode (du moins à ma connaissance), donc disons tu n'as pas vraiment le choix

    Voici un exemple extrêmement basique de Dynamic SQL :

    Code SQL : 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
    -- Déclaration des variables
    DECLARE @EmployeeID AS SMALLINT
    DECLARE @Query AS NVARCHAR(300)
    DECLARE @DBName AS NVARCHAR(20)
     
    -- Attribution des valeurs
    SET @EmployeeID = 521
    SET @DBName = N'YourDatabase'
    SET @Query = 'SELECT LastName, FirstName
        FROM ' + @DBName + '.HumanResources.Employee
        WHERE Id = ' + CAST(@EmployeeId AS NVARCHAR(6)) + ''
     
    -- Exécute la requête T-SQL
    EXECUTE(@Query)
     
    -- Requête générée (visible avec PRINT @Query) :
    -- SELECT LastName, FirstName
    -- FROM YourDatabase.HumanResources.Employee
    -- WHERE Id = 521
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 68
    Par défaut
    Ok,

    je l'utilisais sans vraiment savoir son nom ..
    Je sens que je vais m'amuser a tout revoir: cela va faire de la requête dynamique dans de la requête dynamique...

    Merci pour tout

    Bonne journée

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 68
    Par défaut
    Bon j'ai fait un peu comme vous me l'avez conseillez mais une simple commande ne fonctionne pas... je commence a perdre mes cheveux ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DECLARE @server nvarchar (100)
    DECLARE @commande nvarchar (256)
     
     
    SET @server = 'SERVER\INSTANCE'
     
    SET @commande = 'SELECT dsn FROM' + @server +'.nomDb.nomTable'
     
    print @server
    print @commande
     
    exec @commande
    Commentaires :

    - Les print me lancent une requete qui fonctionne correctement si je l’exécute a part
    - l’exécute me dit que la commande ne fonctionne pas (erreur 7202)

    nb: l'instruction interroge obligatoirement un linked server

    j'ai aussi un probleme si je met :
    SET @commande = @instruction AT @server

    Merci d'avance pour les conseils/correction


    existe t il une commande sous sql server 2005 dans le genre de PREPARE ?

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

Discussions similaires

  1. [SQL Serveur] Arret d'une procédure stockée
    Par Abac_Angelique dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/11/2014, 10h09
  2. Réponses: 7
    Dernier message: 23/06/2014, 17h16
  3. Réponses: 4
    Dernier message: 10/12/2009, 15h08
  4. Réponses: 1
    Dernier message: 15/09/2006, 14h04
  5. Réponses: 2
    Dernier message: 16/03/2006, 13h41

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