Как создать резервную копию удаленной базы данных SQL Server на локальный диск?

Мне нужно скопировать базу данных с удаленного сервера на локальный. Я попытался использовать среду SQL Server Management Studio, но она выполняет резервное копирование только на диск на удаленном сервере.

некоторые моменты:

  • у меня нет доступа к удаленному серверу таким образом, что я мог копировать файлы;
  • у меня нет доступа к настройке UNC-пути к моему серверу;

любые идеи, как я могу скопировать эту базу? Должен ли я использовать инструменты 3rd party?

20 ответов


в Microsoft SQL Server Management Studio вы можете щелкнуть правой кнопкой мыши на базе данных, которую хотите создать резервную копию, и выбрать задачи - > создать сценарии.

Это открывает Мастер, где вы можете установить следующее, чтобы выполнить достойную резервную копию вашей базы данных,даже на удаленном сервере:

  • выберите базу данных вы хотите создать резервную копию и нажмите Далее
  • в вариантах, которые он представляет вам:
    1. в 2010: под таблицей / взглядом Параметры, изменение данных скриптов и скрипт индексы' true и нажмите Далее
    2. в 2012 году: в разделе "Общие" измените "типы данных на сценарий" с "только схема" на "схема и данные"
    3. в 2014: опция для сценария данных теперь " скрыта "в шаге" установить параметры сценариев", вы должны нажать кнопку" Дополнительно "и установить" типы данных для сценария "в" Схема и данные " значение
  • в соседней четыре windows, нажмите "Выбрать все" , а затем далее,
  • выберите сценарий для нового окна запроса

Как только он сделает свое дело, у вас будет готовый сценарий резервного копирования перед вами. Создайте новую локальную (или удаленную) базу данных и измените первый оператор " USE " в скрипте, чтобы использовать новую базу данных. Сохраните сценарий в безопасном месте и запустите его в новой пустой базе данных. Это должно создать вам (почти) дубликат локальной базы данных, которую вы можете создать резервную копию, как вам нравится.

Если у вас есть полное доступ к удаленной базе данных, вы можете выбрать, чтобы проверить "сценарий все объекты" в первом окне мастера, а затем изменить опцию "скрипт базы данных" на True в следующем окне. Будьте осторожны, вам нужно будет выполнить полный поиск и заменить имя базы данных в скрипте на новую базу данных, которую в этом случае вам не придется создавать перед запуском скрипта. Это должно создать более точный дубликат, но иногда недоступно из-за разрешений ограничения.


копировать только данные и схемы (не будет копировать хранимые процедуры, функции и т. д.), используйте мастер импорта и экспорта SQL Server и выберите новый... при выборе целевой базе данных.

Щелкните Правой Кнопкой Мыши База Данных > Задачи > Импорт Данных.

выберите источник данных

  • Исходные Данные: собственный клиент SQL Server
  • Имя Сервера: удаленный сервер
  • проверка подлинности:
  • база данных - имя БД

выберите пункт назначения

  • Исходные Данные: собственный клиент SQL Server
  • Имя Сервера: локальный сервер
  • проверка подлинности:
  • база данных: New...

остальное прям вперед.


вы не может создайте резервную копию с удаленного сервера на локальный диск - это просто невозможно сделать. И, насколько мне известно, для этого нет сторонних инструментов.

все, что вы можете сделать, это создать резервную копию на удаленном сервере, и кто-то zip его и отправить его вам.


во-первых, предоставьте разрешения полного управления локальному пути на вашем компьютере (как показано ниже) со всеми. (Или разрешения специально для учетной записи агента SQL Server).

во-вторых, выполните следующее:

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

Я знаю, что это поздний ответ, но я должен сделать комментарий о большинстве проголосовавших ответ, который говорит, чтобы использовать опцию генерации скриптов в SSMS.

проблема в том, что этот параметр не обязательно генерирует скрипт в правильном порядке выполнения, потому что он не учитывает зависимости.

для небольших баз данных это не проблема, но для больших это, безусловно, потому, что требуется вручную переупорядочить этот скрипт. Попробуйте это в базе данных 500 объектов ;)

к сожалению в этом случае единственным решением являются сторонними инструментами.

Я успешно использовал инструменты сравнения из ApexSQL (Diff и Data Diff) для подобных задач, но вы не можете ошибиться с любым другим, уже упомянутым здесь, особенно Red Gate.


вы можете попробовать SQLBackupAndFTP. Он создаст скрипты для создания всех объектов в вашей базе данных и вставки операторов для всех строк в ваших таблицах. В любой базе данных, вы можете запустить этот скрипт и вся база данных будет создана заново.


посмотрите на этот блог для описания того, как скопировать удаленную базу данных:

резервное копирование базы данных SQL Server 2008 из среды общего хостинга


вы можете использовать базу данных копирования ... щелкните правой кнопкой мыши на удаленной базе данных ... выберите задачи и используйте copy database ... он просит вас об исходном сервере и сервере назначения . что ваш источник является удаленным, а назначение-локальным экземпляром sql server.

Это просто


существует 99% решение для получения файла bak с удаленного sql server на локальный компьютер. Я описал его там в своем посте http://www.ok.unsode.com/post/2015/06/27/remote-sql-backup-to-local-pc

