Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server 2016 - Giới thiệu về Cơ sở dữ liệu Stretch

Không, đó không phải là khoảng cách bạn đang tìm kiếm

Bắt đầu với SQL Server 2016, bạn sẽ có khả năng lưu trữ các phần của cơ sở dữ liệu trên đám mây. Khả năng mới này được gọi là Cơ sở dữ liệu kéo dài và tính năng này sẽ có lợi cho những người cần lưu giữ dữ liệu giao dịch trong thời gian dài và những người muốn tiết kiệm tiền lưu trữ. Khả năng di chuyển dữ liệu sang Microsoft Azure Cloud một cách liền mạch sẽ cung cấp cho bạn khả năng lưu trữ dữ liệu mà không cần phải thay đổi cách ứng dụng của bạn truy vấn dữ liệu.

Trong SQL Server 2016 Community Technology Preview 2 (CTP2), Cơ sở dữ liệu Stretch di chuyển toàn bộ bảng. Nếu cơ sở dữ liệu của bạn đã được thiết lập để lưu trữ dữ liệu lưu trữ trong các bảng riêng biệt với dữ liệu hiện tại, bạn sẽ có thể dễ dàng di chuyển dữ liệu lưu trữ sang Azure. Sau khi bạn bật Cơ sở dữ liệu Stretch, nó sẽ âm thầm di chuyển dữ liệu của bạn sang Cơ sở dữ liệu Azure SQL. Cơ sở dữ liệu Stretch tận dụng sức mạnh xử lý trong Azure để chạy các truy vấn dựa trên dữ liệu từ xa bằng cách viết lại truy vấn. Bạn sẽ thấy đây là toán tử "truy vấn từ xa" trong kế hoạch truy vấn.

Một cách dễ dàng để xác định cơ sở dữ liệu và bảng đủ điều kiện để được kích hoạt Stretch là tải xuống và chạy Trình tư vấn nâng cấp SQL Server 2016 và chạy Trình tư vấn cơ sở dữ liệu Stretch. Aaron Bertrand (@AaronBertrand) đã viết về điều này gần đây:

  • Xác định Bảng Ứng viên cho Cơ sở dữ liệu Kéo dài SQL Server 2016

Hạn chế đối với Cơ sở dữ liệu Stretch

Không phải tất cả các bảng đều đủ điều kiện để được bật tính năng Kéo dài. Một số thuộc tính bảng, dữ liệu và kiểu cột, ràng buộc và chỉ mục không được hỗ trợ, chẳng hạn như:

  • Bảng sao chép và tối ưu hóa bộ nhớ
  • Các bảng chứa dữ liệu FILESTREAM, sử dụng Theo dõi thay đổi hoặc Dữ liệu thay đổi
  • Các loại dữ liệu như dấu thời gian, sql_variant, XML, địa lý hoặc các cột luôn được mã hóa
  • Kiểm tra và các ràng buộc mặc định hoặc các ràng buộc khóa ngoại tham chiếu đến bảng
  • Các chế độ xem XML, toàn văn bản, không gian, cột theo cụm và được lập chỉ mục tham chiếu đến bảng đã bật Stretch
  • Bạn không thể chạy các câu lệnh UPDATE hoặc DELETE hoặc chạy các hoạt động CREATE INDEX hoặc ALTER INDEX trên bảng hỗ trợ Stretch

Để có danh sách đầy đủ các giới hạn, bạn có thể truy cập:Các yêu cầu và giới hạn đối với Cơ sở dữ liệu Stretch.

Thiết lập cơ sở dữ liệu Stretch

Bắt đầu không phải là một nhiệm vụ phức tạp. Bạn sẽ cần một tài khoản Azure và sau đó kích hoạt Cơ sở dữ liệu Stretch trên phiên bản.

Để bật Cơ sở dữ liệu Stretch trên một phiên bản chạy:

EXEC sys.sp_configure N'remote data archive', '1';
RECONFIGURE;
GO

Đối với bản demo này, tôi sẽ sử dụng cơ sở dữ liệu AdventureWorks2014 trên phiên bản SQL Server 2016 CPT2. Tôi sẽ bắt đầu bằng cách tạo một bảng mới:

USE [AdventureWorks2014];
GO
 
CREATE TABLE dbo.StretchTest
(
  FirstName VARCHAR(50),
  LastName  VARCHAR(50)
);
GO

Và sau đó, tôi sẽ điền vào bảng thử nghiệm StretchTest với một số dữ liệu:

USE [AdventureWorks2014];
GO
 
