SQLServer数据库的“⽣成脚本”功能详解(避免导出来的sql脚本
还原的数据库缺失)
·
下⽅直接⽤⼀个例⼦来引起话题:
SQL Server⽣成SQL脚本丢失了默认值和外键的问题
SQL Server在⽣成SQL Scripts(SQL 脚本)的时候,默认是没有默认值和外键等的。
  具体解决的⽅法如下:
  1、⽣成SQL脚本的时候在“常规”标签选择“全部显⽰”,再选上“编写全部对象脚本”。
  2、在“选项”标签页⾥,选中表脚本选项的所有内容,包括:
  -编写索引脚本
  -编写全⽂索引脚本
sqlserver备份表语句
  -编写触发器脚本
  -编写主键、外键、默认值、和检查约束脚本
  这样⽣成的SQL脚本就包括了主键、外键、默认值、和检查约束脚本等了。
不知道是受SQLSERVER2000,2005的影响还是,Next的惯性思维,在使⽤数据库“⽣成脚本”的时候基本上不会太多关注⾥⾯的配置选项,但其实从SQLSERVER2008开始,微软在⽣成脚本这⽅⾯做了很⼤的改进,让⽤户⾃⼰选择配置的东西更多了。
例如经常⽤到的⼀个是:从⼀个数据库将数据导⼊另⼀个库,或者向下兼容还原,以前操作很⿇烦的,导⼊导出,链接等等。我⾃⼰是经常⽤第三⽅软件⽣成Insert 的SQL,然后到⽬的数据库执⾏,当然数据不是太多的情况,这是种⽐较快速的⽅法。
刚好最近在做数据库迁移时,⽤到了“⽣成数据脚本”这个功能,⽬的就是实现⽣成Insert SQL的⽅式还原数据库。
那我们来看下SQLSERVER2008的“⽣成脚本”功能,不知道⼤家有没有详细看看⾥⾯的配置,没有的话刚好⼀起看下:
导出的sql语句:
上图⽤红框标记的是⽐较常⽤的功能,你是否有注意到呢?
通过这些配置,基本上可以复制⼀个数据库的所有SQL,轻松实现数据库不同版本双向复制。
这个问题帮我⼀个⼤忙呀,不然⼜要徒劳的写⼀个重复的功能到Sqlserver上,看来以后配置的地⽅还是要多留意下的。
分析说明:
这个功能从sqlserver2000就有,独⽴出来是在sqlserver2005
但是很直接的⽤经验告诉你,如果想⽣成带数据的脚本,⽐如说sqlserver2008⽣成sqlserver2000的脚本,或者sqlserver2005的脚本,这个⼯具⽣成的代码⽐较机械化,很多内容其实前后冲突,⽐如说建⽴外键关系,⽽且⽣成低版本的脚本,甚⾄有错误。导致数据库还原失败甚⾄是缺漏还原,根本⽆法正常使⽤。
解决⽅法:主外键关系,在导出脚本的时候注意⼀下先后顺序就可以了。(但是,如果导出的⽂件有⼏个G以上内,根本就⽆法打开编辑;这时应该怎么办呢?)
求解决⽅案。
这⾥是其中的⼀种解决⽅案:将架构和数据分开处理
————————————————
我们直接说⽅法,不得不说技术活是的细活。步骤如下:
第⼀步:⽣成脚本。数据库名称右键单击,以此选择“任务”->"⽣成脚本",和标准的⽣成脚本⽅法相同,但此处选择“仅限架构”【见下图】,导出数据库对象创建脚本。
第⼆步:分解脚本。将数据库表约束创建语句从脚本中剥离出来,脚本中创建约束语句都在⼀块,很⽅便。如下图:
第三步:先只执⾏部分脚本。先执⾏除 “数据库表约束脚本” 外的脚本,导出数据后最后执⾏数据库表约束脚本。
第四步:迁移数据。使⽤导出(“任务”->"导出")功能,将⾼版本数据导⼊到低版本当中。此步骤之前建议备份数据库,导数据出现错误,可以及时还原,重新进⾏第四步。
第五步:执⾏剩余脚本。迁移数据成功后,执⾏数据库表约束脚本(4-1.表和视图创建_约束.sql)。————————————————
·················

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。