我需要将数据库从远程服务器复制到本地服务器。我尝试使用SQL Server Management Studio,但它只备份到远程服务器上的驱动器。
一些要点:
我不能以复制文件的方式访问远程服务器; 我没有权限设置一个UNC路径到我的服务器;
知道如何复制这个数据库吗?我是否需要使用第三方工具?
我需要将数据库从远程服务器复制到本地服务器。我尝试使用SQL Server Management Studio,但它只备份到远程服务器上的驱动器。
一些要点:
我不能以复制文件的方式访问远程服务器; 我没有权限设置一个UNC路径到我的服务器;
知道如何复制这个数据库吗?我是否需要使用第三方工具?
当前回答
首先,使用Everyone向机器上的本地路径授予完全控制权限(如下所示)。(或者专门授予SQL Server代理帐户权限)。
其次,执行以下步骤:
BACKUP DATABASE [dev] TO DISK = N'\\myMachine\c\dev.bak' WITH COPY_ONLY, INIT;
其他回答
上面的答案是不正确的。即使有数据的SQL脚本也不是备份。备份是一个BAK文件,其中包含当前结构(包括索引)中的完整数据库。
当然,可以在本地系统上检索包含远程SQL Server数据库中所有数据和索引的完整备份的BAK文件。
这可以用商业软件来完成,直接将备份BAK文件保存到您的本地机器上,例如,这将直接从本地机器上的远程SQL db创建备份。
您不能从远程服务器创建备份到本地磁盘—根本没有办法做到这一点。据我所知,也没有第三方工具可以做到这一点。
您所能做的就是在远程服务器机器上创建备份,然后让其他人将其压缩并发送给您。
使用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
为此,我使用Redgate备份pro 7工具。您可以创建镜像从备份文件在创建瓷砖在其他位置。在网络和主机存储上创建备份文件后,可以自动复制备份文件。
从远程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文件。