想把一个数据库复制到另外一个服务器上,想连同表的结构、存储过程、还有外键约束等一次性复制过去,即一次性把整个数据库的相关内容都复制过去,最简单的方法就是备份和还原了。
只要源数据库和目标数据库的数据库名称一致就可以拷贝
一、SQL数据库的备份:
1、依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Server Management Studio → 数据库:Dsideal_school_db既是我们需要备份的学籍数据库
图(1)
2、选择要备份的数据库“Dsideal_school_db”,点击鼠标右键 → 任务 → 备份,如图(2):
图(2)
3、在打开的“备份数据库 —Dsideal_school_db”对话框中,先点击删除,然后点击“添加”,如图(3):
图(3)
4、在弹出的“选择备份目标”对话框中,如图(4)
图(4)
5、选择好备份的路径(如D盘的江西-学籍-数据库备份文件夹中),文件类型选择“所有文件”,“文件名”那个位置填写上您要备份的数据库的名字(最好在您备份的数据库的名字后面加上日期,以方便以后查找),之后连续点击“确定”按钮即可完成数据库的备份操作,如图(5):
图(5
二、SQL数据库的还原:
1、选择您要还原的数据库“Dsideal_school_db”,点击鼠标右键 → 任务 → 还原 → 数据库,如图(6):
图(6)
2、在出现的“还原数据库 — school_web_db”对话框中选择“源设备”,然后点击后面的“…”按钮,如图(7):
图(7)
3、在出现的“指定备份”对话框中,点击“添加”按钮,如图(8):
图(8)
4、找到数据库备份的路径,选择您所要还原的数据库“Dsideal_school_db”(注意:文件类型选择所有文件),然后连续“两次”点击“确定”按钮,如图(9):
图(9)
5、在出现的“还原数据库 — Dsideal_school_db”对话框中,勾选上“选择用户还原的备份集”下的数据库前的复选框,如图(10)
图(10)
6、然后选择“选项”,勾选上“覆盖现有数据库”,如图(11):
图(11)
三、还原数据库问题解决方案
在还原数据库“Dsideal_school_db”时,有时会遇见上图中的问题“因为数据库正在使用,所以无法获得对数据库的独占访问权”,此时我们可以按照以下步骤解决此问题
1、右键数据库“Dsideal_school_db”,然后选择“属性”,如下图
2、在出现的“数据库属性 — Dsideal_school_db ”对话框中,选择“选项”,在“其他选项”下的“状态”中找到“限制访问”。选择“SINGLE_USER”,点击“确定”按钮,如下图:
3、按照正常还原数据库的步骤,还原数据库。
SQL Server 2008“备份集中的数据库备份与现有的数据库不同”解决方法
对于SQL Server 2008,有几个地方是要注意的,比方在还原数据库时,不像2000里边将数据库和文件区分的很细,统一均为文件,这就使还原的数据库文件制定为. bak。那么想还原2000的数据库(备份数据库文件,无后缀名的),就需要自己手工选择。
选择下拉框中的“所有文件”,这时就会显示“备份数据库文件”了,选择-确定
最主要就是要在“选项”中选择“覆盖现有数据库”,否则就会出现“备份集中的数据库备份与现有的数据库”的问题。
[SQL Server] 复制数据库任务
假设你要生产环境下的数据做相应的测试,比如修改及测试存储过程、更改和优化索引等。但是你用户在连接数据库的情况下,你又不能断开数据库的连接。如何取得数据库的副本呢?
一. 利用数据库任务中的复制数据库菜单
示例是从默认实例 MSSQLSERVER 向命名实例 MYSQLSERVER 复制Northwind数据库。开启服务如下:
图一
下一步,我们开打Northwind数据库 -> 任务 -> 复制数据库
图二
打开数据库复制向导 -> 下一步 ,选择源服务器和目标服务器,同时要求目标服务器(MYSQLSERVER)必须运行SQL Server 代理,否则会出现提示!
这里有两种复制数据库方法可供选择:
图三
然后相应的设置完毕后,到最后一步点击完成。出现错误如下:
图四
什么原因呢? 其实是你的目标服务器(此处为MYSQLSERVER)的代理服务的权限过低,这一点图三已经作出了提示。更改代理服务权限为服务启动账户LocalSystem(此过程中会自动启动 Integration Services 服务)
图五
再点击完成便可以成功。
图六
SQLServer中批量插入数据方式的性能对比
技术方案一:
由于是考虑到大数据量的批量插入,于是我想到了ADO.NET2.0的一个新的特性:SqlBulkCopy。有关这个的性能,很早之前我是亲自做过性能测试的,效率非常高。这也是我向公司同事推荐的技术方案。
技术方案二:
利用SQLServer2008的新特性--表值参数(Table-Valued Parameter)。表值参数是SQLServer2008才有的一个新特性,使用这个新特性,我们可以把一个表类型作为参数传递到函数或存储过程里。不过,它也有一个特点:表值参数在插入数目少于 1000 的行时具有很好的执行性能。