SQL数据库脚本迁移

时间:2016-04-15 06:57:03

标签: sql sql-server database

=>我们有两个相同的SQL数据库 DB1 DB2 具有相同的架构和数据。
例如我在 DB1 中有一个语言表,而 DB2 包含相同的数据,如图所示

DB1

的语言表

enter image description here

DB2

的语言表

enter image description here

两个表在架构和数据中看起来都相同

现在,我已在 DB1

中插入了一条记录

enter image description here

并更新 DB2

中的现有记录

enter image description here

从这里开始, DB1 DB2 的语言表不再相同

现在,我已为 DB1

的语言表生成插入脚本

enter image description here

现在,我想在 DB2

中运行此脚本

如果我在 DB2 中运行此脚本,

enter image description here

直到现在一切正常。
但由于我的要求不同,我不想以这种方式记录 DB2 的语言表 现在问题就开始了。

我希望这个脚本应该关注 DB2 中语言表的更新记录。我的意思是它应该检查 DB2 中语言表的更新记录,即更新的记录应保持不变 这意味着在运行脚本后, DB2 的语言表应为
enter image description here

我们应该如何做到这一点,或者我们应该在脚本中做出哪些改变来处理这些变化

2 个答案:

答案 0 :(得分:0)

/*
Given this setup
drop table languages
CREATE TABLE LANGUAGES
(TITLE CHAR(5),DESCRIPTION CHAR(20), ID INT)

INSERT INTO LANGUAGES
(TITLE ,DESCRIPTION, ID) 
VALUES 
('UK','uNITED kINGDOM',1),
('US','uNITED STATES',2),
('N','nORWAY',3),
('fi','Finland',4)

This update statement works
*/

update languages
set title = 'nb-NV' where id = 3

答案 1 :(得分:0)

如果你对手动合并数据库没问题,你应该看看这个工具:

  • Open DBDiff - 免费
  • Red Gate - 不是免费的,昂贵的;)
  • 如果您使用Microsoft Visual 2015,则可以使用内置数据比较功能