如何将远程 SQL Server Express 数据库部分复制到本地 SQL Server Express 数据库?

问题描述 投票:0回答:3

我需要从远程 SQL Server(2005/2008 Express Edition)创建数据库的部分副本并将其存储在本地 SQL Server(2005/2008 Express Edition)数据库中。本地副本将具有相同的架构定义,但仅包含远程数据库中的部分数据。

必须为本地数据库指定一个唯一的名称,并使用 C# 代码中的参数,类似于

TodaysDate_SerialNumber_MachineNumber_DatabaseName    
e.g.  20100622_1_3_DatabaseName

(不要纠结命名方案,它还没有决定。)

我正在使用 VS2010 在 .net 3.5 上使用 C# 工作。

到目前为止,我的想法是从 C# 代码在本地 SQL 服务器上执行数据库的创建脚本,然后将数据从远程数据库复制到本地数据库,根据我实际需要的进行筛选。这些操作必须从 C# 代码开始,但不一定需要全部都是 C# 代码。但我还没有决定。您认为做我想做的事情的最佳选择是什么?

(顺便说一句,如果我不清楚,请告诉我,我会尝试用更多信息更新问题。)

c# sql-server-2005 sql-server-2008 .net-3.5 sql-server-express
3个回答
1
投票
如果您完全在代码中完成此操作,

SqlBulkCopy可能是您最好的选择。

您将与每个数据库建立 SQL 连接,然后在源数据库上运行一个 select 语句,该语句会将行插入到目标数据库/表中。


1
投票

也许您可以创建数据库的备份,将其下载到本地机器,创建一个新的空数据库,然后使用选项“覆盖”将备份恢复到空数据库。之后您可以删除那些您不想“复制”的记录。

您可以使用 Microsoft SQL Management Studio 创建备份和恢复脚本。


1
投票

这个问题的答案实际上取决于您最舒服的做法。

我可能会在本地 SQL Express 上设置一个链接服务器并编写一个 SQL 脚本来完成整个事情。它可以使用

RAISERROR ... WITH NOWAIT
将进度报告回 C# 应用程序,并且可以通过设置 SqlInfoMessageEventHandler

异步处理这些消息
© www.soinside.com 2019 - 2024. All rights reserved.