掌握SQL Server数据库快照的工作原理第1/2页_数据库其它

数据库快照是怎样工作的? 

可以使用典型的数据库命令CREATE DATABASE语句来生成一个数据库快照,在声明中有一个源数据库快照的附加说明。当快照被建立时,同时生成一个稀疏文件。这个文件(只能使用在NTFS卷中)在初始化的时候并没有磁盘空间分配给它——尽管你可能在WINDOWS资源管理器中看到了文件的大小,它会看上去与原始的源数据库文件的大小相同。对磁盘来说其实这个文件的大小接近于零。 

数据库快照在初始化时读的数据文件是来自于源数据库的。当源数据库的数据发生变化时,数据引擎就会将原始数据从源数据库拷贝到快照数据库中。这个技术确保快照数据库只反映快照被执行时数据的状态。当SELECT命令被用来发布反对数据库快照时,不管数据页的读取是否被定位在源数据库数据文件中还是在快照数据库数据文件中都是没有锁被发布的。因为在只读数据库快照中是没有锁被发布,数据库快照对于报表解决方案是一个重要的解决方案。 

一个快照的实例 

现在,让我们来看看数据库快照在SQL Server 2005中是如何工作的。为此,首先我需要一个源数据库作为快照的来源。下面的脚本将创建一个源数据库: 

USE master 
GO 
IF EXISTS(SELECT name from 
sysdatabases where [name] = 'SourceDatabase') 
DROP DATABASE SourceDatabase 
GO 
CREATE DATABASE SourceDatabaseON PRIMARY 

NAME = SourceDatabase_Data, 
FILENAME = 'C:SQLServerSourceDatabase_Data.mdf' 
) LOG ON 

NAME = SourceDatabase_Log, 
FILENAME = 'C:SQLServerSourceDatabase_Log.ldf' 

GO

注意这里产品区域的大小。我定义它的大小为CHAR(150)来强调数据文件的增长级数,这样在我接下来的实例中将更容易解释清楚快照是如何工作的。 

现在既然我已经有了一个源数据库,现在我装载一些数据来扩展数据文件的大小位。如此,使用上面的脚本来创建销售历史表。 

USE SourceDatabase 
  GO 
  IF OBJECT_ID('SalesHistory')>0 DROP 
TABLE SalesHistory 
  GO 
  CREATE TABLE SalesHistory 
  (SaleID INT IDENTITY(1,1), 
  Product CHAR(150), SaleDate DATETIME, 
  SalePrice MONEY) 
  DECLARE @i INT 
  SET @i = 1 
  WHILE (@i <=10000) 
  BEGIN INSERT INTO SalesHistory 
  (Product, SaleDate, SalePrice) 
  VALUES ('Computer', DATEADD(mm, @i, '3/11/1919'), 
  DATEPART(ms, GETDATE()) + (@i + 57) ) 
  INSERT INTO SalesHistory 
  (Product, SaleDate, SalePrice) 
  VALUES ('BigScreen', DATEADD(mm, @i, '3/11/1927'), 
  DATEPART(ms, GETDATE()) + (@i + 13) ) 
  INSERT INTO SalesHistory 
  (Product, SaleDate, SalePrice) 
  VALUES ('PoolTable', DATEADD(mm, @i, '3/11/1908'), 
  DATEPART(ms, GETDATE()) + (@i + 29) ) 
  SET @i = @i + 1 
  END 
  GO 

当前1/2页 12下一页阅读全文

时间: 2024-08-03 14:24:41

掌握SQL Server数据库快照的工作原理第1/2页_数据库其它的相关文章

SQL Server 出现Error: 1326错误(管理器无法连接远程数据库)问题解决方案_Mysql

