我们需要创建一个用于克隆小型SQL Server数据库的自动化进程,但在目标数据库中,所有主键都应该与源代码不同(我们使用UNIQUEIDENTIFIER ids for all主键)。我们有成千上万的数据库都具有相同的模式,并且需要使用这个“克隆”过程来创建所有非密钥数据匹配的新数据库,但是保持了参照完整性。克隆具有所有新主键的SQL Server数据库
有没有简单的方法来做到这一点?
更新 - 例如:
每个数据库具有需要被克隆〜250个事务表。考虑这几个表和它们之间的关系(每个表都有一个唯一标识符的主键= ID)以下简单的例子:
location
doctor
doctor_location (to doctor.id via doctor_id, to location.id via location_id)
patient
patient_address (to patient.id via patient_id)
patient_medical_history (to patient.id via patient_id)
patient_doctor (to patient.id via patient_id, to doctor.id via doctor_id)
patient_visit (to patient.id via patient_id)
patient_payment (to patient.id via patient_id)
我们需要克隆数据库的原因是由于办公室被买断或更改所有权(由于合作伙伴的变化,这种情况发生得比较频繁)发生这种情况时,办公室的税务和保险信息会发生变化。在法律上,这需要一个全新的公司结构,并且办公室之间的财务需要完全分开。
但是,大多数办公室都希望保留所有患者病史,因此他们选择“克隆”数据库。新的数据库将被剥离财务记录,但所有的患者/医生数据将被保留。旧数据库将拥有所有信息直至“克隆”。
需要新的GUID的原因是我们将所有数据库合并到单个关系数据库中用于报告目的。由于所有事务表都有GUID,所以这很有效......除了克隆的情况。
到目前为止,我们唯一的解决方案是将数据库转储到文本文件并搜索并替换GUID。这是非常耗时的,所以希望有一个更好的方法。
你想要带什么类型的数据,主要是查找数据?所以你想克隆你的数据库并克隆所有数据,或者只是查找数据?例如,非关键数据是什么意思? – peter 2011-12-22 20:40:35
查找数据并不重要,因为它总是相同的,我们可以编写脚本(并且它有固定的整数键)。交易数据是我们主要关心的问题。我会用一个例子来更新q。 – 2011-12-22 20:47:09