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

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

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

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

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

Ответ 1

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

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

  • Выберите базу данных, которую вы хотите создать, и нажмите далее,
  • В вариантах, которые он представляет вам:
    • В 2010 году: в разделе "Параметры таблицы/просмотра" измените "Script Данные" и "Script Индексы" на "Истина" и нажмите "Далее",
    • В 2012 году: в разделе "Общие" измените "Типы данных на script" с "Только схема" на "Схема и данные"
    • В 2014 году: опция script данные теперь "скрыты" на шаге "Задайте параметры сценариев", вам нужно щелкнуть "Дополнительно" и установить "Типы данных в script" на "Схема и данных"
  • В следующих четырех окнах нажмите "выбрать все", а затем "
  • Выберите script в новое окно запроса

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

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

Ответ 2

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

Щелкните правой кнопкой мыши базу данных > Задачи > Импорт данных.

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

  • Источник данных: собственный клиент SQL Server
  • Имя сервера: удаленный сервер
  • Аутентификация:
  • База данных: имя db

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

  • Источник данных: собственный клиент SQL Server
  • Имя сервера: локальный сервер
  • Аутентификация:
  • База данных: New...

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

Ответ 3

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

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

Ответ 4

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

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

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

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

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

Ответ 5

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

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

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

Ответ 6

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

Ответ 8

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

это простое

Ответ 9

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

Отметьте их сообщение в блоге об этом или перейдите прямо к код.

Они тестировали его только с помощью AppHarbor, но, возможно, стоит проверить.

Ответ 10

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

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

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

Ответ 11

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

Ответ 12

просто попробуйте следующее:

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

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

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

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

Я сделал удаленную резервную копию на 8 сервере SQL Server 2008 в нашей компании

Ответ 13

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

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

  • выполнить sql script для генерации файлов bak

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

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

  • выполнить sql script, чтобы удалить все временные ресурсы

что у вас есть ваши файлы bak на вашем локальном компьютере.

Ответ 14

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

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

Ответ 15

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

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

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

Ответ 16

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

Ответ 17

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

Ответ 18

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

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

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

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

Ответ 19

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

Ответ 20

Я думаю, что "правильным" способом сделать это было бы, поддерживая SQL Server локально (на том же компьютере), а затем используя резервную копию ntbackup/windows для резервного копирования файлов .bak в удаленное расположение.