如何将远程SQL Server数据库备份到本地驱动器?

我需要将数据库从远程服务器复制到本地。 我试图使用SQL Server Management Studio,但它只备份到远程服务器上的驱动器。

一些观点:

  • 我无法以复制文件的方式访问远程服务器;
  • 我无法设置到我的服务器的UNCpath;

任何想法如何复制这个数据库? 我将不得不使用第三方工具?

在Microsoft SQL Server Management Studio中,您可以右键单击要备份的数据库,然后单击“任务” – >“生成脚本”。

这会popup一个向导,您可以在其中设置以下内容,以便即使在远程服务器上也可以对数据库执行正常的备份:

  • select你想要备份的数据库然后点击下一步,
  • 在它提供给你的选项中:
    1. 在2010年:在表/视图选项下,将“脚本数据”和“脚本索引”更改为“真”
    2. 2012年:在“常规”下,将“脚本数据types”从“Schema only”更改为“Schema and data”
    3. 在2014年:脚本数据的选项现在在步骤“设置脚本选项”中“隐藏”,您必须单击“高级”,并将“脚本数据types”设置为“架构和数据”值
  • 在接下来的四个窗口中,点击“全选”,然后点击“
  • select脚本到一个新的查询窗口

一旦它完成了,你将在你面前准备好一个备份脚本。 创build一个新的本地(或远程)数据库,并更改脚本中的第一个“USE”语句以使用新的数据库。 将脚本保存在一个安全的地方,然后继续对新的空数据库运行它。 这应该创build一个(几乎)重复的本地数据库,然后您可以随意备份。

如果您可以完全访问远程数据库,则可以select在向导的第一个窗口中选中“脚本所有对象”,然后在下一个窗口中将“脚本数据库”选项更改为True。 不过要注意,你需要在脚本中执行一个完整的search和replace数据库名称到一个新的数据库,在这种情况下,在运行这个脚本之前你不需要创build这个数据库。 这应该创build一个更准确的重复,但有时由于权限限制不可用。

要仅复制数据和模式(不会复制存储过程,函数等),请使用SQL Server导入和导出向导,并在select目标数据库时select新build…。

右键单击数据库>任务>导入数据。

select一个数据源

  • 数据源 :SQL Server Native Client
  • 服务器名称 :远程服务器
  • authentication
  • 数据库 :数据库名称

select目的地

  • 数据源 :SQL Server Native Client
  • 服务器名称 :本地服务器
  • authentication
  • 数据库New...

其余的是直截了当的。

不能从远程服务器创build一个备份到本地磁盘 – 没有办法做到这一点。 据我所知,也没有第三方工具可以做到这一点。

你所能做的只是在远程服务器上创build一个备份,然后让其他人将其压缩并发送给你。

我知道这是迟到的答案,但我必须发表评论说,在SSMS中使用生成脚本选项最投票答案。

问题在于这个选项不一定以正确的执行顺序生成脚本,因为它不考虑相关性。

对于小型数据库,这不是一个问题,但对于较大的数据库,这当然是因为它需要手动重新sorting该脚本。 试试500对象数据库;)

不幸的是在这种情况下唯一的解决scheme是第三方工具。

我成功地使用了ApexSQL (Diff和Data Diff)的比较工具来完成类似的任务,但是这里已经提到的其他任何东西都不会出错,特别是Red Gate。

首先,使用Everyone将完全控制权限授予您计算机上的本地path(如下所示)。 (或者,也可以将权限专门授予 SQL Server代理帐户)。

其次,执行以下操作:

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

你可以试试SQLBackupAndFTP 。 它将创build脚本来创build数据库中的所有对象,并为您表中的所有行创buildINSERT语句。 在任何数据库中都可以运行这个脚本文件,整个数据库将被重新创build。

查看这个博客,了解如何复制远程数据库:

从共享主机环境备份SQL Server 2008数据库

您可以使用复制数据库…右键单击远程数据库…select任务和使用复制数据库…它会问你关于源服务器和目标服务器。 你的源是远程的,目标是你本地的sql server实例。

这很容易

