zoukankan      html  css  js  c++  java
  • SQL 2012 Restore HeaderOnly

    
    --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
    
    
  • 相关阅读:
    启用 Win10 的 Linux 子系统
    破解 RHEL7.3 的 root 密码
    实战:tcpdump抓包分析三次握手四次挥手
    grep中的正则表达式
    快速配置yum本地源
    Kubernetes 集群搭建(下)
    从事游戏行业也有10年,让我来说下游戏的本质,为什么上瘾。
    Egret 生成 自带EUI 的微信小游戏 踩坑!
    JMeter入门
    像屎一样的 Spring Boot入门,总算有反应了
  • 原文地址:https://www.cnblogs.com/Microshaoft/p/3525075.html
Copyright © 2011-2022 走看看