В общем это будет выглядеть так:

  • выполнить SQL-скрипт для создания файлов bak

  • выполнить сценарий sql, чтобы вставить каждый файл bak во временную таблицу с типом поля varbinary и выбрать эту строку и скачать данные

  • повторить prev. шаг столько раз, сколько у вас есть файлы BAK

  • выполнить SQL-скрипт для удаления всех временных ресурсов

вот и все, у вас есть файлы bak на вашем локальном ПК.


банда AppHarbor боролась с этим и разработала временное решение с использованием объектов управления SQL server и SqlBulkCopy.

проверить своем блоге об этом, или пойти прямо в коде.

Они только протестировали его с AppHarbor, но это может быть стоит проверить.


выше ответы не верны. Сценарий SQL даже с данными не является резервной копией. Резервная копия-это файл BAK, содержащий полную базу данных в ее текущей структуре, включая indizes.

конечно, BAK файл с полной резервной копии всех данных и indizes из удаленной базы данных SQL Server могут быть получены на локальной системе.

Это можно сделать с помощью коммерческого программного обеспечения, чтобы напрямую сохранить резервный файл BAK на локальном компьютере, например этот непосредственно создаст резервную копию с удаленного SQL db на локальном компьютере.


Как сказал Мартин Смит, Если у вас нет доступа к машине или файловой системе, вам нужно будет использовать сторонние инструменты, такие как Red Gate или Adept, чтобы сравнить исходные и целевые системы. Инструменты Red Gate позволят вам копировать объекты, схемы и данные.


просто попробуй это:

1) поделитесь папкой с полным разрешением на вашем компьютере

2) в вашем SQL server : панель управления - > Администрирование - > Службы - > щелкните правой кнопкой мыши на всех службах SQL

на вкладке вход в систему должен начинаться с администратора домена

3) в Мастере обслуживания sql server поместите расположение и папку резервного копирования (\yourcomputername\sharedfoldernam)

Я делал удаленное резервное копирование на 8 сервере sql server 2008 года в нашей компании


Я удивлен, что никто не упомянул сценарий резервного копирования, предлагаемых Оле Халленгрен что абсолютно тут позволяет создавать резервные копии БД с удаленного сервера на UNC-путь в вашей сети бесплатно (я фактически использую его, как я печатаю для резервного копирования БД с dev-сервера, к которому у меня нет удаленного доступа, кроме как через SSMS к общему ресурсу на моем dev-ПК). Это доступно с 2008 года и работает на SQL Server 2005 до 2014 года.

вы необходимо убедиться, что настроенный вами ресурс имеет достаточный доступ: я, как правило, разрешаю полное чтение/запись в группу объявлений " Все " на время процесса резервного копирования, потому что я слишком ленив, чтобы выяснить что-либо более ограничительное, но это личный выбор.

Он хорошо используется, хорошо документирован и очень гибкий. Я склонен помещать процессоры и таблицу регистрации в их собственную небольшую базу данных утилит, а затем запускать ее. При условии, что все находится в вашем домене AD, а не удаленно в том смысле, что это на совместном сервере или что-то еще, это работает очень хорошо.

извинения за добавление в очень старую тему, но я наткнулся на это, когда искал что-то еще и решил, что это стоящее дополнение для тех, кто ищет эту тему.


Я мог бы сделать это один раз...для этого у вас должен быть открыт общий ресурс на удаленном сервере. затем вы можете напрямую разместить резервную копию на самом ресурсе, чем расположение по умолчанию...

обычно администратор берет резервную копию и делится ею с нами в какой-то общей папке. Я попробовал, если это сработает, если я помещу туда резервную копию. Это сработало.


yone способ, которым вы можете взять резервную копию с удаленного экземпляра SQL Server на локальный диск, учитывая следующее условие:

  1. у вас есть общая папка на локальном диске.
  2. общая папка доступна из окна SQL Server.

теперь при указании команды резервного копирования, используйте путь к общей папке при указании параметра диска.


Если вы используете сценарии генерации в SSMS, нажмите кнопку Дополнительно. В разделе "создание сценариев для зависимых объектов" выберите True. Щелкнув, что любые зависимости каждого объекта также будут написаны в правильном порядке.


некоторые сторонние программы резервного копирования позволяют устанавливать передачу файлов с определенными сетевыми разрешениями. Это очень полезно, когда служба SQL Server работает под ограниченной учетной записью и не имеет достаточных разрешений сети. Попробуйте использовать EMS SQL Backup которая решает эту задачу.


Я использую Redgate backup pro 7 инструменты для этой цели. вы можете создать зеркало из файла резервной копии в create tile в другом месте. и смогите скопировать архивный файл после создания на сети и на хранении хозяина автоматически.


Если вы находитесь в локальной сети, вы можете поделиться папкой на локальном компьютере и использовать ее в качестве папки назначения для резервного копирования.

пример:

  • локальная папка:

    C:\MySharedFolder -> URL: \MyMachine\MySharedFolder

  • удаленный SQL Server:

    Select your database -> Tasks -> Back Up -> Destination -> Add -> Apply '\MyMachine\MySharedFolder'