【问题标题】:restoring log files using tsql script使用 tsql 脚本恢复日志文件
【发布时间】:2017-03-17 20:19:50
【问题描述】:

您好,我的 C 盘中有日志文件,名称为 databasename_yyyymmddhhmm.trn0 formate 。我们每 30 分钟获得 3 个以 0、1、2 结尾的事务日志文件。
我正在使用

Restore database [databasename]
From disk=N 'c:\foldername\databasename_yyyymmddhhmm.trn0',
Disk = N 'c:\foldername\databasename_yyyymmddhhmm.trn1',
Disk= N 'c:\foldername\databasename_yyyymmddhhmm.trn2'
With norecovery
Go

恢复日志文件。但我想让它每 30 分钟连续处理一次,其中文件名每 30 分钟更改一次,并带有时间戳 例如:数据库名称_201701260700.trn0 30 分钟后,我们得到另一个文件,如 databasename_201701260730.trn0 那么如何“更改我的查询”,以便我可以在 sql server 代理作业中每 30 分钟运行一次,并更改时间戳。

提前致谢

【问题讨论】:

    标签: sql tsql sql-server-2012


    【解决方案1】:

    嗯,你不能确定日志文件是否有你正在寻找的确切时间,所以我会去获取文件本身,比如:

    DECLARE @fileLocation VARCHAR(128) = 'c:\foldername\'                             
    --DECLARE @fileName VARCHAR(128)                                                                  
    
    ---------------------------------------------------------------------------------------------------------------
    --Get a list of all the file names in the directory
    ---------------------------------------------------------------------------------------------------------------
    
    IF OBJECT_ID('tempdb..#FileNames') IS NOT NULL DROP TABLE #FileNames
    CREATE TABLE #FileNames (
         id int IDENTITY(1,1)
         ,subdirectory nvarchar(512)
         ,depth int
         ,isfile bit
         ,LogTime datetime null)
    INSERT #FileNames (subdirectory,depth,isfile)
    EXEC xp_dirtree @fileLocation, 1, 1
    

    然后,更新该表以使用 SUBSTRINGLEFTRIGHT 将文件名解析到 LogTime 中,以获取日志文件的 yyymmddhhmm。这是一个例子:

    update #FileNames
    set LogTime = left(right('subdirectory',17),12)
    

    基本上就是这样做的:

    select left(right('c:\foldername\databasename_yyyymmddhhmm.trn0',17),12)
    

    然后,根据表中的最后 3 个文件名,使用文件名构建动态 sql。呜呜呜!

    【讨论】:

    • 非常感谢 scsimon 我会试试这个程序。周末快乐
    • 干杯 @Sql 如果您有任何问题,请告诉我!
    • 嗨@scsimon。我有一个关于复制的问题。我们从早上 7 点开始到凌晨 2 点每 30 分钟进行一次完整备份和日志备份。那么如何让我的数据库每 30 分钟更新一次,以便将数据从一个数据库复制到另一个数据库。
    • @SQL 我不是 100% 清楚你想要做什么,但听起来你正试图让一个数据库与另一个数据库保持同步,或者一天落后 1 个数据库其他。这种类型的问题更适合 dba.stackexchange.com 并且确实超出了您最初问题的范围。如果这是你想要完成的,我会调查replication
    猜你喜欢
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2019-07-28
    相关资源
    最近更新 更多