我需要将数据库从远程服务器复制到本地服务器。我尝试使用SQL Server Management Studio,但它只备份到远程服务器上的驱动器。
一些要点:
我不能以复制文件的方式访问远程服务器; 我没有权限设置一个UNC路径到我的服务器;
知道如何复制这个数据库吗?我是否需要使用第三方工具?
我需要将数据库从远程服务器复制到本地服务器。我尝试使用SQL Server Management Studio,但它只备份到远程服务器上的驱动器。
一些要点:
我不能以复制文件的方式访问远程服务器; 我没有权限设置一个UNC路径到我的服务器;
知道如何复制这个数据库吗?我是否需要使用第三方工具?
当前回答
正如Martin Smith所说,如果您无法访问计算机或文件系统,那么您将需要使用第三方工具,如Red Gate或Adept来对源系统和目标系统进行比较。Red Gate的工具将允许您复制对象、模式和数据。
其他回答
正如Martin Smith所说,如果您无法访问计算机或文件系统,那么您将需要使用第三方工具,如Red Gate或Adept来对源系统和目标系统进行比较。Red Gate的工具将允许您复制对象、模式和数据。
我知道这是一个晚的答案,但我必须对大多数投票的答案做出评论,说要在SSMS中使用生成脚本选项。
问题是这个选项不一定会以正确的执行顺序生成脚本,因为它没有考虑依赖关系。
对于小型数据库,这不是一个问题,但对于大型数据库,这肯定是一个问题,因为它需要手动重新排序脚本。试一下500对象数据库;)
不幸的是,在这种情况下,唯一的解决方案是第三方工具。
我成功地使用了ApexSQL (Diff和Data Diff)的比较工具来完成类似的任务,但使用这里已经提到的任何其他工具都不会出错,尤其是Red Gate。
我知道这是一个旧的帖子,但对于它的价值,我发现“最简单”的解决方案是右键单击数据库,并选择“任务”->“导出数据层应用程序”。这个选项可能只是因为服务器托管在Azure上(根据我过去使用Azure的记忆,.bacpac格式在那里非常常见)。
完成此操作后,您可以右键单击本地服务器“Databases”列表,并使用“Import data -tier Application”,使用.bacpac文件将数据获取到本地机器。
不过要记住,输出可能需要很长时间。我的出口花了大约两个小时。不过,导入部分要快得多。
你可以使用复制数据库…右键单击远程数据库…选择任务并使用复制数据库…它会询问您源服务器和目标服务器。您的源是远程的,目标是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