--USE [master]
GO
/****** Object: StoredProcedure [dbo].[zsp_RestoreHeaderOnly] Script Date: 2014/1/18 13:31:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter proc [dbo].[zsp_RestoreHeaderOnly]
--@sql varchar(max)
@Text nvarchar(MAX), --待分拆的字符串
@Separator nvarchar(8) = ',' --数据分隔符
as
begin
/*
declare @Text nvarchar(max)
set @text = N'
d:\iFundGlobalCenter.log.1.bak,
d:\iFundGlobalCenter.log.2.bak,
d:\iFundGlobalCenter.log.3.bak,
d:\iFundGlobalCenter.log.4.bak,
d:\iFundGlobalCenter.ful.5.bak
'
exec zsp_RestoreHeaderOnly @text
*/
declare @sql nvarchar(max) = N''
declare @Table table
(
id int
,F nvarchar(256)
)
set @Text = replace(@Text,N' ',N'')
set @Text = replace(@Text,nchar(13),N'')
set @Text = replace(@Text,nchar(10),N'')
set @Text = replace(@Text,nchar(9),N'')
set @Separator = N','
DECLARE @SeparatorLen int
SET @SeparatorLen=LEN(@Separator + N'$') - 2
set @Text = replace(@Text,N' ',N'')
declare @i int
set @i = 1
WHILE CHARINDEX(@Separator,@Text )>0
BEGIN
declare @v nvarchar(max)
set @v = (LEFT(@Text ,CHARINDEX(@Separator,@Text )-1))
INSERT @Table (id,F)
select @i,@v
where rtrim(ltrim(@v)) != ''
and not exists (select 1 from @Table where F = @v)
if @@rowcount > 0
begin
set @i = @i + 1
end
SET @Text = STUFF(@Text ,1,CHARINDEX(@Separator,@Text )+@SeparatorLen,'')
END
INSERT @Table (id,F)
select @i,@Text
where rtrim(ltrim(@Text)) != ''
and not exists (select 1 from @Table where F = @Text)
select
@sql +=
N'RESTORE HEADERONLY FROM disk=''' + F + '''' + nchar(13) + nchar(10)
from
@table
select @sql
declare @ table
(
--CREATE TABLE #T(
BackupName nvarchar(256) ,
BackupDescription nvarchar(256) ,
BackupType int ,
ExpirationDate datetime ,
Compressed tinyint ,
Position int ,
DeviceType int ,
UserName nvarchar(256) ,
ServerName nvarchar(256) ,
DatabaseName nvarchar(256) ,
DatabaseVersion int ,
DatabaseCreationDate datetime ,
BackupSize numeric(38,0) ,
FirstLSN numeric(38,0) ,
LastLSN numeric(38,0) ,
CheckpointLSN numeric(38,0) ,
DatabaseBackupLSN numeric(38,0) ,
BackupStartDate datetime ,
BackupFinishDate datetime ,
SortOrder int ,
[CodePage] int ,
UnicodeLocaleId int ,
UnicodeComparisonStyle int ,
CompatibilityLevel int ,
SoftwareVendorId int ,
SoftwareVersionMajor int ,
SoftwareVersionMinor int ,
SoftwareVersionBuild int ,
MachineName nvarchar(256) ,
Flags int ,
BindingID uniqueidentifier ,
RecoveryForkID uniqueidentifier ,
Collation nvarchar(256) ,
FamilyGUID uniqueidentifier ,
HasBulkLoggedData bit ,
IsSnapshot bit ,
IsReadOnly bit ,
IsSingleUser bit ,
HasBackupChecksums bit ,
IsDamaged bit ,
BeginsLogChain bit ,
HasIncompleteMetaData bit ,
IsForceOffline bit ,
IsCopyOnly bit ,
FirstRecoveryForkID uniqueidentifier ,
ForkPointLSN numeric(38,0) NULL ,
RecoveryModel nvarchar(256) ,
DifferentialBaseLSN numeric(38,0) NULL ,
DifferentialBaseGUID uniqueidentifier ,
BackupTypeDescription nvarchar(256) ,
BackupSetGUID uniqueidentifier NULL
, [CompressedBackupSize] numeric(38,0)
, [Containment] numeric(38,0)
)
INSERT
--#1
@
EXEC
(@sql)
;with T
as
(
select
NewBackupType = iif([BackupType] in (1, 5) , 1 ,[BackupType])
, NewDifferentialBaseLSN = iif(backuptype=1, FirstLSN, DifferentialBaseLSN)
, *
from
@
--order by
-- databaseName
-- ,[FirstLSN]
)
, TT
as
(
select
MachineName_0 = MachineName
, DatabaseName_0 = DatabaseName
, NewBackupType_0 = NewBackupType
--, IsDamaged_0 = IsDamaged
--, BeginsLogChain_0 = BeginsLogChain
, LagNewBackupType = Lag(NewBackupType)
over
(
order by
MachineName
, DatabaseName
, FirstLSN
)
, LagLastLSN =
lag([LastLSN])
OVER
(
ORDER BY
NewBackupType
, [FirstLSN]
)
, FirstLSN_0 = FirstLSN
, LastLSN_0 = LastLSN
, FirstValue_FirstLSN = iif
(
backupType in (1,5)
, --FIRST_VALUE(FirstLSN)
min(FirstLSN)
OVER
(
partition by
MachineName
, databaseName
, NewDifferentialBaseLSN
order by
--MachineName
--, DatabaseName
--,
FirstLSN
)
, null
)
, DifferentialBaseLSN_0 = DifferentialBaseLSN
, BackupTypeDescription_0 = BackupTypeDescription
, BackupFinishDate_0 = BackupFinishDate
, *
from
T
)
select
ok = iif(FirstLSN = LagLastLSN, 'Y', 'N')
, *
from
TT
order by
MachineName
, databaseName
--, NewBackupType
, FirstLSN
end

SQL 2012 Restore HeaderOnly的更多相关文章

  1. SQL 2008 RAISERROR语法在SQL 2012/2014不兼容问题

    原文 旧的RAISERROR语法在SQL 2012不兼容问题 raiserror 写法: SQL 2008: raiserror 55030 'text error' SQL 2012: raiser ...

  2. SQL 2012 发布与订阅实现数据同步 图解(解决 错误22022)

    概念参见:https://msdn.microsoft.com/zh-cn/library/ms151170.aspx 推送订阅 对于推送订阅,发布服务器将更改传播到订阅服务器,而无需订阅服务器发出请 ...

  3. SQL 2012 镜像 图解(解决1418)

    概念:http://blog.chinaunix.net/uid-11231963-id-2150268.html 写的不错 1.环境准备 1.WIN7+SQL 2012 两台机器 如:10.58.8 ...

  4. SQL backup&restore

    --完整备份Backup Database NorthwindCSTo disk='G:\Backup\NorthwindCS_Full_20070908.bak' --差异备份Backup Data ...

  5. Windows 8上使用SQL 2012 Configuration Manager

    现在使用Windows 8 + Sql Server 2012,而今天想用SQL 2012 Configuraton Manager, 设置别名来访问不同的开发数据库.但发现没能找到SQL 2012 ...

  6. [读书心得]资料分页的优化,以SQL 2012的 OFFSET-FETCH为例

    这是我的文章备份,原始出处:[读书心得]资料分页的优化,以SQL 2012的 OFFSET-FETCH为例 http://www.dotblogs.com.tw/mis2000lab/archive/ ...

  7. 在SQL 2012中使用和Oracle 一样的序列

    使用过Oracle的都知道,Oracle中的自增是靠序列来完成的,在一定程度上蛮方便的.现在SQL 2012中也有序列了.来看看怎么做的吧! SQL Server 现在将序列当成一个对象来实现,创建一 ...

  8. sql server 2008 R2 备份还原到sql 2012

    从sql server 2008 r2备份的在sql server 2012中还原时一直读不到备份文件,然后把2008r2备份文件放到sql 2012的安装路径对应的Backup文件夹后可以读到了,不 ...

  9. Windows Server 2008 R2 SP1安装SQL 2012安装报错之0x858C001B

    使用Windows Server 2008 R2 SP1安装SQL 2012的时候总是报这样一个错: SQL Server Setup has encountered the following er ...

随机推荐

  1. Html页面禁止鼠标左键复制

    <body leftmargin=0 topmargin=0 oncontextmenu='return false' ondragstart='return false' onselectst ...

  2. ionic 微信分享值各种坑

    去前段时间公司的app需要做微信分享,然后网上找的教程,在做的时候发现网上的教程各种坑,现在将做得过程分享出来 在做功能之前你需要做几步预备工作, 1.安装jdk,jre,并加入全局变量[这个网上还是 ...

  3. easyUi 框架中的JS文件传递参数的区别

    1.情景一 //JS文件 ajax的请求url : parent.baseUrl+"user/customer/findOne/" + id, //后台JAVA代码接收参数 @Re ...

  4. Python Day9

    Paramiko模块 paramiko模块基于SSH用于连接远程服务器并执行相关操作 基于用户名密码连接: import paramiko # 创建SSH对象 ssh = paramiko.SSHCl ...

  5. Node.js process 模块常用属性和方法

    Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.m ...

  6. 10月24日上午PHP面向对象

    面向对象 程序分为两种,一种是面向过程的,另一种是面向对象的.之前的学的都是面向过程的,按部就班的一步一步的按照顺序往下走. 面向对象: 1.什么叫做对象 一切皆为对象(一个对象由一组属性和有权对这些 ...

  7. Ajax 应用六个需要注意的事项

    接触Ajax,那时候的Ajax支持还不是很好,都要涉及底层,没有现成的框架给你调用.现在把常见的问题列举如下.1.编码问题注意AJAX要取的文件是UTF-8编码的.GB2312编码传回BROWSE后中 ...

  8. 微信 5.3 for iPhone已放出 微信iphone版更新下载

    就在几个小时前,微信发布了更新,本次只放出微信 5.3 for iPhone,距离发布微信5.3内测版也就几天时间.和往常一样微信iphone版先发布,微信android版延后发布,微信看重的是ios ...

  9. JavaScript方法call、apply、caller、callee、bind的使用详解及区别

    一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). 即  “某个方法”当做“指定的某个对象”的“方法”被执行. Js代 ...

  10. Windows 7安装解压版MySQL 5.6(不包含配置文件优化)

    到官网下载MySQL5.6 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html, 提供了 .exe版本 和 .zip解压版,因为我的操作系统是64位的 ...