【数据库的备份与还原】 .

差异备份,日志备份还原

 

IF DB_ID('db') IS NOT NULL

DROP DATABASE db

GO

 

CREATE DATABASE db

GO

 

CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));

GO

 

BACKUP DATABASE db TO DISK='d:/1.bak' WITH FORMAT

GO

 

INSERT INTO db.dbo.T DEFAULT VALUES

GO

 

BACKUP DATABASE db TO DISK='d:/2.bak' WITH FORMAT,DIFFERENTIAL

GO

 

INSERT INTO db.dbo.T DEFAULT VALUES

GO

 

BACKUP LOG db TO DISK='d:/3.bak' WITH FORMAT

GO

 

DROP DATABASE db;

 

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH RECOVERY,REPLACE;

GO

 

SELECT COUNT(*) FROM db.dbo.T;

GO

 

DROP DATABASE db;

GO

 

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

 

RESTORE DATABASE db FROM DISK='d:/2.bak' WITH RECOVERY;

GO

 

SELECT COUNT(*) FROM db.dbo.T;

 

DROP DATABASE db;

 

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

 

RESTORE DATABASE db FROM DISK='d:/2.bak' WITH NORECOVERY;

GO

 

RESTORE LOG db FROM DISK='d:/3.bak' WITH RECOVERY;

GO

 

SELECT COUNT(*) FROM db.dbo.T;

 

DROP DATABASE db;

 

使用日志恢复数据库

 

IF DB_ID('db') IS NOT NULL

DROP DATABASE db;

GO

 

CREATE DATABASE db;

GO

 

CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));

GO

 

BACKUP DATABASE db TO DISK='d:/1.bak' WITH FORMAT;

GO

 

INSERT INTO db.dbo.T DEFAULT VALUES;

GO

 

BACKUP LOG db TO DISK='d:/2.bak' WITH FORMAT;

GO

 

INSERT INTO db.dbo.T DEFAULT VALUES;

GO

 

BACKUP LOG db TO DISK='d:/3.bak' WITH FORMAT;

GO

 

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH RECOVERY,REPLACE;

GO

 

SELECT * FROM db.dbo.T

GO

 

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

 

RESTORE LOG db FROM DISK='d:/2.bak' WITH RECOVERY;

GO

 

SELECT * FROM db.dbo.T

GO

 

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

 

RESTORE LOG db FROM DISK='d:/2.bak' WITH NORECOVERY;

GO

 

RESTORE LOG db FROM DISK='d:/3.bak' WITH RECOVERY;

GO

 

SELECT * FROM db.dbo.T

GO

DROP DATABASE db;

 

 

恢复到特定的备份日期

 

 

IF DB_ID('db') IS NOT NULL

DROP DATABASE db;

GO

 

CREATE DATABASE db;

GO

 

CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));

GO

 

BACKUP DATABASE db TO DISK='d:/1.bak' WITH FORMAT;

GO

 

INSERT INTO db.dbo.T DEFAULT VALUES;

GO

 

WAITFOR DELAY '00:00:01';

 

DECLARE @Datetime BINARY(128);

SET @Datetime=CAST(GETDATE() AS BINARY(128));

SET CONTEXT_INFO @Datetime

GO

 

INSERT INTO db.dbo.T DEFAULT VALUES;

GO

 

BACKUP LOG db TO DISK='d:/2.bak' WITH FORMAT;

GO

 

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

 

DECLARE @Now DATETIME;

SET @Now=DATEADD(SECOND,-1,(SELECT CAST(CONTEXT_INFO() AS DATETIME)));

 

RESTORE LOG db FROM DISK='d:/2.bak' WITH RECOVERY,STOPAT=@Now;

GO

 

SELECT * FROM db.dbo.T

 

DROP DATABASE db;

GO

 

 

还原到标识事务

--Create test database

CREATE DATABASE db 

GO

 

--Create test table on database named db

CREATE TABLE db.dbo.T (ID INT PRIMARY KEY);

GO

 

--Create full backup to disk 'F:/Documents and Settings/Administrator/桌面/1.bak'

BACKUP DATABASE db TO DISK='F:/Documents and Settings/Administrator/桌面/1.bak' WITH FORMAT;

GO

 

--Begin a marked transaction "Tran1"

BEGIN TRAN Tran1 WITH MARK

 

INSERT INTO db.dbo.T SELECT 1

 

COMMIT TRAN Tran1

 

--Backup the transaction log to disk 'F:/Documents and Settings/Administrator/桌面/2.bak'

BACKUP LOG db TO DISK='F:/Documents and Settings/Administrator/桌面/2.bak' WITH FORMAT

GO

 

DROP DATABASE db;

GO

 

RESTORE DATABASE db FROM DISK='F:/Documents and Settings/Administrator/桌面/1.bak' WITH NORECOVERY;

GO

 

RESTORE LOG db FROM DISK='F:/Documents and Settings/Administrator/桌面/2.bak' WITH STOPBEFOREMARK='Tran1';

GO

 

