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:
Des idées sur comment puis-je copier cette base de données? Dois-je utiliser des outils tiers?
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:
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.
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
Choisissez une destination
New...
Le reste est simple.
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;
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.
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.
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.
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é
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.
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
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.
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.
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.
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:
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.
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é
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.
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.
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é.
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.
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.