SQL Server 出现Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例的问题,错误描述信息摘录如下: An error has occurred while establishing a connection to the server. (provider: Named Pipes Provider, error: 40 – Could not open a connection to

SQL Server数据库性能优化技术第1/2页_数据库其它

设计1个应用系统似乎并不难,但是要想使系统达到最优化的性能并不是一件容易的事.在开发工具.数据库设计.应  用程序的结构.查询设计.接口选择等方面有多种选择,这取决于特定的应用需求以及开发队伍的技能.本文以SQL  Server为例,从后台数据库的角度讨论应用程序性能优化技巧,并且给出了一些有益的建议.  1 数据库设计  要在良好的SQL Server方案中实现最优的性能,最关键的是要有1个很好的数据库设计方案.在实际工作中,许多SQL  Server方案往往是由于数据库设计得不好导致性能很差

sql server 错误9003:LSN无效(日志扫描号无效),对数据库的修复

sql server 错误9003:LSN无效(日志扫描号无效) 今天,从朋友那儿接到一个有问题的数据库文件与日志文件,在使用sql2000与sql2005进行数据库附加时, sql server报错,错误信息: "传递给数据库 'POS' 中的日志扫描操作的日志扫描号 (2806:120:1) 无效. 此错误可能指示数据损坏,或者日志文件(.ldf)与数据文件(.mdf)不匹配. 如果此错误是在复制期间出现的,请重新创建发布.否则,如果该问题导致启动期间出错,请从备份还原. 无法打开新数据库

SQL server的worker thread工作线程讲解

我们都知道SQL server的worker thread是SQL server 用来执行task的工作线程.Worker threads 的数目缺省是SQL server 动态创建的,需要多少就会创建多少,直到到达"max worker threads"的上限.如果你想改变缺省的worker threads,那么可以使用下面的脚步修改: exec sp_configure'show advance',1 go reconfigure with override go exec sp_

SQL Server不存在或访问被拒绝问题的解决第1/3页_数据库其它

 总结起来的关于SQL Server连接中此类四个最常见错误错误解决方案如下: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误 2,服务器端网络配置有误 3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,检查网络物理连接 ============= ping <

asp经典入门教程 在ASP中使用SQL 语句第1/2页_数据库相关

MySQL.SQL Server和mSQL都是绝佳的SQL工具,可惜,在ASP的环境下你却用不着它们来创建实用的SQL语句.不过,你可以利用自己掌握的Access知识以及相应的Access技能,再加上我们的提示和技巧,相信一定能成功地在你的ASP网页中加入SQL. 1. SELECT 语句 在SQL的世界里,最最基础的操作就是SELECT 语句了.在数据库工具下直接采用SQL的时候很多人都会熟悉下面的操作:SELECT whatFROM whichTableWHERE criteria 执行以上

SQL Server误区30日谈 第17天 有关页校验和的误区_MsSql

其实我之前已经有文章详细解释了页校验和:How to tell if the IO subsystem is causing corruptions? 误区 #17:几个有关页校验和的误区 坊间流传的基本是错误的   17 a)页校验和(Page CheckSum)在从SQL Server 2000或7.0升级上来之后自动开启     其实不是,从旧的实例升级上来的数据库不会自动开启页校验和,除非你显式使用ALTER DATABASE databasename SET PAGE_VERIFY C

SQL Server连接失败错误及解决第1/5页_MsSql

在使用 SQL Server 的过程中,用户遇到的最多的问题莫过于连接失败了.一般而言,有以下两种连接 SQL Server 的方式,一是利用 SQL Server 自带的客户端工具,如企业管理器.查询分析器.事务探查器等;二是利用用户自己开发的客户端程序,如ASP 脚本.VB程序等,客户端程序中又是利用 ODBC 或者 OLE DB 等连接 SQL Server.下面,我们将就这两种连接方式,具体谈谈如何来解决连接失败的问题. 一.客户端工具连接失败 在使用 SQL Server 自带的客户端

Microsoft SQL Server 2005 Express 远程访问设置详述,100%成功篇_实用技巧

概述 Microsoft SQL Server 2005 Express Edition是Microsoft数据库的低端解决方案,是免费的,并且可以随软件免费发布,而就其数据库功能对于一般的企业级应用已足够了.但 默认安装时只允许本地访问,而不能远程访问.为了解决这种问题,网上有不少文章进行了介绍,但是都不全,如果你照着做,大都只完成了部份功能,而不能完全成功.本人查了大量资料,几次都想放弃,最终还是成功配置了,现写本文详细阐述 SQL Server 2005 Express Edition 启