web-dev-qa-db-fra.com

Comment puis-je sauvegarder une base de données SQL Server distante sur un lecteur local?

J'ai besoin de copier une base de données d'un serveur distant vers un serveur local. J'ai essayé d'utiliser SQL Server Management Studio, mais il ne sauvegarde que sur un lecteur du serveur distant.

Des points:

  • Je n'ai pas accès au serveur distant de manière à pouvoir copier des fichiers;
  • Je n'ai pas accès à la configuration d'un chemin UNC vers mon serveur;

Des idées sur comment puis-je copier cette base de données? Dois-je utiliser des outils tiers?

221
Fernando

Dans Microsoft SQL Server Management Studio, vous pouvez cliquer avec le bouton droit sur la base de données que vous souhaitez sauvegarder, puis cliquer sur Tâches -> Générer des scripts.

Cela ouvre un assistant dans lequel vous pouvez définir ce qui suit pour pouvoir effectuer une sauvegarde correcte de votre base de données, même sur un serveur distant:

  • Sélectionnez la base de données que vous souhaitez sauvegarder et cliquez sur Suivant,
  • Dans les options qu'il vous présente:
    1. En 2010: sous Options de la table/vue, remplacez 'Données du script' et 'Index de script' par True et cliquez sur Suivant,
    2. En 2012: sous "Général", remplacez "Types de données par un script" de "Schéma uniquement" par "Schéma et données".
    3. En 2014: l'option de script des données est maintenant "masquée" à l'étape "Définir les options de script", vous devez cliquer sur le bouton "Avancé" et définir "Types de données à script" sur la valeur "Schéma et données".
  • Dans les quatre fenêtres suivantes , cliquez sur "Tout sélectionner" puis sur Suivant,
  • Choisissez de créer un script dans une nouvelle fenêtre de requête

Une fois que c'est fait, vous aurez un script de sauvegarde sous la main. Créez une nouvelle base de données locale (ou distante) et modifiez la première instruction "USE" du script pour utiliser votre nouvelle base de données. Enregistrez le script dans un endroit sûr et lancez-le sur votre nouvelle base de données vide. Cela devrait vous créer une base de données locale (presque) dupliquée que vous pourrez ensuite sauvegarder à votre guise.

Si vous avez un accès complet à la base de données distante, vous pouvez choisir de cocher 'Script tous les objets' dans la première fenêtre de l'assistant, puis de changer la 'Base de données de scripts. 'option sur True dans la fenêtre suivante. Attention cependant, vous devrez effectuer une recherche et un remplacement complets du nom de la base de données dans le script vers une nouvelle base de données que, dans ce cas, vous n'aurez pas à créer avant l'exécution du script. Cela devrait créer un doublon plus précis mais n'est parfois pas disponible en raison de restrictions d'autorisations.

173
Daniel Gill

Pour copier uniquement les données et le schéma (ne copiera pas les procédures stockées, les fonctions, etc.), utilisez l'Assistant Importation et exportation SQL Server, puis choisissez Nouveau ... lorsque vous choisissez la base de données de destination.

Cliquez avec le bouton droit sur Base de données> Tâches> Importer des données.

Choisissez une source de données

  • Source de données: SQL Server Native Client
  • Nom du serveur: le serveur distant
  • Authentification:
  • Database: le nom de la base de données

Choisissez une destination

  • Source de données: SQL Server Native Client
  • Nom du serveur: le serveur local
  • Authentification:
  • Base de données: New...

Le reste est simple.

43
Shaun Luttin

