PolyBase, Query Store, và Stretch Database trong SQL Server
- 20-02-2023
- Toanngo92
- 0 Comments
Mục lục
Khái niệm PolyBase
PolyBase là một công nghệ cho phép truy cập cả cơ sở dữ liệu không quan hệ (non-relational) và dữ liệu có quan hệ (relational) trên SQL Server. PolyBase được sử dụng để xử lý các truy vấn Transact-SQL đọc dữ liệu từ bên ngoài nguồn dữ liệu.
SQL Server 2016 và các phiên bản cao hơn có thể truy cập dữ liệu ngoài trong Hadoop và Azure Blob Storage. Kể từ SQL Server 2019, giờ đây bạn có thể sử dụng PolyBase để truy cập dữ liệu ngoài trong SQL Server, Oracle, Teradata và MongoDB.
Các truy vấn truy cập dữ liệu ngoài cũng có thể sử dụng để nhắm mục tiêu các bảng quan hệ trong phiên bản SQL Server của bạn. Điều này cho phép kết hợp dữ liệu từ các nguồn bên ngoài với dữ liệu quan hệ trong cơ sở dữ liệu của bạn. Trong SQL Server, bảng ngoài hoặc nguồn dữ liệu ngoài cung cấp kết nối tới Hadoop.
PolyBase đẩy một số tính toán tới Hadoop node để tối ưu hóa truy vấn tổng thể. Tuy nhiên, quyền truy cập bên ngoài PolyBase không giới hạn ở Hadoop. Các bảng phi quan hệ không có cấu trúc khác cũng
được hỗ trợ, chẳng hạn như các tệp văn bản được phân tách theo một cấu trúc nhất định.
PolyBase cho phép các tình huống sau xảy ra trong máy chủ SQL:
Truy vấn dữ liệu được lưu trữ trong Hadoop từ SQL Server hoặc Parallel Data Warehouse (PDW): Người dùng đang lưu trữ dữ liệu trong các hệ thống phân tán và có thể mở rộng hiệu quả về chi phí, chẳng hạn như Hadoop. PolyBase giúp dễ dàng truy vấn dữ liệu bằng cách sử dụng T-SQL.
Dữ liệu truy vấn được lưu trữ trong Bộ lưu trữ Azure Blob: Bộ lưu trữ Azure Blob là nơi thuận tiện để lưu trữ dữ liệu để các dịch vụ Azure sử dụng. PolyBase giúp dễ dàng truy cập dữ liệu bằng cách sử dụng T-SQL.
Nhập dữ liệu từ Hadoop, Azure Blob Storage hoặc Azure Data Lake Store: Tận dụng tốc độ của công nghệ lưu trữ cột của Microsoft SQL và khả năng phân tích bằng cách nhập dữ liệu từ Hadoop, Azure Blob Storage hoặc Azure Data Lake Store vào các bảng quan hệ. Không cần công cụ Trích xuất, Chuyển đổi và Tải (ETL) hoặc công cụ nhập riêng biệt.
Xuất dữ liệu sang Hadoop, Azure Blob Storage hoặc Azure Data Lake Store: Lưu trữ dữ liệu vào Hadoop, Azure Blob Storage hoặc Azure Data Lake Store để đạt được dung lượng lưu trữ tiết kiệm chi phí và giữ dữ liệu trực tuyến để dễ dàng truy cập.
Tích hợp với các công cụ BI (business itelligence – kinh doanh thông minh): Sử dụng PolyBase với kho phân tích và thông tin kinh doanh thông minh của Microsoft hoặc sử dụng bất kỳ công cụ của bên thứ ba nào tương thích với SQL Server.
Kiến trúc PolyBase
Kiến trúc của PolyBase có một số điểm tương đồng với kiến trúc Hadoop. Điều này là do mục đích của PolyBase là tương tác với dữ liệu Hadoop.
Các thành phần chính của kiến trúc PolyBase thể hiện như sau:
Head Node | Compute Node | Scale-out Reads |
Nó chứa SQL Server instance mà các truy vấn PolyBase được gửi tới. Mỗi nhóm PolyBase chỉ có thể có một head node. head node là một nhóm logic của Công cụ cơ sở dữ liệu SQL, Công cụ PolyBase và Dịch vụ di chuyển dữ liệu PolyBase trên SQL Server instance | Nó chứa SQL Server instance hỗ trợ xử lý truy vấn mở rộng trên dữ liệu ngoài. Compute node là một nhóm logic của SQL Server và dịch vụ di chuyển dữ liệu PolyBase trên Phiên bản SQL Server. Một nhóm PolyBase có thể có nhiều compute node. Cả head node và compute node phải chạy trên cùng một SQL Server instance | Khi truy vấn các SQL Server instance, Oracle hoặc Teradata bên ngoài, các bảng được phân vùng sẽ được lợi thế từ các lần đọc mở rộng (scale-out Reads). Mỗi node trong nhóm mở rộng PolyBase có thể quay tối đa tám trình đọc để đọc dữ liệu bên ngoài, mỗi trình đọc được chỉ định một phân vùng để đọc bên ngoài bảng. |
Hướng dẫn cài đặt PolyBase trên SQL Server 2019
Cấu hình tối thiểu:
- 64-bit SQL Server Evaluation edition.
- Microsoft NET Framework 4.5.
- Minimum memory: 4 GB.
- Minimum hard-disk space: 2 GB.
- Recommended: Minimum of 16 GB RAM.
TCP/IP phải được bật để PolyBase hoạt động bình thường. TCP/IP được bật theo mặc định trên tất cả
các phiên bản của SQL Server ngoại trừ các phiên bản Developer và Express SQL Server. Để PolyBase hoạt động chính xác trên các phiên bản Nhà phát triển và Express, bạn phải bật kết nối TCP/IP.
Lưu ý: Chỉ có thể cài đặt PolyBase trên một phiên bản SQL Server trên mỗi máy.
Single node hoặc PolyBase scale-out group:
Trước khi bạn cài đặt PolyBase trên các phiên bản SQL Server của mình, hãy quyết định xem bạn muốn cài đặt single node hay PolyBase scale-out group.
Đối với PolyBase scale-out group, hãy đảm bảo rằng:
- Tất cả các máy nằm trên cùng một miền.
- Bạn sử dụng cùng một tài khoản dịch vụ và mật khẩu trong quá trình cài đặt PolyBase
- Các phiên bản SQL Server của bạn có thể giao tiếp với nhau qua mạng.
- Các phiên bản SQL Server đều là cùng một phiên bản SQL Server.
Sau khi bạn cài đặt PolyBase độc lập hoặc trong nhóm mở rộng quy mô, bạn không thể thay đổi. Để thay đổi cài đặt này, bạn phải gỡ cài đặt và cài đặt lại tính năng này.
Sau đây là các bước để cài đặt và thiết lập PolyBase:
- Chạy SQL Server setup.exe.
- Chọn Cài đặt rồi chọn Cài đặt SQL Server độc lập mới hoặc thêm các tính năng.
- Trên trang Feature Selection như hình dưới, chọn PolyBase Query Service for External Data.
- Trên trang Cấu hình Máy chủ, hãy định cấu hình Dịch vụ Công cụ PolyBase của SQL Server và Dịch vụ Di chuyển Dữ liệu PolyBase của SQL Server để chạy trong cùng một tài khoản miền.
- Trên trang Cấu hình PolyBase, chọn một trong hai tùy chọn.
- Sử dụng phiên bản SQL Server làm phiên bản hỗ trợ PolyBase độc lập.
- Chọn tùy chọn này để sử dụng phiên bản SQL Server làm nút đầu độc lập.
- Sử dụng phiên bản SQL Server như một phần của nhóm mở rộng PolyBase. Tùy chọn này mở tường lửa để cho phép các kết nối đến. Các kết nối được phép cho Công cụ cơ sở dữ liệu máy chủ SQL, SQL Server PolyBase Engine, dịch vụ SQL Server PolyBase Data Movement và trình duyệt SQL. Tường lửa cũng cho phép các kết nối đến từ các nút khác trong nhóm mở rộng PolyBase. Tùy chọn này cũng cho phép các kết nối tường lửa của Microsoft Distributed Transaction Coordinator của Microsoft (MSDTC) và sửa đổi cài đặt sổ đăng ký MSDTC.
- Trên trang Cấu hình PolyBase, chỉ định dải cổng có ít nhất sáu cổng. Thiết lập SQL Server phân bổ 6 cổng khả dụng đầu tiên trong phạm vi.
Kích hoạt PolyBase
Sau khi cài đặt, PolyBase phải được bật để truy cập các tính năng của nó:
exec sp_configure @configname = 'polybase enabled', @configvalue = 1;
RECONFIGURE;
Khi quá trình cài đặt SQL Server hoàn tất với tính năng PolyBase, PolyBase phải được cấu hình để tương tác với các nguồn dữ liệu bên ngoài.
Cấu hình kết nối Hadoop
1. Chạy sp_configure với ‘hadoop conectivity’ và đặt giá trị thích hợp cho nhà cung cấp của bạn. Để tìm giá trị cho nhà cung cấp của bạn, hãy xem tài liệu chính thức về Cấu hình kết nối PolyBase. Theo mặc định, kết nối Hadoop được đặt thành 7
sp_configure @configname = 'hadoop connectivity’, @configvalue = 7;
go
RECONFIGURE
go
2. Khởi động lại SQL Server sử dụng msc service. Khởi động lại SQL Server sẽ khởi động lại các dịch vụ này như trong hình
- SQL Server PolyBase Data Movement Service
- SQL Server PolyBase Engine
Cấu hình bảng bên ngoài
Để truy vấn dữ liệu trong nguồn dữ liệu Hadoop của bạn, bạn phải xác định một bảng bên ngoài để sử dụng trong các truy vấn Transact-SQL.
1. Tạo một khóa master trên cơ sở dữ liệu, như đoạn mã phía dưới. Điều này là cần thiết để mã hóa bí mật thông tin xác thực.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
password là mật khẩu được sử dụng để mã hóa khóa master trong cơ sở dữ liệu.
Mật khẩu phải đáp ứng các yêu cầu về chính sách mật khẩu Windows của máy tính đang lưu trữ SQL Server instance.
2. Tạo thông tin xác thực trong phạm vi cơ sở dữ liệu cho các cụm Hadoop được bảo mật bằng Kerberos như sau:
CREATE DATABASE SCOPED CREDENTIAL HadoopUsercustom
WITH IDENTITY = "hadoop_user_name', Secret = 'hadoop_password';
3. Tạo nguồn dữ liệu ngoài với CREATE EXTERNAL DATA SOURCE như sau:
CREATE EXTERNAL DATA SOURCE MyHadoopCluster WITH (
TYPE = HADOOP,
LOCATION ="hdfs://10.xxx.xx.xxx:xxxx" ,
RESOURCE MANAGER LOCATION = '10.xxx.xx.xxx:xxxx',
CREDENTIAL = HadoopUsercustom);
4. Tạo định dạng tệp bên ngoài với CREATE EXTERNAL FILE FORMAT như sau:
CREATE EXTERNAL FILE FORWAT TextFileFornat WITH (
FORMAT TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (FIELD_TERMINATOR = '|',
USE_TYPE_DEFAULT = TRUE));
5. Tạo một bảng bên ngoài trỏ đến dữ liệu được lưu trữ trong Hadoop như sau:
CREATE EXTERNAL TABLE (dbo). [myCustomData] (
[customkey] int NOT NULL,
[custom_Customerkey] int NOT NULL,
[Geographykey] int NULL,
[Speed] float NOT NULL,
[YearMeasured] int NOT NULL
)
WITH (LOCATION="/Demo/",
DATA_SOURCE = MyHadoopCluster,
FILE_FORMAT = TextFileFormat
6. Tạo số liệu thống kê trên một bảng bên ngoài như sau:
CREATE STATISTICS StatsForUse on myCustomData(custom_Customerkey, Speed)
Khái niệm Query Store
Tính năng Query Store của SQL Server cung cấp thông tin chi tiết về lựa chọn và hiệu suất kế hoạch truy vấn. Nó đơn giản hóa, khắc phục sự cố hiệu suất bằng cách giúp nhanh chóng tìm ra sự khác biệt về hiệu suất do thay đổi kế hoạch truy vấn gây ra.
Query Store tự động nắm bắt lịch sử truy vấn, kế hoạch và thống kê thời gian chạy, đồng thời giữ lại những truy vấn này để xem xét. Nó phân tách dữ liệu theo các khung thời gian để có thể xác định các kiểu sử dụng cơ sở dữ liệu và các thay đổi kế hoạch truy vấn được áp dụng trên máy chủ được ghi lại. Cửa hàng truy vấn có thể được cấu hình bằng tùy chọn ALTER DATABASE SET.
Kiến trúc Query Store
Mỗi quá trình biên dịch hoặc thực thi truy vấn của SQL Server sẽ gửi một thông báo đến kho lưu trữ Truy vấn.
Thông tin về quá trình biên dịch và thực thi trước tiên được lưu trong bộ đệm và sau đó được lưu vào đĩa.
‘Thời lượng lưu thông tin trong bộ đệm và thời gian lưu thông tin trên đĩa được xác định lần lượt bởi tham số TNTERVAL_LENGTH_MINUTES và tham số DATA_FLUSH_INTERVAL_SECONDS. Các tham số này phải được chỉ định khi Query Store được bật và định cấu hình.
Đôi khi, nếu có quá tải trong bộ đệm, thông tin sẽ được ghi vào đĩa và sau đó, bộ đệm sẽ bị xóa.
Lưu ý rằng có thể truy cập thông tin trên cả bộ nhớ cache và đĩa bằng cách chạy catalog sys.query_store_runtime_stats.
Bật Query Store
Query Store không được bật theo mặc định cho cơ sở dữ liệu SQL Server và Azure Synapse Analytics (SQL. DW) và được bật theo mặc định cho cơ sở dữ liệu Azure SQL Database mới.
Để bật Query Store, thao tác trên SQL Server Management Studio như sau:
- Trong Object Explorer, nhấp chuột phải vào cơ sở dữ liệu, sau đó nhấp vào properties.
- Trong hộp thoại Database Properties, hãy chọn Query Store page.
- Trong ô Operation Mode (Requested), chọn Read Write
Sử dụng T-SQL:
SET QUERY_STORE = ON (OPERATION MODE = READ_WRITE);
Cấu hình Query Store
Khi tính năng query store được bật, các tham số khác cho Giám sát và Duy trì query store có thể được cấu hình.
Mô tả câu lệnh:
- CLEANUP_POLICY = STALE QUERY THRESHOLD_DAYS = 367 chỉ định rằng số ngày để giữ lại dữ liệu trong kho lưu trữ truy vấn là 367.
- DATA_FLUSH_INTERVAL_SECONDS chỉ định rằng dữ liệu trong kho lưu trữ truy vấn được chuyển vào đĩa trong khoảng thời gian 900 giây.
- MAX_STORAGE_SIZE_MB chỉ định rằng kích thước tối đa của kho lưu trữ truy vấn là 100 MB. Khi đạt đến kích thước này, kho lưu trữ truy vấn sẽ ngừng thu thập dữ liệu mới và trạng thái thay đổi từ đọc-ghi thành chỉ đọc. Bắt đầu với SQL Server 2019 (15.x), giá trị mặc định là 1 GB. Theo dõi mức sử dụng dung lượng hiện tại và tăng giá trị Kích thước tối đa (MB) để ngăn Query Store chuyển sang chế độ chỉ đọc.
- INTERVAL_LENGTH_MTNUTES chỉ định khoảng thời gian mà dữ liệu thống kê thực thi được lưu vào kho lưu trữ truy vấn.
- SIZE_BASED_CLEANUP_MODE chỉ định liệu quy trình dọn dẹp có tự động được kích hoạt hay không khi tổng lượng dữ liệu gần đạt đến kích thước tối đa.
- QUERY_CAPTURE_MODE chỉ định liệu tất cả các truy vấn được ghi lại tự động hay chỉ một số truy vấn, được ghi lại dựa trên số lần thực thi và mức tiêu thụ tài nguyên hoặc nếu chỉ các truy vấn hiện tại được ghi lại.
- Ngoài ra, MAX_PLANS_PER_QUERY cũng có thể được đưa ra trong một truy vấn. Nó chỉ định số kế hoạch tối đa được duy trì cho mỗi truy vấn.
Query Store System Objects
Có thể tìm thấy các system procedure mới và viewc liên quan đến query store trong SQL Server.
SELECT name, type_desc FROM sys.all_objects
WHERE name LIKE '%query_store' or name='query_context_settings'
Kết quả trả ra:
Điều chỉnh hiệu năng với Query Store
Hiệu năng của các truy vấn có thể giảm theo thời gian khi cơ sở dữ liệu phát triển. Để phân tích nguyên nhân gây ra vấn đề về hiệu năng là một nhiệm vụ đầy thách thức và tốn thời gian, điều này được thực hiện dễ dàng với tính năng Query Store. Tính năng Query Store duy trì tất cả thông tin về các truy vấn theo thời gian và hỗ trợ giải quyết vấn đề nhanh chóng. Như đã đề cập trước đây, nó cũng cho phép ‘roll-back’ để truy vấn các gói từ lịch sử.
Sau đây là một vài ví dụ về các tình huống ứng dụng, trong đó các giải pháp điều chỉnh hiệu năng có thể được cung cấp một cách chủ động hoặc tích cực bằng cách sử dụng tính năng Query Store:
- Nếu bất kỳ thay đổi kế hoạch nào gần đây gây ra hiệu suất kém, hãy nhanh chóng xác định vấn đề và nếu được yêu cầu, hãy hoàn nguyên về kế hoạch trước đó
- Nếu bất kỳ truy vấn nào đang tiêu tốn hầu hết tài nguyên hệ thống, chẳng hạn như CPU, bộ nhớ hoặc IO, chúng có thể được xác định và thay đổi tương ứng để đảm bảo sử dụng tối ưu.
- Khi các thay đổi đối với ứng dụng hoặc nền tảng được lên kế hoạch, query store có thể được sử dụng để so sánh hiệu suất trước và sau khi triển khai thay đổi. Những thay đổi này có thể bao gồm cài đặt các phiên bản mới của ứng dụng, cài đặt phần cứng mới, nâng cấp mức độ tương thích cho cơ sở dữ liệu và thêm hoặc sửa đổi các chỉ mục.
- Khi các bản nâng cấp được lên kế hoạch cho Trình tối ưu hóa Truy vấn, hiệu suất của các truy vấn có thể được ghi lại trước khi nâng cấp và sửa đổi trong quá trình nâng cấp.
- Khi có nhu cầu tối ưu hóa tài nguyên, các truy vấn có tần suất thực hiện thấp hơn có thể được xác định và việc phân bổ tài nguyên cho chúng có thể được chủ động xử lý.
Stretch Database
Stretch database là một tính năng mới được tích hợp trong SQL Server, hỗ trợ lưu trữ một phần cơ sở dữ liệu trên cloud. Khi có nhu cầu lưu giữ dữ liệu trong thời gian dài hơn, tính năng stretch database cho phép di chuyển an toàn các bảng và dữ liệu lên cloud. Đây là một giải pháp kinh tế để lưu trữ dữ liệu lâu dài.
Hơn nữa, các ứng dụng vẫn có thể truy vấn dữ liệu theo cách giống như trước đây. Kích hoạt tính năng stretch database giúp bạn có thể thực hiện các thao tác sau:
- Di chuyển dữ liệu đã lưu trữ cũng như dữ liệu hiện tại lên cloud một cách an toàn bằng cách sử dụng các tính năng mã hóa
- Truy cập và truy vấn dữ liệu trên cloud bất cứ lúc nào mà không có bất kỳ thay đổi nào đối với các ứng dụng hoặc truy vấn hiện có
- Giảm yêu cầu lưu trữ dữ liệu tại chỗ bằng cách sử dụng dung lượng lưu trữ lớn của cloud
- Giảm gánh nặng xử lý đối với dữ liệu tại chỗ bằng cách chạy các quy trình trên đám mây theo cách minh bạch đối với các ứng dụng
Kiến trúc Stretch Database
Định nghĩa máy chủ được liên kết an toàn được tạo trong Máy chủ SQL tại chỗ khi tính năng stretch database được bật trên cơ sở dữ liệu. Điều này thiết lập kết nối với remote database hoặc cloud. Khi stretch database được bật trên một bảng, các tài nguyên trên cloud sẽ được chuẩn bị và nếu tính năng di chuyển được bật, dữ liệu đủ điều kiện sẽ được di chuyển sang cơ sở dữ liệu trên cloud.
Thiết lập Strect Database
Để cấu hình cơ sở dữ liệu hiện có cho stretch database, hãy chọn Tasks | Stretch | Enable For Database trong SQL Server Management Studio để mở trình hướng dẫn Bật cơ sở dữ liệu cho kéo dài.
Transact-SQL cũng có thể được sử dụng để kích hoạt Cơ sở dữ liệu kéo dài cho cơ sở dữ liệu
Nếu bạn chọn Tasks | Stretch | Enable for an individual table và bạn chưa kích hoạt cơ sở dữ liệu cho Stretch Database, trình hướng dẫn sẽ định cấu hình cơ sở dữ liệu cho Stretch Database và cho phép bạn chọn các bảng làm một phần của quy trình.
Điều kiện tiên quyết để kích hoạt Stretch Database
Để bật Cơ sở dữ liệu kéo dài trên cơ sở dữ liệu hoặc bảng, trước tiên hãy bật nó trên máy chủ cục bộ. Thao tác này yêu cầu quyền sysadmin hoặc serveradmin.
- Nếu bạn có các quyền quản trị được yêu cầu, Bật cơ sở dữ liệu cho thuật sĩ Stretch sẽ định cấu hình máy chủ cho Stretch
- Nếu bạn không có các quyền cần thiết, quản trị viên phải bật nó theo cách thủ công bằng cách chạy sp_configure trước, sau đó chạy trình hướng dẫn hoặc quản trị viên phải chạy trình hướng dẫn.
EXEC sp_configure 'remote data archive', '1';
go
RECONFIGURE;
go
Để định cấu hình bảng hiện có cho Cơ sở dữ liệu kéo dài, hãy chạy lệnh ALTER TABLE:
USE <stretch_enabled_database>;
go
ALTER TABLE <table name>
SET (REMOTE_DATA_ARCHIVE = ON (
FILTER_PREDICATE = dbo.fn_stretchpredicate(),
MIGRATION_STATE = PAUSED) ) ;
go
Chọn cơ sở dữ liệu và tạo bảng cần strecth:
USE <stretch_enabled_database>;
go
CREATE TABLE <table_name>
(...)
WITH (REMOTE_DATA_ARCHIVE = ON (MIGRATION_STATE = OUTBOUND) ) ;
go
Đoạn mã mang ý nghĩa rằng bạn đã tạo một cơ sở dữ liệu và bảng mẫu, thêm vài bản ghi. Bảng này sẽ được stretch lên Azure cloud
USE [StrecthDemo];
go
CREATE TABLE dbo.stretchSampleTable
(
FNM VARCHAR (50), LNM VARCHAR (50)
);
Go
insert into stretchSampleTable values ('123','abc'), ('456','def'), ('789','ghi');
Tiếp theo, enable tính năng stretch lần lượt như hình dưới:
Trên Wizard, Đăng nhập vào tài khoản Microsoft Azure, sau đó chỉ định vị trí Azure, như
cũng như thông tin đăng nhập truy cập máy chủ.
Nhấp vào finish để xác minh các lựa chọn đã thực hiện và để hoàn tất việc kích hoạt cơ sở dữ liệu cho Kéo dài. Định nghĩa máy chủ được liên kết an toàn giữa cơ sở dữ liệu cục bộ và cơ sở dữ liệu từ xa trên Azure hiện đã được thiết lập.
Giới hạn của Stretch database
Một số hạn chế đối với bảng Stretch Enable:
Ràng buộc (constraint)
Tính duy nhất không được thực thi đối với các ràng buộc unique và ràng buộc primary key trong bảng Azure chứa dữ liệu được di chuyển.
Hoạt động DML
- Bạn không thể CẬP NHẬT hoặc XÓA các hàng đã được di chuyển hoặc các hàng đủ điều kiện để di chuyển, trong bảng đã bật Stretch hoặc trong view bao gồm các bảng đã bật Stretch.
- Bạn không thể CHÈN các hàng vào bảng đã bật Stretch trên máy chủ được liên kết.
Indexes
- Bạn không thể tạo chỉ mục cho view bao gồm các bảng đã bật strecth.
- Các bộ lọc trên các chỉ mục SQL Server không được truyền tới bảng từ xa.
Một số thuộc tính bảng sẽ khiến bạn không thể enable strecth như sau:
Table Properties
- Các bảng có hơn 1.023 cột hoặc hơn 998 chỉ mục
- FileTables hoặc bảng chứa dữ liệu FILESTREAM
- Các bảng được sao chép hoặc đang tích cực sử dụng Theo dõi thay đổi hoặc Thu thập dữ liệu thay đổi
- Memory-optimized tables
Data types
- text, ntext, image
- timestamp
- sql variant
- XML
- Các loại dữ liệu CLR bao gồm hình học, địa lý, phân cấp và loại do người dùng CLR xác định
Column types
- COLUMN_SET
- Computed columns
Constraints
- Ràng buộc default và ràng buộc check
- Ràng buộc khóa ngoài tham chiếu đến bảng. Trong mối quan hệ cha-con (ví dụ: order và order_detail), bạn có thể bật strecth cho bảng con (order_detail) chứ không phải cho bảng cha (order).
Indexes
- full text indexes
- XML indexes
- Spatial indexes
- Indexed views tham chiếu tới bảng