备份SQL Server 2014数据库到Azure Blob存储器服务上

来源:本网整理

可以。1.在“SQL Server企业管理器”中注册数据库所在的服务器,注意要使用sa用户名和口令,否则以后执行备份调度的时候,会出现权限不足,导致不能进行备份。2.确保该服务器的SQL Server Agent服务是开启的,因为所有的调度都是通过该代理进行执行的。3.在“SQL Server企业管理器”中选中Test数据库,右键打开“备份数据库”窗口,指定一个新的文件Test-daily.bak,选择“完全”进行一次完全备份。4.再次打开“备份数据库”窗口,这次使用“差异备份”,“重写”选项设置为“追加到媒体”,目的文件仍然是前面步骤所指定的Test-daily.bak,并在“调度”选项中设置为每天的19:00,这样,SQL Server会在每天的19:00将数据库自上次备份以来发生的变化,以增量备份的方式追加到Test-daily.bak文件中。(测试的时候,可以设置为每天的每1分钟进行一次备份,以便可以很快的看到备份结果)www.zgxue.com防采集请勿采集本网。

Azure VM 客制化脚本扩展 (Custom Script Extension) 将让您可以从存储器账户下载 PowerShell 脚本并执行之,透过这样一个简单的功能,您可以因应各种不同的 VM 客制化情境,弹性地自动化 VM 设定。在本篇文章中我们将带您了解如何从 Azure VM Image Gallery 中使用客制化脚本扩展来客制一个 SQL Server 2014 VM,我们将使用 SQL Powershell 脚本来启用 SQL Server Managed Backup 到 Microsoft Azure,这将让您可以备份您的 SQL Server 2014 数据库到 Azure Blob 存储器服务上。 SQL Server 设定脚本 请参阅以下程序代码,您只需要将 [your Azure storage account] 和 [your Azure storage account key] 改为您 Azure 存储器的账户及凭证即可,并另存此脚本为 CustomScriptSQLPS.ps1。 #import SQL Server powershell module import-module  sqlps -DisableNameChecking  #global variables - replace storage account name and key$credentialName = "AzureStorageCredential_"+(RANDOM)$storageAccountName = "[your Azure storage account]"$storageAccountKey = "[your Azure storage account key]"  #start SQL Agent Service           write-host "Starting SQL Server Agent service ..."Start-Service  sqlserveragent -verbose CD SQLSERVER:SQL\$env:COMPUTERNAME\DEFAULT write-host "Creating SQL credential ..."$secureString = convertto-securestring $storageAccountKey  -asplaintext -force     #Create CredentialNew-SqlCredential –name $credentialName –Identity $storageAccountName –secret $secureString  $encryptionOption = New-SqlBackupEncryptionOption -NoEncryption write-host "Enabling Managed SQL Server Backup..." get-sqlsmartadmin | set-sqlsmartadmin -BackupEnabled $True -BackupRetentionPeriodInDays 7 -SqlCredential $credentialName -EncryptionOption $encryptionOption write-host "Managed SQL Server backup current configuration:"get-sqlsmartadmin | fl  但是,我们无法直接提交此脚本,因客制化脚本扩展是使用 NTAUTHORITY\SYSTEM 账户来执行脚本,所以我们必须建立另个脚本,来扮演管理员账户脚色,才能执行上面这段脚本。 利用另个认证来执行脚本 首先我们建立另个脚本取名作 start.ps1,内容如下。为了方便解说,我在下方加了 Line Number。 1: $password =  ConvertTo-SecureString "[your admin account user password]" -AsPlainText -Force 2: $credential = New-Object System.Management.Automation.PSCredential("$env:COMPUTERNAME\[your admin account]", $password) 3: $command = $file = $PSScriptRoot + "\CustomScriptSQLPS.ps1" 4: Enable-PSRemoting –force 5: Invoke-Command -FilePath $command -Credential $credential -ComputerName $env:COMPUTERNAME 6: Disable-PSRemoting -Force Line 1: 将管理员密码从 Plain text 转换到 Secured string,当然将密码直接放置于脚本中不是一个好的做法,这我们稍后再回来谈。 Line 2: 建立执行主要脚本的认证,您可以使用和预备用来建立 VM 相同的账户。 Line 3: 指定主要脚本的确切路径。 Line 4 & 6: 要在一个仿造的认证中执行主要脚本,我们必须启用 Windows Remote Management (WinRM),也就是 Line 4,而 Line 6 是关闭。 Line 5: 使用 Invoke-Command cmdlet 来执行主要脚本 (会需要认证参数)。 使用客制化脚本扩展 现在我们已经准备好提交以上两个脚本至客制化脚本扩展,将两个脚本上传至您存储器账户下的脚本容器中,接下来在您的工作站上边可执行以下脚本。 1: $servicename = "[cloud service that hosts the VM]" 2: $vmname = "[name of the VM]" 3: $vm = Get-AzureVM -ServiceName $servicename -Name $vmname 4: Set-AzureVMCustomScriptExtension -ContainerName scripts -StorageAccountName '[your storage account name]' -VM $vm -FileName 'start.ps1', 'CustomScriptSQLPS.ps1' -Run 'start.ps1' | Update-AzureVM -Verbose 5: $status = Get-AzureVM -ServiceName $servicename -Name $vmname 6: $result = $status.ResourceExtensionStatusList.ExtensionSettingStatus.SubStatusList | Select Name, @{"Label"="Message";Expression = {$_.FormattedMessage.Message }}  7: $result |fl 最重要的是第4行,它确保了于VM上安装客制化脚本扩展,并下载start.ps1 和 CustomScriptSQLPS.ps1,接着执行 start.ps1。 于外部档案中读取密码 我们都知道应避免于程序代码中写入密码,所以现在要介绍的是加解密服务,我们将假设您已经利用 private key 于目标 VM 部署了凭证,且利用相同凭证的 public key 来加密到 password.txt 档案 (base-64 格式)。 $cert = Get-ChildItem Cert:\LocalMachine\My\[certificate thumbprint] $bytes = [Text.Encoding]::UTF8.GetBytes("abcdefg") $encrypted = $cert.PublicKey.Key.Encrypt($bytes, $true) $base64 = [Convert]::ToBase64String($encrypted) Set-Content .\password.txt $base64 若您对于 VM 凭证管理还不太了解,可以参考这里 (提供教学影片及命令提示字符下载)。 修改start.ps1 并将以下程序代码复制取代原本的第一行: $cert = Get-ChildItem Cert:\LocalMachine\My\[certificate thumbprint] $base64 = Get-Content .\password.txt $encrypted = [Convert]::FromBase64String($base64) $bytes = $cert.PrivateKey.Decrypt($encrypted,$true) $password = [Text.Encoding]::UTF8.GetString($bytes)  最后,于档案列表增加文件名来确认 password.txt 档案已传送至客制化脚本扩展。  Set-AzureVMCustomScriptExtension -ContainerName scripts -StorageAccountName '[your storage account name]' -VM $vm -FileName 'start.ps1', 'CustomScriptSQLPS.ps1', 'password.txt' -Run 'start.ps1' | Update-AzureVM -Verbose

sql server 2000的自动备份使用的是数据库备份计划。数据库备份计划是sql代理SQLSERVERAGENT的一个组件,默认SQLSERVERAGENT服务是手动开启的,所以如果没有设置SQLSERVERAGENT自动开启,自动备份就会失效。设置如下:1、在系统服务中找到 SQLSERVERAGENT 服务。2、将服务设置为自动启动即可,如图内容来自www.zgxue.com请勿采集。

免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
Copyright © 2017 www.zgxue.com All Rights Reserved