具体问题解决:不完全回滚

  有时候需要从一个服务器转移数据库到另一个。如果打算一下子分离所有数据库,那么下面的脚本就是有用了。

生成分离脚本:

SELECT DISTINCT ‘use master;‘ + Char(10) + ‘GO‘ + Char(10)                 + ‘ALTER DATABASE [‘                 + CONVERT(VARCHAR(500), Db_name(database_id))                 + ‘] ‘                 + ‘SET  SINGLE_USER WITH ROLLBACK IMMEDIATE‘                 + Char(10) + ‘use master;‘ + Char(10) + ‘GO‘                 + Char(10)                 + ‘EXEC master.dbo.sp_detach_db @dbname = N‘                 + ‘‘‘‘                 + CONVERT(VARCHAR(500), Db_name(database_id))                 + ‘‘‘‘ + ‘;‘ + Char(10) + ‘GO‘ + Char(10) FROM   master.sys.master_files WHERE  Db_name(database_id) NOT IN ( ‘master‘, ‘model‘, ‘msdb‘, ‘tempdb‘ )  

这个脚本生成了需要分离数据库的脚本。在where子句中排除了四个系统数据库。

附加数据库操作脚本:

  下面将生成一个脚本来分离数据库。确保运行在原服务器上。因为一旦你分离数据库,数据库将在原来的服务器上消失。

  脚本基于一个重要假设,假定每个数据库只包含一个数据文件和一个日志文件。如果有数据库实例带有多个数据或者日志文件,还要手动分离。另外,脚本假定源和目标服务器有相同的文件路径。如果日志或者数据文件路径不同,也需要重新替换生成的脚本。

SELECT DISTINCT ‘use master;‘ + Char(10) + ‘GO‘ + Char(10)                 + ‘CREATE DATABASE [‘                 + CONVERT(VARCHAR(500), Db_name(x.database_id))                 + ‘]‘ + ‘ ON ‘ + Char(10) + ‘( physical_name = N‘                 + ‘‘‘‘ + x.physical_name + ‘‘‘‘ + ‘),‘ + Char(10)                 + ‘( physical_name = N‘ + ‘‘‘‘ + y.physical_name                 + ‘‘‘‘ + ‘)‘ + Char(10) + ‘ FOR ATTACH‘ + Char(10) + ‘GO‘ FROM   master.sys.master_files x,        master.sys.master_files y WHERE  Db_name(x.database_id) NOT IN ( ‘master‘, ‘model‘, ‘msdb‘, ‘tempdb‘ )        AND x.database_id = y.database_id        AND x.physical_name LIKE ‘%mdf‘         AND y.physical_name LIKE ‘%ldf‘
时间: 2024-10-11 04:07:27

具体问题解决:不完全回滚的相关文章

事务回滚 DEMO

因为有些事物回滚  查询的时候 可能查出来空值 我们肯定不愿意把空值添加数据库里面 一般基本的是这么写 if (object_id('add_T_Disclose_DiscloseList', 'P') is not null) drop proc add_T_Disclose_DiscloseList go create proc add_T_Disclose_DiscloseList @user_id nvarchar(200), @title_id nvarchar(max), @jiao

springmvc mybatis 声明式事务管理回滚失效,(checked回滚)捕捉异常,传输错误信息

一.知识点及问题 后端框架: Spring .Spring mvc .mybatis 业务需求: client先从服务端获取用户大量信息到client,编辑完毕之后统一Post至服务端,对于数据的改动要么全成功,要么全失败,所以须要使用事务支持. 问题: 配置Spring声明式事务,运行中出现异常未回滚.从网上查询得到一開始是自己的配置出了问题,因为配置文件的载入顺序决定了容器的载入顺序导致Spring事务没有起作用. 详情例如以下: 因为採用的是SpringMVC. MyBatis,故统一採用

spring事务传播行为之使用REQUIRES_NEW不回滚

最近写spring事务时用到REQUIRES_NEW遇到一些不回滚的问题,所以就记录一下. 场景1:在一个服务层里面方法1和方法2都加上事务,其中方法二设置上propagation=Propagation.REQUIRES_NEW,方法1调用方法2并且在执行完方法2后抛出一个异常,如下代码 1 @Service 2 public class BookServiceImpl implements BookService { 3 4 @Autowired 5 private JdbcTemplate

spring事务没回滚

最近遇见一个问题,用spring管理实务,在service层处理数据,保存数据时出现异常,但没有回滚,检查了一下,发现是因为我用try catch将异常进行捕获了,没有抛出导致的:默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚. 处理发法一:捕获异常后,新生成runtimeexcetpion: try { userDao.save(user); userDao.update(user); } catch (Exception e) { logger.info("

回滚的意义---JDBC事务回滚探究

JDBC手动事务提交回滚的常见写法一直是rollback写在commit的catch之后: try{ conn.setAutoCommit(false); ps.executeUpdate(); ps.executeUpdate(); conn.commit(); }catch(Exception e){ conn.rollback(); } 但是,这种回滚是没有意义的: 一旦commit前出错, 就不提交了, 回滚无用 一旦commit了, 说明没错, 不用回滚 找到一篇和我观点相同的文章:

Spring中@Transactional事务回滚实例及源码

一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员.但是在执行的时候可能会出现这种情况,我们先删除部门,再删除成员,但是部门删除成功了,删除成员的时候出异常了.这时候我们希望如果成员删除失败了,之前删除的部门也取消删除.这种场景就可以使用@Transactional事物回滚. 二.checked异常和unc

springmvc事务回滚失效

转载:http://blog.csdn.net/z69183787/article/details/37819831 前文提到,最新换了框架,新项目用SpringMVC + Spring JdbcTemplate.搭框架时,发现了一个事务无法正常回滚的问题,记录如下: 首先展示问题: Spring applicationContext.xml配置: [html] view plaincopy <bean id="dataSource" class="org.spring

上线代码、回滚代码

上线脚本 #!/bin/bash FWDIR="$(cd `dirname "${BASH_SOURCE-$0}"`; pwd)" bin=`dirname "$0"` bin=`cd "$bin"; pwd` now=`date "+%Y%m%d_%H%M%S"` tag_release=di.release.${now} [email protected]:bdp-server/bdp-di.git e

web代码发布脚本以及回滚3.0

由于web服务器上的代码更新速度非常快,所以备份回滚变的非常重要,在源服务器在代码更新之前要做好备份 #!/bin/bash TODAY=`date +'%Y%m%d%H%M%S'` BACKUP_DIR=/home/path_to_file/publish/FILENAMEback FILE_DIR=/PATH/TO/FILE find $FILE_DIR/ -type f > /home/publish_file.list sed -i 's/\/PATH\/TO\/FILE\>//g' 

Spring 实现部分事务回滚

例如有业务需求,在catch异常后,catch块内把异常的信息存入到数据库,而catch外的数据全部回滚 try { ....... aaaService.save(); }catch(RuntimeException e) { bbbService.save(e.getMessage()); throw new RuntimeException(e.getMessage()); } 确保aaaService.save()的数据回滚,而 bbbService的save不回滚. 只能在bbbSer