【问题标题】:script how to get last backup to restore from AZURE脚本如何获取上次备份以从 AZURE 还原
【发布时间】:2015-10-13 09:59:39
【问题描述】:

我想从 mu AZURE 服务器恢复上次备份。我有一个脚本,但我只是实现了使用当前日期进行备份,而不是最后一个。你知道如何获得它吗?

`使用[主] 走 DECLARE @name VARCHAR(50) -- 数据库名称
DECLARE @URL VARCHAR(256) -- 备份 URL
DECLARE @fileDate VARCHAR(20) -- 用于文件日期

-- 指定最后一次备份的日期格式。 SELECT @fileDate = REPLACE (CONVERT (VARCHAR (10), GETDATE (), 120), '-','_')

--创建凭据以连接到 windows azure 存储服务 如果不存在(SELECT * FROM sys.credentials WHERE credential_identity = 'aaaaaaaaaa') 开始 创建凭据 Pyramidsqlcredential WITH IDENTITY = 'bbbbbbbbbb' ,秘密 = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 结尾 去吧

--能够恢复特定数据库的代码 声明 db_cursor CURSOR FOR
选择名称 FROM master.dbo.sysdatabases WHERE name IN ('STG','DWH','AUXDB','TESTPORTAL') -- 只恢复这些数据库

打开 db_cursor
FETCH NEXT FROM db_cursor INTO @name 而@@FETCH_STATUS = 0
开始

--PRE数据库的创建 IF OBJECT_ID(N'PRE_@name', N'U') 不为空 删除数据库@name; 走 创建数据库 [@name] 遏制 = 无 初级 ( NAME = N'PRE_@name', FILENAME = N'G:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\PRE_@name.mdf' , SIZE = 609344KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [INMEMORY] 包含 MEMORY_OPTIMIZED_DATA 默认值 登录 ( NAME = N'PRE_@name', FILENAME = N'H:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\PRE_@name_log.ldf' , SIZE = 833024KB , MAXSIZE = 2048GB , FILEGROWTH = 10 %)

设置@URL = 'https://xxxxxxxxxx.blob.core.windows.net/'

--将数据库恢复到 Windows azure 存储服务 - 使用 URL 的 blob 恢复数据库 PRE_AUXDB FROM URL = @URL+@name+'/'+@name+''+@fileDate+'*.bak' --FROM URL = 'https://xxxxxxxxxxxxxxxxxxxxxxx.blob.core.windows.net/AUXDB/AUXDB'+REPLACE (CONVERT (VARCHAR(10), GETDATE(), 120), '-','_')+'*.bak' 有凭证='aaaaaaaaaaaaaaa' ,将“PRE_AUXDB_Data”移动到“G:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\PRE_@name_Data.mdf” ,统计 = 10

结束

关闭 db_cursor
DEALLOCATE db_cursor`

【问题讨论】:

    标签: sql-server azure database-restore


    【解决方案1】:

    我想我找到了解决办法。该脚本尚未测试。也许它对某人有帮助。

                        USE [master]
                        GO
                        DECLARE @name VARCHAR(50) -- database name  
                        DECLARE @URL VARCHAR(256) -- URL for backup  
    
                        --Create a credential to connect to the windows azure storage service
                        IF NOT EXISTS (SELECT * FROM sys.credentials WHERE credential_identity = 'credentialname')
                        BEGIN
                        CREATE CREDENTIAL credentialname WITH IDENTITY = 'introduceyouridentity'
                        ,SECRET = 'accountkey'
                        END
                        GO
    
                        --Code to be able to restore specific databases
                        DECLARE @db_cursor CURSOR 
                            SET @db_cursor = CURSOR FOR
                        SELECT name 
                        FROM master.dbo.sysdatabases 
                        WHERE name IN ('STG','DWH','AUXDB','TESTPORTAL')  -- only restore these databases
    
                        OPEN @db_cursor   
                        FETCH NEXT FROM @db_cursor INTO @name  
    
                        WHILE @@FETCH_STATUS = 0   
                        BEGIN 
                        declare @backupfile as Varchar(255) --latest bck in AZURE
                        declare @DBname VARCHAR(50) = 'PRE_'+@name  --name new database ex: PRE_AUXDB
    
                        --Check latest backup file in Azure per type
                        /* type char(1)
                        Backup type. Can be:
                        D = Database
                        I = Differential database
                        L = Log
                        F = File or filegroup
                        G =Differential file
                        P = Partial
                        Q = Differential partial
                        Can be NULL. */
                        SELECT TOP 1 @backupfile=mf.physical_device_name from msdb..backupset bk      
                        join msdb..backupmediafamily mf on bk.media_set_id = mf.media_set_id   
                        where database_name=@name and bk.type='D' order by  
                        backup_set_id desc
                        --Creation of PRE databases
                        IF  OBJECT_ID(@DBname, N'U') IS NOT NULL 
                        DROP DATABASE @DBname;
                        GO
                        CREATE DATABASE [@DBname]
                         CONTAINMENT = NONE
                         ON  PRIMARY 
                        ( NAME = @DBname, FILENAME = N'\\servername\G$\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\'+@DBname+'.mdf' , SIZE = 609344KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
                            FILEGROUP [INMEMORY] CONTAINS MEMORY_OPTIMIZED_DATA  DEFAULT
                         LOG ON 
                        ( NAME = @DBname, FILENAME = N'\\servername\H$\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data'+@DBname_log+'.ldf' , SIZE = 833024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
                        GO
                        set @URL = 'https://azureservername.blob.core.windows.net/'
    
                                /*NOT USE
                                --Backup the database to the windows azure storage service - blob using URL
                                BACKUP DATABASES 
                                TO URL = @backupfile
                                WITH CREDENTIAL = 'credentialname' 
                                ,COMPRESSION --Compress the backup
                                ,STATS = 10 --This reports the percentage complete as of the threshold for reporting the next interval
                                GO
                                */
    
                        --RESTORE the database to the windows azure storage service - blob using URL
                        RESTORE DATABASE PRE_AUXDB 
                        FROM URL = @backupfile
                        WITH CREDENTIAL = 'credentialname'
                        ,MOVE @DBname+'_Data' to '\\servername\G$\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\'+@DBname+'_Data.mdf'
                        ,STATS = 10
    
                        END   
    
                        CLOSE db_cursor   
                        DEALLOCATE db_cursor
    

    【讨论】:

      猜你喜欢
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 2020-02-20
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多