我在数据库中有一组10个表(DB1
)。另一个数据库(DB2
)中有10个表,在同一个SQL Server 2008 R2数据库服务器计算机上具有完全相同的模式。
DB1
中的10个表经常使用数据进行更新。
我打算编写一个每天运行一次的存储过程,以便将DB1
中的10个表与DB2
同步。存储过程将使用MERGE
语句。
现在,我的目标是尽可能地将其作为通用和参数化。也就是说,适应更多的表格......并适应不同的源和目标数据库名称。绝对不需要硬编码。
到目前为止,这是我的算法:
MERGE
语句,可以为上面的每个表格执行同步(基于主键?)这是我需要更多输入的地方。
实现此存储过程的最佳方法是什么? SQL语法会有所帮助。
答案 0 :(得分:2)
我必须做类似的事情,为此我使用带有“骨架”的字符串作为merge语句,然后我通过sys视图上的简单查询检索列和pks列表。
你可以做类似的事情来建立你的合并声明,这里是我现在写的一个草图作为一个例子(我知道这很可怕但是我不打算在这个时候写一些像样的东西,它应该给你一个提示:P)
然后你只需要使用通常的sp_executesql
存储过程来执行它
顺便说一句,在用这种方式构建命令字符串时总要注意,它不是那么安全