做一个项目,需要把正式数据库复制一个到测试服务器以供开发使用。

需要复制一个数据库,那么数据库到底是个什么东西呢?如果从逻辑上来讲,无非就是表、视图、索引、存储过程、触发器。而归根结底,最核心的就是表。所以复制数据库,就是复制这些表,以及附属的视图、索引、触发器、存储过程。

复制数据库的方法都比较常规:
•备份出bak文件,然后还原;
•分离出mdf 和 ldf 文件,然后附加;
•导出sql脚本,然后执行;

前两种方法,经常会由于原数据库和目标数据库版本不一致而出现各种各样的问题,本小白这次就遇到了问题,于是采用第三种方法一试。

方法如下:

1. 导出sql脚本文件
1).打开Management Studio,登录到服务器,在数据库中选择要转移的数据库,右键--“任务(T)”--“生成脚本(E)…”。
2).在“生成和发布脚本”窗口中,点击“下一步”
3).“选择要编写脚本的数据库对象”,可以不做设置,点击“下一步”
4).点击[保存到文件]右边的“高级”按钮,在对话框中,设置“为服务器版本编写脚本”为“SQL Server 2008”,设置“要编写脚本的数据的类型”为“架构和数据”。选择保存脚本的位置
5).下一步,再下一步。导出完成

2. 执行脚本
1).打开Management Studio,登录到服务器
2).选择菜单“文件”—“打开”—“文件”,选择.sql脚本文件,点击工具栏中的“执行”按钮。

如果正常的话,刷新数据库即可。但由于原数据库较大,导出的sql脚本文件有进1G,在执行sql文件是出现“未能完成操作,存储空间不足”。

解决方法如下:
1. Win+R 键入:cmd 命令,开启命令行工具;
2. 键入:cd C:\Program Files\Microsoft SQL Server\100\Tools\Binn (具体目录路径跟你安装的SQL位置有关)
3. 键入:sqlcmd -S . -U sa -P 123 -d test -i data.sql
参数说明:-S 服务器地址 -U 用户名 -P 密码 -d 数据库名称 -i 脚本文件路径
(建议将数据脚本文件拷到此目录,就只用写文件名,而不用写全路径了),注意参数大小写和空格符号。