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

一些要点:

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

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


当前回答

使用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

其他回答

我以前也可以这么做……要做到这一点,你必须在远程服务器上打开一个共享。然后您可以直接将备份放在共享本身,而不是默认位置…

通常管理员会将备份文件保存在某个共享文件夹中与我们共享。我试过了,如果我把备份放在那里。它工作。

2019年,如果你想要一个实际的本地备份,我建议使用mssql-scripter。是的,它是脚本,但你可以调整它,包括任何你想要的,这可以包括所有的数据。我写了一个bash脚本,在linux机器上使用它进行自动每日备份。查看我的要点:

https://gist.github.com/tjmoses/45ee6b3046be280c9daa23b0f610f407

看看这个博客如何复制远程数据库:

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

试试这个吧:

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

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

登录选项卡应以您的域管理员开始

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

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

仅复制数据和模式(不会复制存储过程,函数等),使用SQL Server导入导出向导,并选择新建…当选择目标数据库时。

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

选择数据源

数据源:SQL Server本机客户端 服务器名称:远程服务器 身份验证: Database:数据库名称

选择目的地

数据源:SQL Server本机客户端 服务器名称:本地服务器 身份验证: 数据库:新…

剩下的就很简单了。