INSERT INTO dbo.StretchTest(FirstName, LastName)
VALUES('Paul', 'Randal'),  ('Kimberly', 'Tripp'),('Jonathan', 'Kehayias'),
      ('Erin', 'Stellato'),('Glenn', 'Berry'),   ('Tim', 'Radney');
GO

Bây giờ tôi có một bảng mà tôi có thể kéo dài đến Microsoft Azure Cloud. Để thực hiện việc này, tôi sẽ sử dụng GUI bằng cách nhấp chuột phải vào AdventureWorks2014, chọn Nhiệm vụ và chọn Bật cơ sở dữ liệu cho Stretch.

Trình hướng dẫn Kích hoạt Cơ sở dữ liệu cho Stretch sẽ mở ra, như sau:

Tôi sẽ nhấp vào tiếp theo:

Và đăng nhập vào tài khoản Microsoft Azure của tôi:

Sau đó, tôi được nhắc xác minh tài khoản nào tôi muốn sử dụng:

Sau đó, tôi chọn vị trí Azure mà tôi muốn sử dụng và chỉ định thông tin đăng nhập và mật khẩu quản trị viên. Khi bạn thực hiện việc này, hãy nhớ ghi lại tên người dùng và mật khẩu quản trị viên vì bạn sẽ cần điều này trong tương lai để kết nối lại với Cơ sở dữ liệu Azure SQL nếu bạn phải khôi phục cơ sở dữ liệu.

Sau đó tôi nhấp vào tiếp theo:

Và nhấp vào Kết thúc và cơ sở dữ liệu bắt đầu cấp phép cho Máy chủ cơ sở dữ liệu Azure SQL.

Tôi vừa tạo định nghĩa máy chủ được liên kết an toàn trên máy chủ cục bộ của mình có cơ sở dữ liệu Azure SQL từ xa làm điểm cuối. Tôi có thể xem điều này trong Đối tượng máy chủ, Máy chủ được liên kết cũng như trong tài khoản Azure của tôi trong Cơ sở dữ liệu SQL. Lưu ý rằng chỉ các quy trình hệ thống mới có thể sử dụng máy chủ được liên kết này; thông tin đăng nhập của người dùng không thể đưa ra các truy vấn thông qua máy chủ được liên kết với điểm cuối từ xa.

Bây giờ, cơ sở dữ liệu Stretch đã được kích hoạt cho ví dụ và cho cơ sở dữ liệu AdventureWorks2014, bây giờ tôi có thể kéo dài bảng mới của mình. Để kéo bảng sang Azure, tôi cần thay đổi bảng và bật tính năng lưu trữ dữ liệu từ xa.

USE [AdventureWorks2014];
GO
 
ALTER TABLE [StretchTest]
ENABLE REMOTE_DATA_ARCHIVE WITH ( MIGRATION_STATE = ON );
GO

Ngoài các tính năng mới với SQL Server 2016, còn có một số DMV mới. Để theo dõi quá trình di chuyển dữ liệu sang Azure, bạn có thể truy vấn sys.dm_db_rda_migration_status. Khi tôi truy vấn DMV sau khi bật tính năng lưu trữ dữ liệu từ xa, tôi có thể thấy rằng 6 hàng đã được di chuyển:

Sao lưu và khôi phục cơ sở dữ liệu Stretch

Hiện tại trong SQL Server 2016 CTP2 khi cơ sở dữ liệu được hỗ trợ Stretch được sao lưu, một bản sao lưu nông được tạo không bao gồm dữ liệu đã được di chuyển sang cơ sở dữ liệu Azure SQL. Dự kiến ​​rằng với bản phát hành RTM của SQL Server 2016, việc sao lưu cơ sở dữ liệu hỗ trợ Stretch sẽ tạo ra một bản sao lưu sâu sẽ chứa cả dữ liệu cục bộ và dữ liệu kéo dài.

Khi khôi phục cơ sở dữ liệu được bật Stretch, bạn sẽ phải kết nối lại cơ sở dữ liệu cục bộ với Cơ sở dữ liệu Azure SQL từ xa. Bạn thực hiện việc này bằng cách chạy thủ tục đã lưu trữ sys.sp_reauthorize_remote_data_archive dưới dạng db_owner.

Nếu bây giờ tôi sao lưu cơ sở dữ liệu AdventureWorks2014 hỗ trợ Stretch và khôi phục nó, tôi sẽ không thể truy vấn bảng StretchTest nữa cho đến khi tôi kết nối lại với Cơ sở dữ liệu Azure SQL bằng cách chạy:

USE [AdventureWorks2014];
GO
 