AppHarbor团伙一直在为此苦苦挣扎,并开发了一个使用SQL服务器pipe理对象和SqlBulkCopy的临时解决scheme。

看看他们的博客文章 ,或直接进入代码 。

他们只用AppHarbortesting过,但可能值得一试。

上面的答案是不正确的。 即使有数据的SQL脚本也不是备份。 备份是一个BAK文件,其中包含当前结构中的完整数据库,包括指示符。

当然,在本地系统上可以检索包含完整备份和所有数据的BAK文件,以及来自远程SQL Server数据库的指示符。

这可以用商业软件来完成,直接将备份BAK文件保存到本地机器,例如, 这将直接从本地机器上的远程SQL数据库创build备份。

正如Martin Smith所说的,如果您无法访问机器或文件系统,则需要使用第三方工具,如Red Gate或Adept在源系统和目标系统上进行比较。 红门的工具将允许您复制对象和模式和数据。

试试这个:

1)在计算机中共享具有完全权限的文件夹

2)在你的SQL服务器上:控制面板 – >pipe理工具 – >服务 – >右键单击所有的SQL服务

在login选项卡上应该开始与您的域pipe理员

3)在sql server的维护向导中放置备份位置和文件夹(\ yourcomputername \ sharedfoldernam)

我在我公司的sql server 2008的8台服务器上做了远程备份

有99%的解决scheme从远程sql服务器获取bak文件到本地PC。 我在我的文章中描述了它http://www.ok.unsode.com/post/2015/06/27/remote-sql-backup-to-local-pc

一般来说,它看起来像这样:

  • 执行sql脚本来生成bak文件

  • 使用varbinary字段types执行sql脚本将每个bak文件插入临时表中,并select该行并下载数据

  • 重复prev。 就像你有bak文件一样多的时间

  • 执行sql脚本删除所有的临时资源

就是这样,你的本地电脑上有你的bak文件。

我可以这样做一次…为此,您必须在远程服务器上打开共享。 那么你可以直接把备份放在共享本身上,比默认位置…

通常pipe理员需要备份并在共享文件夹中与我们共享。 我试过,如果这将工作,如果我把备份在那里。 有效。

如果满足以下条件,则可以采用远程SQL Server实例备份到本地驱动器的方式:

  1. 您的本地驱动器上有一个共享文件夹。
  2. 共享文件夹可从SQL Server框中访问。

现在指定备份命令时,请在指定磁盘选项时使用共享文件夹path。

如果您使用SSMS下的生成脚本,请单击高级button。 在“为依赖对象生成脚本”选项下,单击“真”。 通过点击,每个对象的任何依赖关系也将被按照适当的顺序编写出来。

某些第三方备份程序允许使用特定的networking权限设置文件传输。 当SQL Server服务在限制帐户下运行并且没有足够的networking权限时,它非常有用。 尝试使用EMS SQL备份来解决这个任务。

我很惊讶,没有人提到Ola Hallengren提供的脚本备份解决scheme,绝对允许您从远程服务器备份数据库到您的networking上的UNCpath免费(我实际上正在使用它从dev服务器备份一个数据库,除了通过SSMS,我无法远程访问数据库到我的开发PC上的共享)。 从2008年开始,SQL Server 2005到2014年都可以使用。

您需要确保您设置的共享拥有足够的访问权限:在备份过程中,我倾向于允许完全读/写“Everyone”AD组,因为我懒得弄清楚任何更严格的限制,但这是个人select。

这是很好的,有据可查,非常灵活。 我倾向于把proc和日志表放在他们自己的小实用程序数据库中,然后启动它。 假设一切都在你的AD域中,而不是在一个位于同一地点的服务器上,那么这个工作就非常好。

道歉添加到一个非常古老的线程,但我遇到这个时,寻找别的东西,并认为这是一个值得添加任何人寻找这个话题。

为此,我使用Redgate备份专业版7工具。 您可以在创build其他位置的磁贴时从备份文件创build镜像。 并且可以自动在networking上和主机上创build后复制备份文件。

我认为这样做的“正确”方法是通过本地支持SQL Server(到同一台机器),然后使用ntbackup / windows备份将.bak文件备份到远程位置。