--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. SHOI2016游记&滚粗记&酱油记

    Day0 学校刚期中考完,全科血崩,感觉这次真要考不到一本线了tat 晚上写了个可持久化trie的题,也懒得敲板子(上个礼拜都敲过了),就碎叫了 Day1 上午起床吃饭水群看球,吃完中饭就去考场了. ...

  2. 巧用setTimeout解决阻塞导致页面无法重绘

    项目中遇到一个javascript问题,大致如下: <!doctype HTML> <html> <head> <meta charset="utf ...

  3. vertx核心类之VertxImpl

    在Vert.x中,Vertx接口是最为重要的一个接口,vertx-core的基础功能都在此接口中提供.这篇文章中我们就来分析一下Vertx接口体系的内部实现以及创建流程.本文对应Vert.x的版本为  ...

  4. Activiti学习(二)数据表结构

    Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. l        ...

  5. SQL SERVER 中 GO 的用法

    用信号通知 Microsoft® SQL Server™ 实用工具一批 Transact-SQL 语句的结束.GO 不是 Transact-SQL 语句:而是可为 osql 和 isql 实用工具及 ...

  6. IOS系统基础知识

    在iOS应用中,每个程序得main函数中都调用了UIApplicationMain函数. 1 2 3 4 5 6 int main(int argc, char *argv[])  {      @a ...

  7. 获取PHP文件绝对地址$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别

    通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP 文件的完整路径(绝对路径)与文件名: <?php echo 'SCRIPT_F ...

  8. PHP中如何在数组中随机抽取n个数据的值 - array_rand()?

    PHP中如何在数组中随机抽取n个数据的值? 最佳答案 array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用.它接受 input 作为输入数组和一个可选的参数 num_req,指明 ...

  9. javascript数据结构-链表

    gihtub博客地址 链表 是一种物理存储单元上非连续.非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每 ...

  10. java21

    1:字符流(掌握) (1)字节流操作中文数据不是特别的方便,所以就出现了转换流. 转换流的作用就是把字节流转换字符流来使用. (2)转换流其实是一个字符流 字符流 = 字节流 + 编码表 (3)编码表 ...