Удаленная передача базы данных SQL Server — лучший способ

У меня есть две базы данных, одна на удаленном сервере, другая локальная. (SQL сервер 2008)

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

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

Я хотел бы сделать это,

INSERT INTO localtable SELECT * FROM remotedb.table

У меня были проблемы из-за полей IDENTITY, и мне приходилось явно указывать имена всех столбцов. Также я не уверен, позволяет ли SQL Server Management Studio использовать две разные базы данных, удаленную и локальную, поэтому я искал любой совет.

Я также пробовал такие приложения, как SQL FTP и Backup, и они терпят неудачу, потому что им не хватает памяти (у меня 16 ГБ памяти на машине, а БД - 4 ГБ). Я также могу использовать мастер импорта/экспорта SQL Server, но тогда я не получаю информацию о схеме. Я также попробовал SQL Compare от Red Gate, и у него возникли проблемы с разрешениями. К сожалению, у меня нет времени запрашивать и получать доступ к новому пользователю, поэтому я надеялся, что у кого-то появится творческая идея.


person Skylude    schedule 27.01.2012    source источник
comment
Я думаю, что если Red Gate не может этого сделать, то у вас, вероятно, проблемы, так как RG очень проста. Вы можете подумать о следующем: сделайте резервную копию и используйте возможность RG читать из резервных копий для извлечения данных.   -  person Hogan    schedule 28.01.2012
comment
ЕСЛИ у вас нет прав доступа к метаданным, единственным вариантом является настройка связанного сервера и запись запросов на вставку.   -  person JNK    schedule 28.01.2012
comment
Я связал удаленную БД и выполняю такие запросы: INSERT INTO localtable (col1, col2,... coln) SELECT col1, col2,... coln FROM REMOTEDB.remotedb.remotetable; Это довольно утомительно, и я обнаружил, что SQL не позволяет мне отключить защиту для вставок в поля идентификации, поэтому я мог просто сделать * и покончить с этим.   -  person Skylude    schedule 28.01.2012


Ответы (1)


  1. Вы определенно можете использовать резервные копии SQL Server для этого. У него не закончится память. Если это так, пожалуйста, сообщите нам сообщение (потому что, вероятно, вы неправильно его интерпретируете). Это самое быстрое и самое полное решение.
  2. Вы можете указать мастеру экспорта также создать сценарий схемы. Он где-то спрятан под «дополнительно» (ужасный пользовательский интерфейс). Но сценарий будет очень большим, и я не знаю, как его выполнить.
  3. Вы можете удалить все объекты схемы, кроме PK, в целевой базе данных. Затем вы можете использовать удаленные запросы для копирования всех данных. У вас не возникнет проблем с внешними ключами и столбцами идентификаторов, если вы удалите их заранее. После того, как вы закончите, вы можете воссоздать все эти объекты. Вероятно, лучше всего использовать транзакцию для всего этого, потому что таким образом вы получаете согласованные исходные данные на определенный момент времени.
person usr    schedule 27.01.2012
comment
Просто для сравнения: я ежедневно делаю резервную копию своей основной личной базы данных (около 800 ГБ, наполовину заполненной), а на сервере всего 16 ГБ памяти. - person TomTom; 28.01.2012
comment
Ага. Резервные копии не занимают значительных объемов памяти. - person usr; 28.01.2012
comment
У меня нет разрешений BACKUP_DATABASE для моего пользователя: D - person Skylude; 28.01.2012