您好,欢迎访问一九零五行业门户网

SQL Server数据库迁移偏方

欢迎进入windows社区论坛,与300万技术人员互动交流 >>进入 44. 45. set @sql = ' 46. 47. set identity_insert [classifyresult_t] on 48. 49. insert into [dbo].[classifyresult_t]( 50. 51. [id] 52. 53. ,[classid] 54. 55. ,[archiveid]) 56. 57. sele
欢迎进入windows社区论坛,与300万技术人员互动交流 >>进入
44.
    45.       set @sql = '
    46.
    47.       set identity_insert [classifyresult_t] on
    48.
    49.       insert into [dbo].[classifyresult_t](
    50.
    51.           [id]
    52.
    53.          ,[classid]
    54.
    55.           ,[archiveid])
    56.
    57.       select
    58.
    59.          [id]
    60.
    61.          ,[classid]
    62.
    63.           ,[archiveid]
    64.
    65.       from [dbo].[classifyresult]
    66.
    67.       where id >= '+ convert(varchar(100),@id1) + ' and id
    68.
    69.       order by id
    70.
    71.       set identity_insert [classifyresult_t] off '
    72.
    73.       exec (@sql)
    74.
    75.       update temp_movemanage set isdone = 1 where id = @id1
    76.
    77.    end
    78.
    79.end
    --4 job(省略)
    四、缺陷
    缺陷1:在createtable生成的表中,最后一条记录无法执行,因为最后一个id是使用
    缺陷2:如果转移表的记录同时在不断的增长,那么数据就无法把最新的数据转移到分区表了;针对这个缺陷,本来的想法是为搬迁辅助表的id分段加多一些记录,这样就可以执行最新数据;
    缺陷3:对于上面的那个问题,也是有缺陷的,例如现在id分段是100和200,当新数据id>100的某段时间,这两个分段值的isdone就会给更新为1,这样就会造成缺失了很多数据;针对这个缺陷,也是可以解决的,先去判断当新数据的id>200的时候,才执行导id为100和200分段的脚本;(在存储过程中判断max(id)就可以了)
    五、注意
    对磁盘做raid0(看具体情况而定)之后的创建分区时需要设置64k的分配单元大小;
    64位操作系统和64位数据库系统;
    搬迁完之后需要创建这表必要的索引,迁移的时候没有创建索引是因为频繁的插入会影响索引,这些索引需要进行存储位置对齐;
    因为把数据库搬迁到新的服务器了,程序链接的ip地址就需要修改,如果很多程序需要修改链接地址,那我们又没办法解决呢?可以通过修改服务器的ip;
    测试相关的应用程序,测试数据库的运行情况;
    六、其它
    这是一些朋友的建议,这里还没有尝试,因为环境的限制,比如数据库是简单模式了等情况.这里记录下,期待适合环境的童鞋拿去用.
    用mirror迁移
    考虑log shipping
    先完整备份并在目标服务器还原,迁移前先进行事务日志备份并还原,最后将原库所有数据库账号改为只读,然后再进行一次事务日志备份并还原,这样宕机时间会
  [1] [2] [3]
其它类似信息

推荐信息