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

一些要点:

我不能以复制文件的方式访问远程服务器; 我没有权限设置一个UNC路径到我的服务器;

知道如何复制这个数据库吗?我是否需要使用第三方工具?


当前回答

只要满足以下条件,您就可以从远程SQL Server实例将备份备份到本地驱动器:

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

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

其他回答

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

您所能做的就是在远程服务器机器上创建备份,然后让其他人将其压缩并发送给您。

使用SQL Server 2019中的存储过程

CREATE PROCEDURE [dbo].[BackupDB]
@backupPath nchar(200), 
@dbname nchar(50)
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @backupDate as nchar(10) 
    SELECT @backupDate = CONVERT(VARCHAR(10),GETDATE(),112) 
    IF DB_ID(TRIM(@dbname)) IS NOT NULL
    BEGIN
        SET @backupPath = TRIM(@backupPath) + TRIM(@dbname) + '_' + TRIM(@backupDate) + '.BAK'
        BACKUP DATABASE @dbname TO DISK = @backupPath
    END 
END
GO

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

就是这么简单

创建一个本地共享文件夹,具有“everyone”读写权限

连接到目标数据库,开始备份并像下面那样指向共享

\ mymachine \ shared_folder \ mybackup.bak

(Windows域环境试用)

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

通常是这样的:

执行SQL脚本生成bak文件 执行SQL脚本将每个bak文件插入到字段类型为varbinary的临时表中,并选择这一行下载数据 重复上一页。你有多少bak文件就有多少步 执行SQL脚本删除所有临时资源

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