EXEC sys.sp_reauthorize_remote_data_archive @azure_username, @azure_password;
GO

Sau khi kết nối lại, tôi nhận được thông báo tương tự như thông báo bên dưới và sau đó tôi có thể truy vấn dữ liệu Kéo dài một lần nữa:

Sao chép cơ sở dữ liệu từ xa 'RDAAdventureWorks201467B6D9D4-E8E0-4C54-B3EF-7C2D3F1326C4' sang cơ sở dữ liệu từ xa 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D'.

Đang chờ sao chép cơ sở dữ liệu từ xa để hoàn thành.
br /> Cơ sở dữ liệu từ xa 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D' đã hoàn tất sao chép và hiện đang trực tuyến.

Khi khôi phục cơ sở dữ liệu hỗ trợ Stretch sang một phiên bản khác, phiên bản đó phải có "bật tính năng lưu trữ dữ liệu từ xa". Khi bạn đã khôi phục cơ sở dữ liệu và bật "lưu trữ dữ liệu từ xa", tất cả những gì cần thiết là kết nối lại với Cơ sở dữ liệu Azure SQL bằng cách chạy quy trình lưu trữ sys.sp_reauthorize_remote_data_archive.

Các bản sao lưu cho Cơ sở dữ liệu Azure SQL cho các cấp dịch vụ Cơ bản, Tiêu chuẩn và Cao cấp được thực hiện hàng giờ. Khoảng thời gian lưu giữ bản sao lưu khác nhau tùy thuộc vào cấp độ dịch vụ. Tại thời điểm viết bài, đối với cơ bản là 7 ngày, tiêu chuẩn 14 ngày và phí bảo hiểm là 35 ngày. Bạn có thể khôi phục Cơ sở dữ liệu Azure SQL bằng cách sử dụng cổng web Microsoft Azure.

Hủy di chuyển dữ liệu

Để di chuyển dữ liệu trở lại bộ nhớ cục bộ từ Cơ sở dữ liệu Azure SQL, bạn sẽ cần tạo một bảng cục bộ mới với cùng một lược đồ như bảng đã bật Stretch. Sau đó, bạn phải sao chép dữ liệu từ bảng đã bật Stretch vào bảng cục bộ mới. Sau khi dữ liệu được sao chép, bạn thả bảng đã kích hoạt Stretch và đổi tên bảng cục bộ mới thành tên của bảng đã kích hoạt Stretch vừa bị loại bỏ.

Bạn chỉ có thể vô hiệu hóa tính năng Stretch cho cơ sở dữ liệu sau khi tất cả các bảng có chức năng Stretch đã bị loại bỏ. Nếu bạn thả cơ sở dữ liệu được bật cho Stretch, cơ sở dữ liệu cục bộ sẽ bị xóa nhưng dữ liệu từ xa thì không; bạn sẽ phải bỏ cơ sở dữ liệu từ xa khỏi cổng quản lý Azure.

Tóm tắt

Cơ sở dữ liệu Stretch là một cách dễ dàng để di chuyển dữ liệu lưu trữ sang Microsoft Azure, nếu cơ sở dữ liệu của bạn hỗ trợ. Hiện tại trong SQL Server 2016 CTP2 có nhiều hạn chế với thuộc tính bảng, dữ liệu và cột, dữ liệu và kiểu cột, ràng buộc và chỉ mục. Nếu bạn không bị giới hạn bởi những hạn chế đó, thì Cơ sở dữ liệu Stretch là một cách đơn giản để di chuyển dữ liệu lịch sử sang Cơ sở dữ liệu Azure SQL và giải phóng bộ nhớ cục bộ có giá trị. Việc quản lý các bản sao lưu sẽ trở nên phức tạp hơn một chút vì dữ liệu của bạn sẽ được phân chia giữa tại cơ sở và trên đám mây.

Tôi mong muốn những hạn chế này sẽ được dỡ bỏ trong bản phát hành RTM và tôi chắc chắn rằng nhiều người trong số các bạn sẽ có thể sử dụng tính năng thú vị này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách trích xuất hoặc chuyển đổi dữ liệu thời gian từ một chuỗi trong SQL Server

  2. Có cách nào để truy xuất định nghĩa dạng xem từ SQL Server bằng ADO thuần túy không?

  3. Làm cách nào để thực hiện chèn và trả lại danh tính đã chèn bằng Dapper?

  4. SQL Server 2016:Tạo bảng từ tập lệnh SQL

  5. datetime so với datetimeoffset trong SQL Server:Sự khác biệt là gì?