我需要将数据库从远程服务器复制到本地服务器。我尝试使用SQL Server Management Studio,但它只备份到远程服务器上的驱动器。
一些要点:
我不能以复制文件的方式访问远程服务器; 我没有权限设置一个UNC路径到我的服务器;
知道如何复制这个数据库吗?我是否需要使用第三方工具?
我需要将数据库从远程服务器复制到本地服务器。我尝试使用SQL Server Management Studio,但它只备份到远程服务器上的驱动器。
一些要点:
我不能以复制文件的方式访问远程服务器; 我没有权限设置一个UNC路径到我的服务器;
知道如何复制这个数据库吗?我是否需要使用第三方工具?
当前回答
如果您使用SSMS下的Generate Scripts,请单击Advanced按钮。在“为依赖对象生成脚本”选项下,单击“True”。通过单击,每个对象的任何依赖关系也将以适当的顺序编写出来。
其他回答
如果您在本地网络中,则可以共享本地计算机上的一个文件夹,并将其用作备份的目标文件夹。
例子:
本地文件夹: URL: \\MyMachine\MySharedFolder 远程SQL Server: 选择您的数据库->任务->备份->目的地->添加->应用'\\MyMachine\MySharedFolder\BACKUP_NAME.bak'
看看这个博客如何复制远程数据库:
从共享主机环境备份SQL Server 2008数据库
AppHarbor团队一直在努力解决这个问题,并使用SQL服务器管理对象和SqlBulkCopy开发了一个临时解决方案。
查看他们的博客文章,或者直接查看代码。
他们只在AppHarbor上进行了测试,但它可能值得一试。
我知道这是一个晚的答案,但我必须对大多数投票的答案做出评论,说要在SSMS中使用生成脚本选项。
问题是这个选项不一定会以正确的执行顺序生成脚本,因为它没有考虑依赖关系。
对于小型数据库,这不是一个问题,但对于大型数据库,这肯定是一个问题,因为它需要手动重新排序脚本。试一下500对象数据库;)
不幸的是,在这种情况下,唯一的解决方案是第三方工具。
我成功地使用了ApexSQL (Diff和Data Diff)的比较工具来完成类似的任务,但使用这里已经提到的任何其他工具都不会出错,尤其是Red Gate。
首先,使用Everyone向机器上的本地路径授予完全控制权限(如下所示)。(或者专门授予SQL Server代理帐户权限)。
其次,执行以下步骤:
BACKUP DATABASE [dev] TO DISK = N'\\myMachine\c\dev.bak' WITH COPY_ONLY, INIT;