265 votes

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

Je dois 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.

Quelques 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 ;

Avez-vous une idée de la façon dont je peux copier cette base de données ? Devrai-je utiliser des outils tiers ?

1 votes

Je pense que si vous n'avez pas du tout accès à la structure des répertoires, vous aurez du mal à le faire.

3 votes

Vous essayez juste de copier la base de données plutôt que de la sauvegarder spécifiquement ? Si oui, vous pouvez utiliser l'assistant de copie de base de données ou (dans SQL Server 2008) utiliser l'option "Generate Scripts" pour script le schéma et les données. Redgate SQL Compare et Data Compare peuvent également être utiles ici.

1 votes

@MartinSmith Selon votre suggestion, j'ai généré script en utilisant Generate and Publish Scripts option. J'ai obtenu toutes les tables et le schéma, mais je n'ai pas obtenu de données avec les tables. Comment puis-je résoudre ce problème ?

199voto

Daniel Gill Points 810

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

Cela ouvre un assistant dans lequel vous pouvez définir les éléments suivants afin d'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 les Options de Table/View, changez 'script Data' et 'script Indexes' en True et cliquez sur next,
    2. En 2012 : sous "Général", changez "Types de données vers script" de "Schéma seulement" à "Schéma et données".
    3. En 2014 : l'option de script les données est maintenant "cachée" dans l'étape "Définir les options de script", vous devez cliquer sur le "Avancé" et définir "Types de données à script" à la valeur "Schéma et données".
  • Dans le prochain quatre Windows, cliquez sur "Sélectionner tout", puis sur "Suivant",
  • Choisir de script à une nouvelle fenêtre de requête

Une fois qu'il aura fait son travail, vous aurez un script de secours prêt devant vous. Créez une nouvelle base de données locale (ou distante), et modifiez la première instruction 'USE' dans le script pour utiliser votre nouvelle base de données. Sauvegardez le script dans un endroit sûr, et allez-y et exécutez-le contre 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 comme vous le souhaitez.

Si vous avez complet pour accéder à la base de données distante, vous pouvez choisir de cocher 'script all objects' dans la première fenêtre de l'assistant, puis de changer l'option 'script Database' en True dans la fenêtre suivante. Attention cependant, vous devrez effectuer un search & replace complet 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 d'exécuter le script. Cela devrait créer un duplicata plus précis mais n'est parfois pas disponible en raison de restrictions de permissions.

10 votes

Dans SQL Server Management Studio 2012, il n'y a pas d'option telle que 'script Data', donc dans les versions plus récentes, faites ce qui suit pour l'étape 2 : sous 'General', changez 'Types of data to script' de 'Schema only' à 'Schema and data'.

1 votes

Je l'ai vérifié sur SQL Server 2008 R2 et il a fonctionné comme un charme. En ce qui concerne l'utilisation de la stratégie de sauvegarde, il faut que je fasse un peu de travail supplémentaire, mais je pense que c'est mieux que d'utiliser des outils tiers comme RedGate, etc. Peut-être que je suis paranoïaque mais je pense que la plupart des outils tiers ont du code supplémentaire et obtiendront mon contrôle et réduiront la simplicité et la clarté du script. Merci beaucoup.

0 votes

La seule chose à apporter dans le schéma. Il n'apporte pas les données. C'est-à-dire qu'il n'y a pas de INSERT déclarations.

30voto

marc_s Points 321990

Vous ne peut pas créer une sauvegarde d'un serveur distant sur un disque local - il n'y a tout simplement aucun moyen de le faire. Et il n'existe pas non plus d'outils tiers pour le faire, pour autant que je sache.

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

5 votes

Je ne suis pas d'accord. Vous pouvez dans de nombreuses circonstances utiliser la commande 'Generate Scripts' de MS SQL Server Management Studio pour créer un script qui peut être exécuté pour générer une base de données locale avec laquelle vous pouvez ensuite faire ce que vous voulez. Voir ma réponse ci-dessous ou le commentaire de Martin Smith sur la question.

0 votes

Je suis d'accord avec Daniel. Vous pouvez utiliser "Generate Scripts" et "Export Data" pour copier les données d'un serveur distant vers un serveur local.

21 votes

@Rafid : oui, mais c'est PAS un vrai BACKUP - c'est un script/data export .....

13voto

adinas Points 844

Vous pouvez essayer SQLBackupAndFTP . Il va créer 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 n'importe quelle base de données, vous pouvez exécuter ce fichier script et la base de données entière sera recréée.

4 votes

Secondé. J'ai dû installer une nouvelle version de sql server management studio et je ne pouvais plus script comme avant. Cet outil s'en est occupé rapidement et sans problèmes, même sans avoir un accès complet au serveur distant (appharbor sqlserver add-on).

1 votes

Veuillez noter que ce logiciel utilise beaucoup de ressources.

0 votes

En plus d'être bogué et pas tout à fait sûr que cela fonctionne correctement. Je peux me connecter sans problème à un serveur distant via PHP, mais ce n'est pas le cas ? Lorsque j'ai les paramètres appropriés sur le serveur lui-même. Donc, oui... je passe à autre chose.

7voto

Marcel W Points 936

Consultez ce blog pour savoir comment copier une base de données distante :

Sauvegarder une base de données SQL Server 2008 depuis un environnement d'hébergement partagé

1 votes

Cette approche explique comment script la structure de la base de données, la créer localement et ensuite utiliser les outils de gestion SQL pour copier les données entre une base de données locale et distante.

1 votes

Vous pouvez basculer l'option 'script Data' sur True pour également script les données en une seule fois.

0 votes

La copie et la sauvegarde sont deux choses différentes.

5voto

Pouyan Points 425

Vous pouvez utiliser Copier la base de données ... cliquez avec le bouton droit de la souris sur la base de données distante ... sélectionnez les tâches et utilisez Copier la base de données ... il vous demandera le serveur source et le serveur de destination ... que votre source est le serveur distant et la destination est votre instance locale de sql server.

c'est aussi simple que cela

0 votes

La copie de la base de données nécessite des privilèges SysAdmin. Ce n'est pas une solution pour les utilisateurs réguliers de la base de données.

0 votes

Dans mon problème aujourd'hui, notre équipe de développement a des privilèges d'administrateur système. Je vais donc utiliser l'approche de Pouyan.

0 votes

Mais j'ai besoin de le faire sur une base quotidienne et j'ai besoin de script pour accomplir ceci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X