用sql语句实现分离和附加数据库的方法_MsSql

对于用Manage Studio自己看着界面操作就可以应付了。
分离数据库:
对于用存储过程来分离数据库,如果发现无法终止用户链接,可以使用ALTER DATABASE命令,并利用一个能够中断已存在链接的终止选项来把数据库设置为SINGLE_USER模式,设置为SIGLE_USER代码如下:
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE下面是分离数据库的CMD命令
EXEC sp_detach_db DatabaseName一旦一个数据库分离成功,从SQL Server角度来看和删除这个数据库没有什么区别。
附加数据库:
对于附加数据库,可以使用sp_attach_db存储过程,或者使用带有FOR ATTACH选项的CREATE DATABASE命令,在SQL Server2005或更高的版本中推荐使用后者,前者是为了向前兼容,它正在逐渐淘汰,而后者更提供更多对文件的控制。
CREATE DATABASE databasename
ON (FILENAME = 'D:\Database\dbname.mdf')
FOR ATTACH | FOR ATTACH_REBUILD_LOG
然而对于这样的附加,我们要注意几个地方。因为涉及到重建日志。
1.对于一个读/写数据库,如果含有一个可用的日志文件,无论使用FOR ATTACH ,还是使用FOR ATTACH_REBULD_LOG,都是一样,都不会对此数据库重建日志文件。如果日志文件不可用或者物理上没有该日志文件,使用FOR ATTACH或FOR ATTACH_REBULID_LOG都会重建日志文件,所以如果我们复制一个带有大量日志文件的数据库到另一台服务器中,就可以只复制.mdf文件,不用复制日志文件,然后使用FOR ATTACH_REBULD_LOG选项重建日志。条件是这台服务器将主要使用或只用改数据库的副本进行读操作。
2.对于一个只读数据库,就有点区别了,如果日志文件不可用,那么就不能更新主文件,所以也就不能重建日志,因此当我们附加一个只读数据库是,必须在FOR ATTACH从句中指定日志文件。
如果使用附加数据库重建了日志文件。使用FOR ATTACH_REBUILD_LOG会中断日志备份链,进行这种操作之前最好做一次数据库完全备份。
使用sp_detach_db存储过程一个好处就是可以保证一个数据库是被干净的关闭,那日志文件就不是附加数据库所必须的,我们可以使用FOR ATTACH_REBUILD_LOG命令重建日志,得到一个最小的日志文件。也算是一种快速收缩一个大日志文件的方法。
Author:兴百放
Web:Http://xbf321.cnblogs.com

时间: 2024-10-27 01:55:48

用sql语句实现分离和附加数据库的方法_MsSql的相关文章

用sql语句实现分离和附加数据库的方法

对于用Manage Studio自己看着界面操作就可以应付了. 分离数据库: 对于用存储过程来分离数据库,如果发现无法终止用户链接,可以使用ALTER DATABASE命令,并利用一个能够中断已存在链接的终止选项来把数据库设置为SINGLE_USER模式,设置为SIGLE_USER代码如下: ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE下面是分离数据库的CMD命令 EXEC sp_detach_db D

sql server2012附加数据库问题解决方法_MsSql

  SQLServer错误5120:先用widows用户登录附加再分离重新用sa附加就行了 不行的话,绝招: 你先用SQLServer创建一个新的数据库,然后用你要附加的文件去覆盖掉创建的文件!覆盖之前,记得计算机-管理-服务-把SQL服务关掉

sql语句中单引号,双引号的处理方法_MsSql

下面我们就分别讲述,虽然说的是Insert语句, 但是Select.Update.Delete语句都是一样的. 假如有下述表格:          mytabe          字段1    username     字符串型(姓名)          字段2    age          数字型(年龄)          字段3    birthday      日期型(生日)          字段4    marry        布尔型(是否结婚,结婚为True,未结婚为False)

SQL Server 数据库分离与附加 就这么简单!_MsSql

一.概述 SQL Server提供了"分离/附加"数据库."备份/还原"数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的"分离/附加"方法,类似于大家熟悉的"文件拷贝"方法,即把数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到其它磁盘上作备份,然后把这两个文件再拷贝到任何需要这个数据库的系统之中.比如,在实验教学过程中,同学们常常想把自己在学校实验室计算机中创建的数据库搬迁到自己的计算机中而不想

《数据库基础及实践技术——SQL Server 2008》一3.6 分离和附加数据库

3.6 分离和附加数据库 利用分离和附加数据库的操作可以实现将数据库从一台计算机移动到另一台计算机,或者从一个实例移动到另一个实例的目的. 数据库被分离后,其所包含的数据文件和日志文件不再受数据库管理系统的管理,因此,用户可以复制或剪切该数据库的全部文件,然后将它们放置到另一台计算机上,或者本计算机的其他位置上.然后,通过附加的方法可以将数据库恢复到同一台数据库服务器上,或者附加到其他数据库服务器上. 如果要将数据库移动或复制到同一台服务器的不同SQL Server实例中,或者要移动数据库的数据

PHP通过SQL语句将数据写入MySQL数据库指定的表

PHP向MySQL数据库中写入数据有三个步骤: 1,PHP和MySQL建立连接关系 2,打开MySQL数据库 3,接受页面数据,PHP录入到指定的表中 1.2两步可直接使用一个数据库链接文件即可:conn.php <?php mysql_connect("localhost","root","");//连接MySQL mysql_select_db("hello");//选择数据库 ?> 当然,前提是已经安装WEB

sqlserver-同样SQL语句使用SQLserver跟access数据库,SQLserver可以进行增删改,而access不能

问题描述 同样SQL语句使用SQLserver跟access数据库,SQLserver可以进行增删改,而access不能 同样的SQL语句,在一SQL server做后台数据库可以实现增删改,而使用access数据库就无法实现,在未关闭自己写的程序,再次查询时,使用access数据库可以再程序中看到增删改的效果,只是在access数据库内就没有数据改动.咋么回事? 解决方案 你看连接字符串,程序操作的access文件和你打开的不是用一个文件

sql-怎么写Sql语句能把上边的数据库表查询出下边表样式的结果

问题描述 怎么写Sql语句能把上边的数据库表查询出下边表样式的结果 解决方案 这就叫做透视变换 自己谷歌下 解决方案二: http://www.cnblogs.com/luluping/archive/2012/07/26/2610705.html 解决方案三: http://www.cnblogs.com/cpcpc/archive/2013/04/08/3009021.html,这个就是列转行,看下这个.

sql语句导入excel到db2数据库

sql语句导入excel到db2数据库教程 //方法一 sql语句导入excel到db2数据库 import   from   "c:booknow.csv"   of   del   messages   "d:msg.out"     insert   into   lw_bin export   to   table.txt   of   del   modified   by   coldel,   select   *   from   table //方