2012-01-27 4 views
1

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

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

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

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

INSERT INTO localtable SELECT * FROM remotedb.table 

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

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

+1

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

+1

ЕСЛИ у вас нет разрешений на доступ к метаданным, тогда настройка связанного сервера и запись запросов вставки являются единственным вариантом. – JNK

+0

Итак, что я делаю сейчас, – Skylude

ответ

1
  1. Для этого вы можете использовать резервные копии SQL Server. Он не исчерпывается. Если это так, сообщите нам сообщение (потому что, вероятно, вы неверно истолковываете его). Это самое быстрое и наиболее полное решение.
  2. Вы можете указать мастер экспорта, чтобы также сценарий схемы. Он скрыт под «продвинутым» где-то (ужасным UI). Но сценарий будет чрезвычайно большим, и я не знаю, как его выполнить.
  3. Вы можете удалить все объекты схемы, кроме PK в целевой базе данных. Затем вы можете использовать удаленные запросы для копирования всех данных. У вас не возникнет проблем с внешними ключами и столбцами идентификаторов, если вы упустите их заранее. После того, как вы закончите, вы сможете воссоздать все эти объекты. Это, вероятно, лучше всего, если вы используете транзакцию для всего этого, потому что таким образом вы получаете согласованные исходные данные из точки в определенный момент времени.
+0

Точно так же, как и сравнение - я поддерживаю основную личную базу данных (около 800 гб, наполовину заполненную), а сервер имеет только 16 ГБ памяти. – TomTom

+0

Да. Резервные копии не занимают значительного объема памяти. – usr

+0

У меня нет разрешений BACKUP_DATABASE с моим пользователем: D – Skylude