如何利用SQL Server 2014將資料庫檔案存放於Microsoft Azure Storage(中)

如何利用SQL Server 2014 CTP2將資料庫檔案存放於Microsoft Azure Storage(中)

說明

上一篇筆者為您介紹如何建立共用存取簽章,以及建立資料庫時直接將資料庫檔案放到Microsoft Azure Storage(以下簡稱Storage),接下來為您介紹如何對存放在Storage中的資料庫檔案進行卸離及附加,還有如何將企業內部SQL Server的資料庫檔案搬移到Storage。

卸離存放在Storage中的資料庫

若您要將存放在Storage中的資料庫做卸離,跟過去您部署在企業內部的SQL Server相同,可以從物件總管中選取您要卸離的資料庫,於資料庫上按滑鼠右鍵選擇【工作>卸離】。

image

或是使用T-SQL指令碼來卸離資料庫,下列指令碼示範卸離資料庫名稱為testdb的資料庫。


--卸離資料庫
USE [master]
GO
ALTER DATABASE [testdb] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

USE [master]
GO

EXEC master.dbo.sp_detach_db @dbname = N'testdb'
GO

資料庫卸離之後資料庫檔案的租用狀態就會變成已解除鎖定。

image

附加存放在Storage中的資料庫

等到Storage中的資料庫檔案解除鎖定之後,您就可以在企業內部或Microsoft Azure Virtual Machines將Storage裡的資料庫檔案附加到SQL Server 2014,但是您可能會在附加資料庫檔案的過程當中遇到下列的錯誤訊息:

image

這是因為您未安裝KB 2907705的關係,安裝之後您就可以利用下列T-SQL來附加存放在Storage的資料庫:


USE [master]
GO
CREATE DATABASE [testdb] ON 
(FILENAME = N'https://sqlhastorage.blob.core.windows.net/dbfiles/testdb.mdf'),
(FILENAME = N'https://sqlhastorage.blob.core.windows.net/dbfiles/testdb.ndf')
 LOG ON
(FILENAME = N'https://sqlhastorage.blob.core.windows.net/dbfiles/testdb.ldf')
 FOR ATTACH
GO

SQL Server 2014 目前僅支援使用T-SQL來附加資料庫,若您嘗試在SSMS中利用GUI的方式附加資料庫,會發生下列的錯誤訊息。

image

效能監控

經過簡單的測試,將10萬筆資料寫入到存放在Storage的資料庫,大約花費28秒的時間,而在整個寫入的過程當中您可以透過效能監視器來查看Stoage之效能資訊。

image

請在效能監視器中選擇SQLServer:HTTP Storage效能計數器來查看資料寫入、讀取、傳輸的狀況。

image

image

將現有SQL Server資料庫檔案移轉至Storage

若您希望將目前存放在企業內部的SQL Server資料庫檔案改放到Storage之中,除了上一節所介紹的卸離/附加的方式以外,您也可以藉由本節即將介紹的方式來達到相同目的。首先您可以透過ALTER DATABASE敘述來修改資料庫檔案的位置,例如下列的T-SQL指令碼,示範的是將Northwind的資料庫檔案路徑修改為Storage中容器的URL,接著將資料庫離線。


USE master
GO

--變更資料檔的路徑
ALTER DATABASE Northwind  
MODIFY FILE (NAME = Northwind,FILENAME = N'https://sqlhastorage.blob.core.windows.net/dbfiles/Northwind.mdf')
GO

--變更交易紀錄檔的路徑
ALTER DATABASE Northwind  
MODIFY FILE (NAME = Northwind_log,FILENAME = N'https://sqlhastorage.blob.core.windows.net/dbfiles/Northwind.ldf')
GO 

--將資料庫離線
ALTER DATABASE Northwind
SET OFFLINE
GO

再來透過Storage管理工具來將資料庫檔案上傳到您所設定的容器之中,本文示範的是zudio這套工具來上傳資料庫檔案,特別提醒的是將資料庫檔案放到Storage中只支援分頁Blob,因此您必須勾選下圖的Page選項,zudio才會幫您已分頁Blob的型態上傳資料庫檔案,否則預設會以區塊Blob來存放,將導致後續在使資料庫上線時發生失敗。

image

上傳完畢之後,您可以使用物件總管或是T-SQL來使資料庫上線。


ALTER DATABASE Northwind
SET ONLINE
GO

上線成功後進到資料庫屬性查看,資料庫黨檔案的路徑確實已經被設定為Storage中容器的路徑。

image

參考資料

Windows Azure 中的 SQL Server 資料檔案

Azure Storage Explorer

Create a SQL Server 2014 Database directly on Azure Blob storage with SQLXI

SQL Server 2014 Management Topic I-directly create SQL Server database on Azure Storage

Scaling-out SQL Server disks and data files on Windows Azure Virtual Machines…a real-world example

Performance Guidance for SQL Server in Windows Azure Virtual Machines

教學課程:Windows Azure 儲存體服務中的 SQL Server 資料檔案

KB 2907705

SQL Server Backups and Restores Directly with Windows Azure Blob Storage Service