SELECT COUNT(*) FROM db.dbo.T

 

 

DROP DATABASE db;

GO

 

RESTORE DATABASE db FROM DISK='F:/Documents and Settings/Administrator/桌面/1.bak' WITH NORECOVERY;

GO

 

RESTORE LOG db FROM DISK='F:/Documents and Settings/Administrator/桌面/2.bak' WITH STOPATMARK='Tran1';

GO

 

SELECT COUNT(*) FROM db.dbo.T

 

DROP DATABASE db

 

 

数据库的在线还原(读写文件组完整恢复模式)

 

IF DB_ID('db') IS NOT NULL

DROP DATABASE db;

GO

 

CREATE DATABASE db

ON PRIMARY

(

NAME=db_data,

FILENAME='c:/1.mdf'

),

FILEGROUP FG

(

NAME=db_data_fg,

FILENAME='c:/2.ndf'

)

LOG ON

(

NAME=db_log,

FILENAME='c:/1.ldf'

)

GO

 

--在主文件组下创建表T

CREATE TABLE db.dbo.T(ID INT PRIMARY KEY) ON [PRIMARY];

 

--插入记录

INSERT INTO db.dbo.T SELECT 1

GO

 

--主文件组在线,那么就视为数据库在线

--创建文件db_data_fg备份

BACKUP DATABASE db FILE='db_data_fg' TO DISK='c:/1.bak' WITH FORMAT

 

--进行在先还原,指定NORECOVERY 以后,就只能按顺序进行前滚,同时文件离线还原状态.

RESTORE DATABASE db FILE='db_data_fg' FROM DISK='c:/1.bak' WITH NORECOVERY

 

--创建表失败,因为离线

CREATE TABLE db.dbo.T1(ID INT PRIMARY KEY) ON fg;

 

--主文件组不受影响,因为只是FG离线还原,只有企业版才支持哈.这种情况下生产环境中,不至于数据库全部挂了.

SELECT * FROM db.dbo.T

 

--备份日志,使用COPY_ONLY,因为是要获取的日志是离线状态时候的,COPY_ONLY仅复制备份是在SQL Server 2005 中引入的,用于在执行特殊目的的备份(例如在联机文件还原前备份日志)时使用

--如果是只读文件的话,明显不会出现差异数据,所以不需要日志备份了

--简单恢复模式的话,日志都不能备份,所以也是一样

--顺便提一句,如果数据库是文件损坏,而且损坏时候都在线,要使用NO_TRUNCATE获取日志

BACKUP LOG db TO DISK='c:/2.bak' WITH FORMAT,COPY_ONLY;

 

--恢复LOG

RESTORE LOG db FROM DISK='c:/2.bak' WITH RECOVERY

 

--FG终于在线了,恭喜下,创建一个T1表

CREATE TABLE db.dbo.T1(ID INT PRIMARY KEY) ON fg;

GO

 

DROP DATABASE db;

 

 

数据库的段落还原(完整恢复模式)

 

IF DB_ID('db') IS NOT NULL

DROP DATABASE db

GO

 

--创建包含多个文件组的数据库db

CREATE DATABASE db

ON PRIMARY 

(

NAME=db_data,

FILENAME='c:/db_data.mdf'

),

FILEGROUP A

(

NAME=db_data_a,

FILENAME='c:/db_data_a.ndf'

),

FILEGROUP B

