SQL Server Migration Assistant for MySQL(SSMA),数据迁移后的一些善后操作
来源:互联网 发布:淘宝怎么增加销量 编辑:程序博客网 时间:2024/05/29 14:42
微软的SQL Server Migration Assistant for MySQL(此后简称SSMA)用于MySQL迁移非常好用,如何使用,网上大把,本篇原创博客旨在善后工作。
迁移之后,需要把ssma$rowid这字段删除,该字段的作用就是给每个行做一个GUID的唯一标识,用以迁移数据使用。
注意:以下脚本均以既定的格式为例,自定义的约束名、索引名等无法识别。
step 1: 由于ssma$rowid拥有唯一约束,在删除这一列前,必须将约束删除
--删除rowid的唯一约束select 'ALTER TABLE ['+t.name+'] DROP CONSTRAINT '+i.name from sys.indexes iinner join sys.tables t on i.object_id=t.object_idwhere i.type_desc='NONCLUSTERED'and i.name like '%ssma$rowid'
--删除rowid这一列select distinct 'ALTER TABLE ['+t.name+'] DROP column ssma$rowid ' from sys.tables tleft join sys.columns c on t.object_id=t.object_idwhere t.name <> '__MigrationHistory' and c.name = 'ssma$rowid'
在更改前,需要将主键约束去除。
而主键约束会被其他表的外键引用,得先把外键约束去除。
step 1:
--删除每个表的外键约束select 'ALTER TABLE ['+t.name+'] DROP CONSTRAINT '+o.name from sys.objects oinner join sys.tables t on o.parent_object_id=t.object_idwhere o.type_desc='FOREIGN_KEY_CONSTRAINT'and o.name like '%$FK_%'
step 2:
--删除每个表的主键约束select 'ALTER TABLE ['+t.name+'] DROP CONSTRAINT '+i.name from sys.indexes iinner join sys.tables t on i.object_id=t.object_idwhere i.type_desc='CLUSTERED'and i.name like '%_Id'
step 3:
--删除每个表的默认值约束select 'ALTER TABLE ['+t.name+'] DROP CONSTRAINT '+o.name from sys.objects oinner join sys.tables t on o.parent_object_id=t.object_idwhere o.type_desc='DEFAULT_CONSTRAINT'and o.name like 'DF_%'
step 4:
--删除每个表的索引select 'DROP INDEX ['+i.name+'] ON ['+t.name+'] WITH ( ONLINE = OFF )' from sys.indexes iinner join sys.tables t on i.object_id=t.object_idwhere i.type_desc='NONCLUSTERED'and i.name like 'IX_%'
step 5:
/*GUID & pk*/select (case Is_Nullable when 'NO' then concat('alter table [',table_name,'] alter column ',column_name,' uniqueidentifier not null')else concat('alter table [',table_name,'] alter column ',column_name,' uniqueidentifier') end) from INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME like '%Id' and DATA_TYPE='nchar' and CHARACTER_MAXIMUM_LENGTH=36;
一般稍有规模的项目都会有并发控制,做法一般为RowVersion
迁移后的数据类型为datetime,需要更改为timestamp
/*RowVersion*/-- 添加新列 RowVersion1select concat('alter table [',table_name,'] add ',column_name,'1 timestamp not null') from INFORMATION_SCHEMA.COLUMNS where DATA_TYPE='datetime' and column_name='rowVersion'-- 删除旧的RowVersion列select concat('alter table [',table_name,'] drop column [',column_name,']') from INFORMATION_SCHEMA.COLUMNS where DATA_TYPE='datetime' and column_name='rowVersion'--重命名RowVersion1=>RowVersionselect 'exec sp_rename '''+TABLE_NAME+'.'+COLUMN_NAME+''','''+'RowVersion'+''',''column''' from INFORMATION_SCHEMA.COLUMNS where DATA_TYPE='timestamp' and column_name='rowVersion1'
后记:这些约束在更改数据类型的时候,会碍事,在更改完成后,自然需重新加上。
谢谢观看
0 0
- SQL Server Migration Assistant for MySQL(SSMA),数据迁移后的一些善后操作
- SQL Server Migration Assistant for MySQL使用方法 数据迁移
- SQL Server Migration Assistant for MySQL! 使用方法
- SQL Server Migration Assistant for MySQL使用方法
- SQL Server Migration Assistant for MySQL使用方法
- mysql迁移到sqlserver数据库 SQL Server Migration Assistant for MySQL使用方法
- 使用Microsoft SQL Server Migration Assistant for Oracle工具迁移数据
- Microsoft SQL Server Migration Assistant 2005 for MySQL使用方法
- Microsoft SQL Server Migration Assistant for MySQL v5.2
- Migration Assistant for MySQL
- 使用SSMA将MySQL数据库迁移到SQL Server
- SSMA(Sql Server迁移助手)oracle to sqlserver2008 R2
- SSMA Oracle to SQL Server data migration step fails with no explanation
- 帮助你从MySQL移植到SQL Server的工具(SSMA)
- 通过 IBM Migration Toolkit 的支持把数据从 MySQL 迁移到 DB2 和 Informix Dynamic Server
- SQL Server 迁移数据到MySQL
- SQL Server 迁移数据到MySQL
- SQL server 数据迁移到mysql
- 119. Pascal's Triangle II
- android 获取时间的方法
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方法
- HDU 5378 Leader in Tree Land (概率dp,进阶)
- php-单例模式实现mysql实例化对象
- SQL Server Migration Assistant for MySQL(SSMA),数据迁移后的一些善后操作
- eclipse 解决配置solr 环境变量问题
- 谈谈我对HTML5+CSS3的理解
- Unity 时间的具体使用
- 大数斐波那契数列
- strstr
- C语言关于补码的解释及误区
- 编程之久除了算法和数据结构,什么也不属于我们。
- ArcGIS图斑次序编号