2012-01-27 46 views
1

我有两个数据库,一个在远程服务器上,另一个在本地。 (SQL Server 2008)SQL Server数据库远程传输 - 最佳方法

本地服务器上的数据库具有整个结构设置但没有数据。我想从远程服务器复制数据到我的服务器,我想知道在哪做的最好方法。

我遇到的主要问题是我必须访问远程数据库的用户权限有限。我无法读取存储过程,用户定义的函数,所以当我使用导入/导出向导时,我没有得到模式等。因此,常规转储/恢复不适用于我,因为它恢复没有主键/外键和存储过程。

我想做到这一点,

INSERT INTO localtable SELECT * FROM remotedb.table 

我有,因为IDENTITY领域的问题,我必须明确命名所有列。另外,我不确定SQL Server Management Studio是否允许您使用两个不同的数据库,远程和本地数据库,所以我一直在寻找任何建议。

我也尝试过应用程序,如SQL FTP和备份,它失败了,因为它耗尽内存(我有16GB的内存在机器上,数据库是4GB)。我也可以使用SQL Server导入/导出向导,但是我没有得到模式信息。我也试过了Red Gate的SQL Compare,它遇到了权限问题。不幸的是,我没有时间请求并获得新用户的访问权限,所以我希望有人有创意。

+1

我想如果红门不能做到这一点,那么你很可能会陷入困境,因为RG非常容易。您可以考虑以下事项 - 进行备份,并使用RG从备份读取数据的功能。 – Hogan 2012-01-27 20:51:25

+1

如果您无权访问元数据,则设置链接服务器并写出插入查询是唯一选项。 – JNK 2012-01-27 20:59:01

+0

所以我现在在做什么, – Skylude 2012-01-27 23:35:32

回答

1
  1. 为此,您绝对可以使用SQL Server备份。它不会耗尽内存。如果确实如此,请告诉我们该消息(因为您可能误解了它)。这是最快和最完整的解决方案。
  2. 您可以告诉导出向导也脚本架构。它隐藏在“高级”某处(可怕的用户界面)。但脚本将会非常大,我知道无法执行它。
  3. 您可以删除目标数据库中除PK之外的所有模式对象。然后,您可以使用远程查询来复制所有数据。如果您事先删除了外键和标识列,您将不会遇到任何问题。完成后,您可以重新创建所有这些对象。如果您对所有这些事务使用事务处理可能是最好的,因为这样您可以从某个时间点获得一致的源数据。
+0

就像比较 - 我每天备份我的主要个人数据库(大约800GB,半满),服务器只有16GB内存。 – TomTom 2012-01-27 21:57:52

+0

是的。备份不占用大量内存。 – usr 2012-01-27 22:00:13

+0

我没有与我的用户BACKUP_DATABASE权限:D – Skylude 2012-01-27 23:35:01

相关问题