注意:本文基于sqlserver2008 R2
一、sqlserver数据库整体导出
1、第一种方式,利用备份还原功能(如果生产库和测试库版本不一致,请选择第二种方式):
右击需要导出的数据库,然后选择“任务”—>“备份”,
点击“确定”,完成备份数据库文件。然后把生产环境备份好的数据库文件拷贝到测试环境,在还原数据库的时候,需要将原数据库删除,然后单击“数据库”--->“还原数据库”,“目标数据库”中输入数据库名称,“还原的源”选择“源设备”,然后添加数据库备份文件,点击“确定”,即可完成还原操作。
2、第二种方式,利用分离附加功能(注意:此方法会导致生产库暂时不可用,谨慎操作):
右击需要导出的数据库,然后选择“任务”—>“分离”,
点击“确认”后,数据库就分离好了。然后去数据库安装目录下的DATA文件夹下复制分离好的数据库文件
把生产环境分离好的数据库文件拷贝到测试环境。在测试环境附加数据库的时候,首先也需要将测试环境的数据库分离,然后在sqlserver管理界面,右击“数据库”—>“附加”,选择从生产拷贝过来的文件,
点击“确定”,数据库即完成附件操作。(完成后记得把生产库分离的数据库文件附加回生产环境)
二、sqlserver部分表数据导出(此方法如果是默认选择整个数据库的对象,那么可以直接生成所有的脚本和数据文件)
首先,数据从生产库导出,右击需要导出的数据库,然后选择“任务”—>“生产脚本”功能,然后“选择特定数据库对象”,勾选需要导出的表
然后继续下一步,点击“高级”按钮,下拉框下拉,找到“要编写脚本的数据类型”,选择“仅限数据”,则只导出表的数据脚本,而不会导出建表语句(如果需要建表语句,可以选择“架构和数据”)
确定后,一直点击下一步直到完成,则数据sql文件成功的生成到指定目录。然后把sql文件导入到测试库。首先拷贝生成的sql文件到测试库,如果文件较小,可以直接在sqlserver studio界面中打开,点击执行就可以了。如果点击执行后,提示“没有足够的内存继续执行程序 。(mscorlib)”,则需要再dos界面中执行脚本。打开dos界面,执行下面命令:sqlcmd -S localhost -U sa -P 1 -d "databasename" -i "c:\xxx\MySql.sql" (参数命名:-S 服务器地址 -U 用户名 -P 密码 -d 数据库 -i 脚本文件路径)
三、sqlserver某张表的部分数据导出
有的表数据量特别大,导致生成的数据脚本文件很大,不太方便文件的拷贝和传输。如果我们只需要其中的一小部分数据,那么可以只导出需要表的部分数据。
1、第一种方式,通过sql语句查询保存到文件
通过sql语句,查询出来这部分数据,然后右击查询的结果,“将结果另存为”,输入文件名,保存类型选择“文本”。
保存完成后,把生成的sql文件拷贝到测试环境。然后右击需要导入的数据库,然后选择“任务”—>“导入数据”,下一步,然后到“选择数据源”界面,“数据源”选择“平面文件源”,“文件名”选择从生产环境拷贝过来的sql文件,
其他选项都按照默认,然后点击“下一步”,
继续“下一步”,选择目标
服务器名称和数据库已默认选好,不需要修改,继续“下一步”,
因为我的sql文件名和要导入的数据库表名一样,所以自动就对应起来了,
这一步也不需要修改,继续“下一步”,到“数据类型映射”界面,发现“原列”和“目标列”已经对应起来,核对了一下,没有任何问题,但是每一行都会有感叹号,所以需要“出错时(全局)”和“截断时(全局)”这两个选项选择“忽略”(请注意,如果不选择忽略有可能导入会报错,导入不进去)。
继续“下一步”,“下一步”,然后点“完成”,数据就可以导入进来了。
2、第二种方式,把需要用到的数据保存到新表
把需要导出的这部分数据保存到一张新表里,
然后把这张表的数据按照本文上面的内容“二、sqlserver部分表数据导出”,通过“生成脚本”的方法生成sql文件
“高级脚本编写”选项中选择“仅限数据”
然后把生成的文件拷贝到测试环境,用文本编辑器打开文件,把表名全部替换成要导入的表的表名
最后执行文件中的sql语句,即可完成表中部分数据从生产环境导测试环境的过程。