Premièrement, accordez des autorisations de contrôle total sur un chemin local de votre ordinateur (comme indiqué ci-dessous) avec Tout le monde. (Ou alternativement accordez des autorisations spécifiquement au compte de l'Agent SQL Server).

Deuxièmement, exécutez ce qui suit:

BACKUP DATABASE [dev] TO  DISK = N'\\myMachine\c\dev.bak' WITH COPY_ONLY, INIT;
37
T. Webster

Vous ne pouvez pas créer une sauvegarde d'un serveur distant sur un disque local - il n'y a aucun moyen de le faire. Et il n’existe aucun outil tiers pour le faire, à ma connaissance.

Tout ce que vous pouvez faire est de créer une sauvegarde sur le serveur distant et de demander à quelqu'un de la compresser et de vous l'envoyer.

27
marc_s

Je sais que c'est une réponse tardive, mais je dois faire un commentaire sur la réponse la plus votée qui dit d'utiliser l'option de génération de scripts dans SSMS.

Le problème, c’est que cette option ne génère pas nécessairement un script dans le bon ordre d’exécution, car elle ne prend pas en compte les dépendances.

Pour les petites bases de données, ce n'est pas un problème, mais pour les plus grandes, c'est certainement parce qu'il est nécessaire de réorganiser manuellement ce script. Essayez cela sur la base de données 500 objets;)

Malheureusement, dans ce cas, les outils tiers sont la seule solution.

J’ai utilisé avec succès des outils de comparaison de ApexSQL (Diff et Data Diff) pour des tâches similaires, mais vous ne pouvez pas vous tromper avec les autres outils déjà mentionnés, en particulier Red Gate.

17
Phill C

Vous pouvez essayer SQLBackupAndFTP . Il créera des scripts pour créer tous les objets de votre base de données et des instructions INSERT pour toutes les lignes de vos tables. Dans toute base de données, vous pouvez exécuter ce fichier de script et toute la base de données sera recréée.

13
adinas

Consultez ce blog pour une description de la procédure à suivre pour copier une base de données distante:

Sauvegarde d'une base de données SQL Server 2008 à partir d'un environnement d'hébergement partagé

7
Marcel W

Il existe une solution à 99% pour obtenir le fichier bak du serveur SQL distant sur votre PC local. Je l'ai décrit dans mon post http://www.ok.unsode.com/post/2015/06/27/remote-sql-backup-to-local-pc

En général, cela ressemblera à ceci:

  • exécuter un script SQL pour générer des fichiers bak

  • exécuter un script SQL pour insérer chaque fichier bak dans la table temporaire avec le type de champ varbinary et sélectionner cette ligne et télécharger les données

  • répéter prev. étape autant de fois que vous avez des fichiers bak

  • exécuter un script SQL pour supprimer toutes les ressources temporaires

ça y est, vous avez vos fichiers bak sur votre PC local.

6
okarpov

Vous pouvez utiliser Copy database ... faites un clic droit sur la base de données distante ... sélectionnez des tâches et utilisez copy database ... il vous posera des questions sur le serveur source et le serveur de destination. que votre source est la télécommande et que la destination est votre instance locale du serveur SQL.

c'est si facile

5
Pouyan

Le groupe AppHarbor a eu du mal à résoudre ce problème et a développé une solution temporaire utilisant des objets de gestion de serveur SQL et SqlBulkCopy.

Découvrez leur blog à ce sujet, ou allez directement au code .

Ils l'ont seulement testé avec AppHarbor, mais cela vaut peut-être la peine d'y aller.

3
Daniel Gill

Les réponses ci-dessus ne sont tout simplement pas correctes. Un script SQL, même avec des données, n'est pas une sauvegarde. Une sauvegarde est un fichier BAK contenant la base de données complète dans sa structure actuelle, y compris indizes.

Bien sûr, un fichier BAK contenant la sauvegarde complète avec toutes les données et indiquant depuis une base de données SQL Server distante peut être récupéré sur un système local.

Cela peut être fait avec un logiciel commercial, pour enregistrer directement un fichier BAK de sauvegarde sur votre machine locale, par exemple Celui-ci créera directement une sauvegarde à partir d'une base de données SQL distante sur votre machine locale.

3
Matthias

Comme l'a dit Martin Smith, si vous n'avez pas accès à la machine ou au système de fichiers, vous devrez utiliser des outils tiers, tels que Red Gate ou Adept, pour comparer les systèmes source et cible. Les outils de Red Gate vous permettront de copier les objets, les schémas ET les données.

1
Vinnie

de cette manière, vous pouvez effectuer une sauvegarde d’une instance SQL Server distante sur votre lecteur local, à condition que la condition suivante soit remplie:

  1. Vous avez un dossier partagé sur votre lecteur local.
  2. le dossier partagé est accessible à partir de la boîte SQL Server.

Maintenant, lors de la spécification de la commande de sauvegarde, utilisez le chemin du dossier partagé lors de la spécification de l'option de disque.

1
Naresh

essayez juste celui-ci:

1) Partagez un dossier avec une permission complète sur votre ordinateur

