SQL Server 2016可安全又便利,將特定資料表延展到Azure Cloud。
Stretch Databases是SQL Server 2016中一項新功能,
你可以選擇某些資料表延展到Azure Cloud,
特別是那些龐大的歷史資料,或是使用者很少查詢資料都很適合,
現在我們來看看如何啟用Stretch Databases。
use master
-- Enable stretch database at the instance level
exec sp_configure 'remote data archive', '1';
GO
RECONFIGURE
GO
1選擇要啟用延展的資料庫
2選擇資料表
可自訂資料篩選條件和資料表名稱
3登入Azure
4設定IP
延展資料庫圖示改變如下
如何監控
1透過SSMS2016
2使用sys.dm_db_rda_migration_status
SELECT *
FROM sys.dm_db_rda_migration_status
WHERE table_id = OBJECT_ID('Warehouse.StockItems_Archive')
AND database_id = DB_ID()
查詢有那些延展資料庫、資料表
select name
from master.sys.databases
where is_remote_data_archive_enabled = 1
select object_id,name
, is_remote_data_archive_enabled
from sys.tables
where is_remote_data_archive_enabled = 1
修改資料表、資料表延展狀態
--SQL SERVER資料延展至Azure
alter table Warehouse.StockItems_Archive
set ( REMOTE_DATA_ARCHIVE ( MIGRATION_STATE = outbound ) ) ;
--遠端資料從 Azure複製回 SQL Server
alter table Warehouse.StockItems_Archive
set ( REMOTE_DATA_ARCHIVE ( MIGRATION_STATE = INBOUND ) ) ;
--暫停延展
alter table Warehouse.StockItems_Archive
set ( REMOTE_DATA_ARCHIVE ( MIGRATION_STATE = paused ) ) ;
--資料表停用 Stretch 並放棄遠端資料
alter table Warehouse.StockItems_Archive
SET ( REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY ( MIGRATION_STATE = PAUSED ) ) ;
--停用 Stretch
alter table Warehouse.StockItems_Archive set (REMOTE_DATA_ARCHIVE = ON(MIGRATION_STATE=INBOUND));
Note:將資料表的遠端資料從 Azure 複製回 SQL Server 會產生資料傳輸成本。
--資料庫停用 Stretch Database
ALTER DATABASE WideWorldImporters
SET REMOTE_DATA_ARCHIVE = OFF ;
GO
Note:必須先停用所有延展資料表。
Cannot disable REMOTE_DATA_ARCHIVE because the database contains at least one table having REMOTE_DATA_ARCHIVE enabled.
結論
目前Stretch Database還是有一些限制,例如你無法更新、刪除已經移轉或可進行移轉資料,
同時篩選索引也不會傳播到Azure DB…等。但如果你有一些龐大資料表,
這些資料表又很少使用的話,那麼可以延展至Azure DB,
一來可以減少復原時間也可減少資料庫大小,二來也可以節省儲存成本。
Enjoy SQL Server 2016
參考
Disable Stretch Database and bring back remote data
Limitations for Stretch Database
SQL SERVER 2016 – How to Use SQL Server 2016 – Stretch Database – Notes from the Field #127