(

NAME=db_data_b,

FILENAME='c:/db_data_b.ndf'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

方法 数组

方法的特点: 定义方法可以将功能代码进行封装 封装:两方面含义: 1.将有特定逻辑的多条代码组合成一个整体!! 2.方便维护,提高代码的复用性(联想变量的作用域问题) 方法只有被调用才会被执行!!(方法调用的流程) 方法的重载: 两同一不同: 同类,同方法名 形参列表不同 …

java 控制jsp_JSP学习之Java Web中的安全控制实例详解

普通用户界面修改登录的Servlet,修改后的代码如下:LoginProcess.java代码:package servlet;import javabean.User;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.Ser…

PHP 基础 自动类型转换之比较运算符

<?php var_dump( 123fg456>122); var_dump(some string 0); var_dump(123.0 123d456); var_dump(0 "a"); var_dump("1" "01"); var_dump("1" "1e0"); 当数字与字符串进行比较运算时&#xff0c;字符串会自动转…

java的多线程访问共享变量_java多线程通信之共享变量

(1)当访问共同的代码的时候&#xff1a;可以使用同一个Runnable对象&#xff0c;这个Runnable对象中有这个共享数据&#xff0c;比如卖票系统就可以这么做。或者这个共享数据封装在一个对象当中&#xff0c;然后对这个对象加锁&#xff0c;也可以实现数据安全访问。public clas…

2018年阿里云NoSQL数据库大事盘点

2019独角兽企业重金招聘Python工程师标准>>> NoSQL一词最早出现在1998年。2009年Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论&#xff0c;来自Rackspace的Eric Evans再次提出了NoSQL概念&#xff0c;这时的NoSQL主要是指非关系型、分布式、不提供…

cayenne:用于随机模拟的Python包

TL;DR; We just released v1.0 of cayenne, our Python package for stochastic simulations! Read on to find out if you should model your system as a stochastic process, and why you should try out cayenne.TL; DR; 我们刚刚发布了 cayenne v1.0 &#xff0c;这是我们…

java 如何将word 转换为ftl_使用 freemarker导出word文档

近日需要将人员的基本信息导出&#xff0c;存储为word文档&#xff0c;查阅了很多资料&#xff0c;最后选择了使用freemarker&#xff0c;网上一共有四种方式&#xff0c;效果都一样&#xff0c;选择它呢是因为使用简单&#xff0c;再次记录一下,一个简单的demo&#xff0c;仅供…

DotNetBar office2007效果

1.DataGridView 格式化显示cell里的数据日期等。 进入编辑列&#xff0c;选择要设置的列&#xff0c;DefaultCellStyle里->行为->formart设置 2.tabstrip和mdi窗口的结合使用给MDI窗口加上TabPage。拖动个tabstrip到MDI窗口上tabstrip里选择到主窗口名就加上TABPAGE了。d…

Spring boot 中pom.xml 各个节点详解

<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <!-- 父项目的坐…

spotify 数据分析_没有数据? 没问题! 如何从Wikipedia和Spotify收集重金属数据

spotify 数据分析For many data science students, collecting data is seen as a solved problem. It’s just there in Kaggle or UCI. However, that’s not how data is available daily for working Data Scientists. Also, many of the datasets used for learning have …

stack 的一些用法

#include<bits/stdc.h> using namespace std; int32_t main() {stack<int> st;st.push(1);st.push(2);st.push(3);cout<<st.size()<<endl;while(!st.empty()){cout<<st.top()<<endl;st.pop();} } 转载于:https://www.cnblogs.com/Andromed…

IS环境下配置PHP5+MySql+PHPMyAdmin

IIS环境下配置PHP5MySqlPHPMyAdmin Posted on 2009-08-07 15:18 谢启祥 阅读(1385)评论(18) 编辑 收藏 虽然主要是做.net开发的&#xff0c;但是&#xff0c;时不时的还要搞一下php&#xff0c;但是&#xff0c;php在windows下的配置&#xff0c;总是走很多弯路&#xff0c;正好…

js复制功能

<div id"cardList"><div class"btn" onClick"copy(111)">点击我&#xff0c;复制我</div></div> <script type"text/javascript"> function copy(str){var save function (e){e.clipboardData.setDa…

input在iOS里的兼容性

input框在iOS里&#xff0c;无法聚焦&#xff0c;不能输入内容&#xff0c;把-webkit-user-select:none改成-webkit-user-select:auto;或者直接加一个style“-webkit-user-select:auto”.

kaggle数据集_Kaggle上有170万份ArXiv文章的数据集

kaggle数据集“arXiv is a free distribution service and an open-access archive for 1.7 million scholarly articles in the fields of physics, mathematics, computer science, quantitative biology, quantitative finance, statistics, electrical engineering and sys…

java用接口实例化对象_[求助]迷茫中,接口可以直接实例化对象吗?

可能是我没有写完整吧,还是我没有理解好1 接口public interface SetAndGetWeight{public void setW(double weight);public double getW();}2 类class Train{SetAndGetWeight[] things;public void Train(SetAndGetWeight[] things){this.thingsthings;}public void returnTota…

异常作业2(2018.08.22)

2、编写程序接收用户输入分数信息&#xff0c;如果分数在0—100之间&#xff0c; 输出成绩。如果成绩不在该范围内&#xff0c; 抛出异常信息&#xff0c;提示分数必须在0—100之间。 要求&#xff1a;使用自定义异常实现1 import java.util.Scanner;2 3 class AtException ext…

深度学习数据集中数据差异大_使用差异隐私来利用大数据并保留隐私

深度学习数据集中数据差异大The modern world runs on “big data,” the massive data sets used by governments, firms, and academic researchers to conduct analyses, unearth patterns, and drive decision-making. When it comes to data analysis, bigger can be bett…

C#图片处理基本应用(裁剪,缩放,清晰度,水印)

前言 需求源自项目中的一些应用&#xff0c;比如相册功能&#xff0c;通常用户上传相片后我们都会针对该相片再生成一张缩略图&#xff0c;用于其它页面上的列表显示。随便看一下&#xff0c;大部分网站基本都是将原图等比缩放来生成缩略图。但完美主义者会发现一些问题&#…

java建立tcp服务器长连接_B/S 架构下后端能否建立 TCP 长连接?

这种架构下&#xff0c;这样的优化策略能实现吗&#xff1f;能有作用吗&#xff1f;php 服务端请求 ES tcp server 部分代码$streamClient stream_socket_client("tcp://{$tcpHost}:{$tcpPort}", $errno, $errstr);// 该数组是所有业务线的分类结构&#xff0c;及每…