我需要从远程 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# 代码。但我还没有决定。您认为做我想做的事情的最佳选择是什么?
(顺便说一句,如果我不清楚,请告诉我,我会尝试用更多信息更新问题。)
SqlBulkCopy可能是您最好的选择。
您将与每个数据库建立 SQL 连接,然后在源数据库上运行一个 select 语句,该语句会将行插入到目标数据库/表中。
也许您可以创建数据库的备份,将其下载到本地机器,创建一个新的空数据库,然后使用选项“覆盖”将备份恢复到空数据库。之后您可以删除那些您不想“复制”的记录。
您可以使用 Microsoft SQL Management Studio 创建备份和恢复脚本。
这个问题的答案实际上取决于您最舒服的做法。
我可能会在本地 SQL Express 上设置一个链接服务器并编写一个 SQL 脚本来完成整个事情。它可以使用
RAISERROR ... WITH NOWAIT
将进度报告回 C# 应用程序,并且可以通过设置 SqlInfoMessageEventHandler 异步处理这些消息