首页 文章

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

提问于
浏览
203

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

一些要点:

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

  • 我没有权限设置我的服务器的UNC路径;

有关如何复制此数据库的任何想法?我必须使用第三方工具吗?

20 回答

  • 3

    您可以通过以下方式满足以下条件,从远程SQL Server实例备份到本地驱动器:

    • 您的本地驱动器上有一个共享文件夹 .

    • 可以从SQL Server框访问共享文件夹 .

    现在,在指定backup命令时,请在指定磁盘选项时使用共享文件夹路径 .

  • 4

    我可以这样做一次......要做到这一点,你必须在远程服务器上打开一个共享 . 那么你可以直接将备份放在共享本身上,而不是默认位置......

    管理员通常会在一些共享文件夹中与我们共享备份 . 我试过,如果我把备份放在那里,那将是有效的 . 有效 .

  • 13

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

    Of course a BAK file containg the full backup with all data and indizes from a remote SQL Server database can be retrieved on a local system.

    这可以使用商业软件完成,直接将备份BAK文件保存到本地计算机,例如This one将直接从本地计算机上的远程SQL数据库创建备份 .

  • 26

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

  • 5

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

    Backup a SQL Server 2008 Database From a Shared Hosting Environment

  • 0

    您可以使用复制数据库...右键单击远程数据库...选择任务并使用复制数据库...它将询问您有关源服务器和目标服务器的信息 . 你的源是远程的,目的地是你的本地sql server实例 .

    就这么简单

  • 26

    你可以试试SQLBackupAndFTP . 它将创建脚本来创建数据库中的所有对象,并创建表中所有行的INSERT语句 . 在任何数据库中,您都可以运行此脚本文件,并将重新创建整个数据库 .

  • 0

    试试这个:

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

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

    登录选项卡上的应该从您的域管理员开始

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

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

  • 41

    要仅复制数据和模式(不会复制存储过程,函数等),请使用SQL Server导入和导出向导,并在选择目标数据库时选择 New... .

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

    Choose a Data Source

    • Data Source :SQL Server Native Client

    • Server Name :远程服务器

    • Authentication

    • Database :数据库名称

    Choose a Destination

    • Data Source :SQL Server Native Client

    • Server Name :本地服务器

    • Authentication

    • DatabaseNew...

    剩下的就是直截了当 .

  • -1

    我很惊讶没有人提到Ola Hallengren提供的脚本化备份解决方案,绝对 does 允许你免费将数据库从远程服务器备份到网络上的UNC路径(我实际上是在我输入时使用它从我没有远程访问权限的开发服务器备份数据库,而不是通过SSMS到我的开发PC上的共享 . 这自2008年开始提供,适用于SQL Server 2005至2014 .

    您需要确保您设置的共享具有足够的访问权限:在备份过程中,我倾向于允许对“Everyone”AD组进行完全读/写,因为我太懒了,无法找出更严格的限制但是个人选择 .

    它使用良好,文档齐全且非常灵活 . 我倾向于将procs和logging表放在他们自己的小实用程序数据库中,然后将其激活 . 如果所有内容都在您的AD域中而不是远程,因为它位于共处一地的服务器或某物上,这非常有效 .

    为添加到一个非常老的线程而道歉,但我在寻找其他东西时遇到了这个问题,并认为这对于寻找这个主题的人来说是一个值得的补充 .

  • 0

    如果使用SSMS下的“生成脚本”,请单击“高级”按钮 . 在“为从属对象生成脚本”选项下,单击“True” . 通过单击,每个对象的任何依赖项也将按正确的顺序编写 .

  • 16

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

    这会弹出一个向导,您可以在其中设置以下内容以执行数据库的正常备份, even on a remote server

    • 选择您要备份的数据库,然后点击下一步,

    • 在它提供给您的选项中:

    • 2010年:在表/视图选项下,将'Script Data'和'Script Indexes'更改为True并点击下一步,

    • 2012年:在'General'下,将'Types of data to script'从'Schema only'更改为'Schema and data'

    • 2014年:脚本数据的选项现在是"hidden",在步骤"Set Scripting Options"中,您必须单击"Advanced"并将"Types of data to script"设置为"Schema and data"值

    • 在接下来的四个窗口中,点击'select all',然后点击下一步,

    • 选择脚本到新的查询窗口

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

    如果您具有对远程数据库的完全访问权限,则可以选择在向导中检查'script all objects' _脚本数据库' option to True on the next window. Watch out though, you' ll需要执行完全搜索并将脚本中的数据库名称替换为新数据库,在这种情况下,您将获胜必须在运行脚本之前创建 . 这应该创建更准确的副本,但由于权限限制,有时不可用 .

  • 0

    有99%的解决方案从远程sql server获取bak文件到你的本地电脑 . 我在帖子中描述了它http://www.ok.unsode.com/post/2015/06/27/remote-sql-backup-to-local-pc

    一般来说将如下所示:

    • 执行sql脚本生成bak文件

    • 执行sql脚本将每个bak文件插入带有varbinary字段类型的临时表中并选择此行并下载数据

    • 重复上一个 . 步骤尽可能多的时间,因为你有bak文件

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

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

  • 1

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

  • 162

    AppHarbor团队一直在努力解决这个问题,并开发了一个使用SQL服务器管理对象和SqlBulkCopy的临时解决方案 .

    查看their blog post关于它,或去straight to the code .

    他们只用AppHarbor进行了测试,但值得一试 .

  • 3

    首先,使用Everyone向计算机上的本地路径授予完全控制权限(如下所示) . (或者,对于SQL Server代理帐户,grant permissions specifically) .

    其次,执行以下操作:

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

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

    问题是这个选项不一定以正确的执行顺序生成脚本,因为它不考虑依赖关系 .

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

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

    我成功地使用了来自ApexSQL(差异和数据差异)的比较工具来完成类似的任务,但是你不能错过任何其他已经提到过的,特别是Red Gate .

  • 1

    如果您在本地网络上,则可以在本地计算机上共享文件夹,并将其用作备份的目标文件夹 .

    例:

    • 本地文件夹:

    C:\MySharedFolder -> URL: \\MyMachine\MySharedFolder

    • 远程SQL Server:

    Select your database -> Tasks -> Back Up -> Destination -> Add -> Apply '\\MyMachine\MySharedFolder'

  • 7

    cannot 从远程服务器创建备份到本地磁盘 - 没有办法执行此操作 . 据我所知,也没有第三方工具可以做到这一点 .

    您所能做的就是在远程服务器计算机上创建备份,并让某人将其压缩并发送给您 .

  • 1

    我为此目的使用了Redgate backup pro 7工具 . 您可以在其他位置的创建磁贴中从备份文件创建镜像 . 并且可以在网络上创建后自动复制备份文件 .

相关问题