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 :

Copie d'une table sur un serveur à distance (sp_addlinkedserver)


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut Copie d'une table sur un serveur à distance (sp_addlinkedserver)
    Bonjour,

    Je suis actuellement coincé sur un script qui doit créer une table et copier les données sur un serveur distant.

    Pour cela j'utilise le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EXEC master.dbo.sp_addlinkedserver @server = 'SERVEUR\SQLEXPRESS'
    EXEC sp_addlinkedsrvlogin 'MaBaseDeDonnees', 'false', NULL, 'sa', '**************'
    SELECT * INTO [SERVEUR\SQLEXPRESS].BaseDeDonnees.TableCible FROM BaseDeDonnees.dbo.TableSource
    Ce code me provoque l'erreur suivante :
    Msg*2702, Niveau*16, État*2, Ligne*1
    La base de données 'SERVEUR\SQLEXPRESS' n'existe pas
    Ce que je ne comprend pas, c'est que le code suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM [SERVEUR\SQLEXPRESS].BaseDeDonnees.dbo.AutreTable
    Ne peut-on pas effectuer un "SELECT * INTO..." d'une base en local à une base à distance ?

    Merci de votre coup de pouce,
    Etanne
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

  2. #2
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    EDIT : Sur mon serveur le SELECT INTO ne fonctionne pas (The object name '[SERVEUR\SQLEXPRESS].BaseDeDonnees.dbo.TableCible' contains more than the maximum number of prefixes. The maximum is 2.) mais le
    INSERT INTO [SERVEUR\SQLEXPRESS].BaseDeDonnees.dbo.TableCible SELECT * FROM BaseDeDonnees.dbo.TableSource fonctionne bien

    Après tu es sur une instance SQLEXPRESS je ne sais pas si il y'a des limitations de ce cotés.
    Aucune aide par MP, utilisez le forum.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 788
    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 788
    Points : 52 796
    Points
    52 796
    Billets dans le blog
    5
    Par défaut
    Ce que vous tentez de faire est une transaction distribuée.... lectures des données sur un serveur pour alimenter un autre serveur.
    Pour ce faire vous devez activer le support des transactions distribuées et commencer votre script avec BEGIN DISTRIBUTED TRANSACTION.

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

  4. #4
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut
    Citation Envoyé par J0r_x Voir le message
    EDIT : Sur mon serveur le SELECT INTO ne fonctionne pas (The object name '[SERVEUR\SQLEXPRESS].BaseDeDonnees.dbo.TableCible' contains more than the maximum number of prefixes. The maximum is 2.) mais le
    INSERT INTO [SERVEUR\SQLEXPRESS].BaseDeDonnees.dbo.TableCible SELECT * FROM BaseDeDonnees.dbo.TableSource fonctionne bien

    Après tu es sur une instance SQLEXPRESS je ne sais pas si il y'a des limitations de ce cotés.
    Ahhh oui, je me suis trompé dans le script, si je ne me trompe pas, j'ai corrigé cela par [SERVEUR\SQLEXPRESS].BaseDeDonnees.TableCible

    Citation Envoyé par SQLpro Voir le message
    Ce que vous tentez de faire est une transaction distribuée.... lectures des données sur un serveur pour alimenter un autre serveur.
    Pour ce faire vous devez activer le support des transactions distribuées et commencer votre script avec BEGIN DISTRIBUTED TRANSACTION.

    A +
    Je viens d'apprendre quelque chose.. ..merci beaucoup !
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

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

Discussions similaires

  1. Création aléatoire d'une table sur certains serveurs
    Par pierre50 dans le forum Requêtes
    Réponses: 0
    Dernier message: 28/09/2014, 17h44
  2. Réponses: 0
    Dernier message: 31/08/2011, 10h27
  3. [C# 2.0] Comment créer une table sur un serveur SQL 2000 ?
    Par Filippo dans le forum Accès aux données
    Réponses: 1
    Dernier message: 15/09/2006, 13h30
  4. Réponses: 12
    Dernier message: 02/05/2006, 16h31
  5. Réponses: 4
    Dernier message: 02/05/2005, 20h25

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