2) dans votre serveur SQL: Panneau de configuration -> Outils d'administration -> Services -> Clic droit sur tous les services SQL

sur l'onglet de connexion devrait commencer par votre administrateur de domaine

3) dans l’assistant de maintenance du serveur SQL, placez l’emplacement et le dossier de sauvegarde (\ votre nom de l'ordinateur\sharedfoldernam)

J'ai fait une sauvegarde à distance sur 8 serveur de SQL Server 2008 dans notre société

1
Parsaria

Je suis étonné que personne n'ait mentionné la solution de sauvegarde scriptée proposée par Ola Hallengren qui vous permet absolument de vous une base de données gratuite d'un serveur distant vers un chemin UNC de votre réseau (je l'utilise en fait comme je tape pour sauvegarder une base de données d'un serveur de dev auquel je n'ai pas d'autre accès distant que via SSMS vers un partage de mon dev PC). Ceci est disponible depuis 2008 et fonctionne sur SQL Server 2005 à 2014.

Vous devez vous assurer que le partage que vous avez configuré dispose d’un accès suffisant: j’ai tendance à autoriser une lecture/écriture complète sur le groupe AD "Tout le monde" pendant toute la durée du processus de sauvegarde, car je suis trop paresseux pour comprendre quoi que ce soit de plus restrictif. choix personnel.

C'est bien utilisé, bien documenté et très flexible. J'ai tendance à mettre les procs et la table de journalisation dans leur propre base de données d'utilitaires, puis à les lancer. Si tout se trouve dans votre domaine AD et non distant, en ce sens que c'est sur un serveur colocalisé ou quelque chose du genre, cela fonctionne très bien.

Toutes mes excuses pour avoir ajouté à un très vieux fil de discussion, mais je suis tombé sur cette idée en cherchant autre chose.

1
Steve Pettifer

Certains programmes de sauvegarde tiers permettent de définir le transfert de fichiers avec des autorisations réseau spécifiques. C'est très utile lorsque le service SQL Server s'exécute sous un compte restreint et ne dispose pas d'autorisations réseau suffisantes. Essayez d’utiliser EMS SQL Backup , qui résout cette tâche.

0
curandero

Je pourrais le faire une fois ... Pour ce faire, vous devez ouvrir un partage sur le serveur distant. alors vous pouvez directement placer la sauvegarde sur le partage lui-même, que l'emplacement par défaut ...

Habituellement, l’administrateur prend la sauvegarde et la partage avec nous dans un dossier partagé. J'ai essayé si cela fonctionnera si je place la sauvegarde là-bas. Ça a marché.

0
Vivek

J'utilise Redgate backup pro 7 outils à cet effet. vous pouvez créer un miroir à partir d'un fichier de sauvegarde en créant une tuile sur un autre emplacement. et peut copier le fichier de sauvegarde après la création sur le réseau et sur le stockage de l'hôte automatiquement.

0
mehdi lotfi

Si vous utilisez la commande Generate Scripts sous SSMS, cliquez sur le bouton Avancé. Sous l'option "Générer des scripts pour les objets dépendants", cliquez sur True. En cliquant dessus, toutes les dépendances de chaque objet seront également scriptées dans le bon ordre.

0
user2684