2

我在数据库中有一组 10 个表 ( DB1)。并且在同一台 SQL Server 2008 R2 数据库服务器机器上的另一个数据库 ( DB2) 中有 10 个具有完全相同架构的表。

中的 10 个表DB1经常用数据更新。

我打算编写一个每天运行一次的存储过程,用于DB1同步DB2. 存储过程将使用该MERGE语句。

现在,我的目标是使其尽可能通用和参数化。也就是说,容纳更多的表......并容纳不同的源和目标数据库名称。绝对没有硬编码的意图。

到目前为止,这是我的算法:

  1. 将数据库名称作为参数
  2. 在存储过程中进行第一个查询...导致从查找表中给出 10 个表的名称(可以是 10、20 或其他)
  3. 有一个通用MERGE语句对上述每组表进行同步(基于主键?)

这是我需要更多输入的地方。

实现此存储过程的最佳方法是什么?SQL 语法会很有帮助。

4

1 回答 1

2

我必须做类似的事情,为此我使用带有“骨架”的字符串作为合并语句,然后我通过对 sys 视图的简单查询来检索列列表和 pks。

你可以做一些类似的事情来构建你的合并语句,这是我现在写的一个草图作为一个例子(我知道这很可怕,但我不会在这个时候写一些像样的东西,无论如何它应该给你一个提示:P)

SQLFiddle

那么你只需要顺便用通常的sp_executesql存储过程执行它,在这种方式构建命令字符串时总是要注意,它不是那么安全

于 2012-11-29T23:02:00.207 回答