SQL Server 기능 및 기능 사용Use of SQL Server features and capabilities

이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse OLTP 데이터베이스의 기능 및 SQL Server 기능의 WideWorldImporters 사용합니다. WideWorldImporters use of SQL Server features and capabilities in the OLTP database.

WideWorldImporters는 다양 한 SQL Server 2016에 도입 된 최신 기능을 포함 하 여 SQL Server의 주요 기능을 보여 주기 위해 설계 되었습니다.WideWorldImporters is designed to showcase many of the key features of SQL Server, including the latest features introduced in SQL Server 2016. 다음 목록은 SQL Server 기능 및 기능과 WideWorldImporters에서 사용 되는 방법을 설명 합니다.The following is a list of SQL Server features and capabilities, and a description of how they are used in WideWorldImporters.

SQL Server 기능 또는 기능SQL Server feature or capability WideWorldImporters에서 사용 하 여Use in WideWorldImporters
임시 테이블Temporal tables 모든 찾기 스타일 참조 테이블 및 StockItems, 고객 및 공급자와 같은 주요 엔터티를 포함 하 여 많은 임시 테이블이 있습니다.There are many temporal tables, including all look-up style reference tables and main entities such as StockItems, Customers, and Suppliers. 임시 테이블을 사용 하 여 편리 하 게 추적 하기 위해 이러한 엔터티의 기록을 수 있습니다.Using temporal tables allows to conveniently keep track of the history of these entities.
JSON에 대 한 AJAX 호출AJAX calls for JSON 이러한 테이블을 쿼리 하는 응용 프로그램 자주 사용 하 여 AJAX 호출: 사용자, 고객, 공급 업체와 StockItems 합니다.The application frequently uses AJAX calls to query these tables: Persons, Customers, Suppliers, and StockItems. 호출 하 여 (즉, 반환 되는 데이터의 형식이 JSON 데이터로) JSON 페이로드를 반환 합니다.The calls return JSON payloads (i.e. the data that is returned is formatted as JSON data). 저장된 프로시저 예를 들어 참조 Website.SearchForCustomers합니다.See, for example, the stored procedure Website.SearchForCustomers.
JSON 속성/값 모음JSON property/value bags 테이블 수 있는 JSON 데이터를 관계형 데이터 테이블에 확장을 있는 열입니다.A number of tables have columns that hold JSON data to extend the relational data in the table. 예를 들어 Application.SystemParameters 에 응용 프로그램 설정에 대 한 열 및 Application.People 에 열이 레코드 사용자 기본 설정 합니다.For example, Application.SystemParameters has a column for application settings and Application.People has a column to record user preferences. 이러한 테이블을 사용 하는 nvarchar(max) 기본 제공 함수를 사용 하 여 CHECK 제약 조건 함께 JSON 데이터를 기록 하는 열 ISJSON 열을 확인 하는 값은 유효한 JSON입니다.These tables use an nvarchar(max) column to record the JSON data, along with a CHECK constraint using the built-in function ISJSON to ensure the column values are valid JSON.
행 수준 보안 (RLS)Row-level security (RLS) 행 수준 보안 (RLS)은 역할 멤버 자격에 따라 Customers 테이블에 대 한 액세스를 제한 하는 데 사용 됩니다.Row Level Security (RLS) is used to limit access to the Customers table, based on role membership. 각 영업 지역에 역할 및 사용자 있습니다.Each sales territory has a role and a user. 이 작업에서 확인 하려면 샘플 script.zip 일부인에서 해당 스크립트를 사용의 샘플의 릴리스합니다.To see this in action, use the corresponding script in sample-script.zip, which is part of the release of the sample.
실시간 운영 분석Real-time Operational Analytics (데이터베이스의 전체 버전) 코어 트랜잭션 테이블 Sales.InvoiceLinesSales.OrderLines 운영 워크 로드에 끼치는 영향이 최소화 트랜잭션 데이터베이스에서 효율적인 분석 쿼리 실행을 지원 하기 위해 비클러스터형 columnstore 인덱스 둘 다 합니다.(Full version of the database) The core transactional tables Sales.InvoiceLines and Sales.OrderLines both have a non-clustered columnstore index to support efficient execution of analytical queries in the transactional database with minimal impact on the operational workload. 동일한 데이터베이스에서 트랜잭션 및 분석 실행도 라고 하이브리드 트랜잭션/Analytical 처리 (HTAP)합니다.Running transactions and analytics in the same database is also referred to as Hybrid Transactional/Analytical Processing (HTAP). 이 작업에서 확인 하려면 샘플 script.zip 일부인에서 해당 스크립트를 사용의 샘플의 릴리스합니다.To see this in action, use the corresponding script in sample-script.zip, which is part of the release of the sample.
PolyBasePolyBase 외부 테이블을 사용 하 여 Azure 블로그 저장소에서 호스팅되는 공용 데이터 집합으로 작업에서이 PolyBase를 보려면 샘플 script.zip 일부인에서 해당 스크립트를 사용의 샘플의 릴리스합니다.To see this PolyBase in action, using an external table with a public data set hosted in Azure blog storage, use the corresponding script in sample-script.zip, which is part of the release of the sample.
메모리 내 OLTPIn-Memory OLTP (데이터베이스의 전체 버전) 테이블 형식 되는 모든 메모리 액세스에 최적화 된 테이블 반환 매개 변수 (Tvp) 모든 메모리 최적화를 활용 합니다.(Full version of the database) The table types are all memory-optimized, such that table-valued parameters (TVPs) all benefit from memory-optimization.

두 개의 모니터링 테이블 Warehouse.VehicleTemperaturesWarehouse.ColdRoomTemperatures, 메모리 액세스에 최적화 됩니다.The two monitoring tables, Warehouse.VehicleTemperatures and Warehouse.ColdRoomTemperatures, are memory-optimized. 이렇게 하면 기존의 디스크 기반 테이블 보다 더 빠른 속도로 채워질 ColdRoomTemperatures 테이블입니다.This allows the ColdRoomTemperatures table to be populated at higher speed than a traditional disk-based table. VehicleTemperatures 테이블 JSON 페이로드를 보유 하 고 IoT 시나리오에 대 한 확장에 있습니다.The VehicleTemperatures table holds the JSON payload and lends itself to extension towards IoT scenarios. VehicleTemperatures 테이블 추가 인계 EventHubs, Stream Analytics 및 Power BI를 포함 하는 시나리오입니다.The VehicleTemperatures table further lends itself to scenarios involving EventHubs, Stream Analytics, and Power BI.

저장된 프로시저 Website.RecordColdRoomTemperatures 콜드 방 온도 기록의 성능을 더욱 향상 시킬 고유 하 게 컴파일됩니다.The stored procedure Website.RecordColdRoomTemperatures is natively compiled to further improve the performance of recording cold room temperatures.

메모리 내 OLTP 작업에서 예를 보려면 작업 drivers.zip 일부인에서 차량 위치 작업 부하 드라이버의는 샘플의 릴리스합니다.To see an example of In-Memory OLTP in action, see the vehicle-locations workload driver in workload-drivers.zip, which is part of the release of the sample.
클러스터형 columnstore 인덱스Clustered columnstore index (데이터베이스의 전체 버전) 테이블 Warehouse.StockItemTransactions 클러스터형된 columnstore 인덱스를 사용 합니다.(Full version of the database) The table Warehouse.StockItemTransactions uses a clustered columnstore index. 이 테이블의 행 수는 커질 하며 크게 클러스터형된 columnstore 인덱스는 테이블의 디스크 크기를 줄일 수 및 쿼리 성능이 향상 됩니다.The number of rows in this table is expected to grow large, and the clustered columnstore index significantly reduces the on-disk size of the table, and improves query performance. 삽입만 수정이이 테이블에는--온라인 작업에서이 테이블에 없는 업데이트/삭제 않으며 클러스터형된 columnstore 인덱스 수행 삽입 작업에 효과적입니다.The modification on this table are insert-only - there is no update/delete on this table in the online workload - and clustered columnstore index performs well for insert workloads.
동적 데이터 마스킹Dynamic Data Masking 데이터베이스 스키마의 데이터 마스킹에 적용 된 은행 세부 정보에는 테이블에서에서 공급 업체에 대 한 유지 Purchasing.Suppliers합니다.In the database schema, Data Masking has been applied to the bank details held for Suppliers, in the table Purchasing.Suppliers. Non-admin 인 직원에 체계가이 정보에 액세스할 수 없습니다.Non-admin staff will not have access to this information.
항상 암호화Always Encrypted 상시 암호화에 대 한 데모 ´ â 포함 되어 있는 다운로드 가능한 samples.zip의는 샘플의 릴리스...A demo for Always Encrypted is included in the downloadable samples.zip, which is part of the release of the sample.. 이 데모는 암호화 키를 암호화를 사용 하 여 중요 한 데이터 및 데이터 테이블에 삽입 하는 작은 샘플 응용 프로그램에 대 한 테이블을 만듭니다.The demo creates an encryption key, a table using encryption for sensitive data, and a small sample application that inserts data into the table.
스트레치 데이터베이스Stretch database Warehouse.ColdRoomTemperatures 테이블을 임시 테이블로 구현 및 예제 데이터베이스의 전체 버전에서 메모리 최적화 합니다.The Warehouse.ColdRoomTemperatures table has been implemented as a temporal table, and is memory-optimized in the Full version of the sample database. 보관 테이블은 디스크 기반 및 Azure로 확장할 수 있습니다.The archive table is disk-based and can be stretched to Azure.
전체 텍스트 인덱스Full-text indexes 전체 텍스트 인덱스에는 사용자, 고객 및 StockItems 검색 향상 시킵니다.Full-text indexes improve searches for People, Customers, and StockItems. 전체 텍스트 인덱싱에 SQL Server 인스턴스에 설치 되어 있는 경우에 인덱스 쿼리에 적용 됩니다.The indexes are applied to queries only if you have full-text indexing installed on your SQL Server instance. 비 영구적인 계산된 열이 전체 텍스트 인덱싱된 StockItems 테이블에 있는 데이터를 만들기 위해 사용 됩니다.A non-persistent computed column is used to create the data that is full-text indexed in the StockItems table.

CONCAT전체 텍스트 인덱스는 SearchData 만들려는 필드를 연결 하는 데 사용 됩니다.CONCAT is used for concatenating the fields to create SearchData that is full-text indexed.
샘플에 전체 텍스트 인덱스의 사용을 사용 하도록 설정 하려면 데이터베이스에 다음 문을 실행 합니다.To enable the use of full-text indexes in the sample execute the following statement in the database:

EXECUTE [Application].[Configuration_ConfigureFullTextIndexing]

프로시저는 만듭니다 기본 전체 텍스트 카탈로그 하나 존재 하지 않는 한 다음 그 뷰의 전체 텍스트 버전 검색 뷰를 대체 하는 경우).The procedure creates a default fulltext catalog if one doesn’t already exist, then replaces the search views with full-text versions of those views).

참고 SQL Server에서 전체 텍스트 인덱스를 사용 해야 한다는 설치 하는 동안 전체 텍스트 옵션을 선택 합니다.Note that using full-text indexes in SQL Server requires selecting the Full-Text option during installation. Azure SQL 데이터베이스 필요 하지 않습니다 및 전체 텍스트 인덱스를 활성화 하려면 특정 구성입니다.Azure SQL Database does not require and specific configuration to enable full-text indexes.
인덱싱된 지속형된 계산된 열Indexed persisted computed columns SupplierTransactions 및 CustomerTransactions에 사용 되는 지속형된 계산된 열 인덱스입니다.Indexed persisted computed columns used in SupplierTransactions and CustomerTransactions.
CHECK 제약 조건Check constraints 상대적으로 복잡 한 check 제약 조건을 중인 Sales.SpecialDeals합니다.A relatively complex check constraint is in Sales.SpecialDeals. 이렇게 하면 둘 중 하나만 DiscountAmount, DiscountPercentage, 및 UnitPrice 구성 됩니다.This ensures that one and only one of DiscountAmount, DiscountPercentage, and UnitPrice is configured.
Unique 제약 조건Unique constraints 많은 생성 (및 unique 제약 조건)에 게 다 Warehouse.StockItemStockGroups'에 대 한 설정 되어 있습니다.A many to many construction (and unique constraints) are set up for Warehouse.StockItemStockGroups`.
테이블 분Table partitioning (데이터베이스의 전체 버전) 테이블 Sales.CustomerTransactionsPurchasing.SupplierTransactions 파티션 함수를 사용 하 여 연도별로 분할 된 PF_TransactionDate 및 파티션 구성표 PS_TransactionDate합니다.(Full version of the database) The tables Sales.CustomerTransactions and Purchasing.SupplierTransactions are both partitioned by year using the partition function PF_TransactionDate and the partition scheme PS_TransactionDate. 분할 큰 테이블의 관리 효율성을 개선 하기 위해 사용 됩니다.Partitioning is used to improve the manageability of large tables.
목록 처리List processing 예제에서는 테이블 형식 Website.OrderIDList 제공 됩니다.An example table type Website.OrderIDList is provided. 예제 프로시저에 의해 사용 되는 Website.InvoiceCustomerOrders합니다.It is used by an example procedure Website.InvoiceCustomerOrders. 프로시저를 사용 하 여 공통 테이블 식 (Cte), TRY/CATCH, JSON_MODIFY, XACT_ABORT, NOCOUNT, THROW 및 XACT_STATE 주문을 응용 프로그램을 데이터베이스 엔진에서 왕복을 최소화 하기 위해 단일 주문만 하지 않고 목록 처리 하는 기능을 보여 줍니다.The procedure uses Common Table Expressions (CTEs), TRY/CATCH, JSON_MODIFY, XACT_ABORT, NOCOUNT, THROW, and XACT_STATE to demonstrates the ability to process a list of orders rather than just a single order, to minimize round trips from the application to the database engine.
GZip 압축GZip compression Warehouse.VehicleTemperature의테이블 전체 센서 데이터를 보유 하지만이 데이터는 여러 개월을 하는 경우 GZip 압축을 사용 하는 압축 함수를 사용 하 여 공간을 절약 하기 위해 압축 됩니다.The Warehouse.VehicleTemperatures table holds full sensor data but when this data is more than a few months old, it is compressed to conserve space using the COMPRESS function, which uses GZip compression.

보기 Website.VehicleTemperatures 이전에 압축 된 데이터를 검색할 때 DECOMPRESS 함수를 사용 하 여 합니다.The view Website.VehicleTemperatures uses the DECOMPRESS function when retrieving data that was previously compressed.
쿼리 저장소Query Store 쿼리 저장소 데이터베이스에서 사용 됩니다.Query Store is enabled on the database. 몇 가지 쿼리를 실행 한 후 노드를 데이터베이스에서 사용 중인 쿼리 저장소, Management Studio에서 데이터베이스를 열고, 열고 보고서 쿼리 실행 및 실행 하는 쿼리에 대 한 계획을 보려면 상위 리소스 소비 쿼리를 엽니다.After running a few queries, open the database in Management Studio, open the node Query Store, which is under the database, and open the report Top Resource Consuming Queries to see the query executions and the plans for the queries you just ran.
STRING_SPLITSTRING_SPLIT DeliveryInstructions 표에 Sales.InvoicesSTRING_SPLIT 보여 주기 위해 사용할 수 있는 쉼표로 구분 된 값이 있습니다.The column DeliveryInstructions in the table Sales.Invoiceshas a comma-delimited value that can be used to demonstrate STRING_SPLIT.
감사Audit 데이터베이스에 다음 문을 실행 하 여이 예제 데이터베이스에 대 한 SQL Server Audit은 활성화할 수 있습니다.SQL Server Audit can be enabled for this sample database by running the following statement in the database:

EXECUTE [Application].[Configuration_ApplyAuditing]

Azure SQL 데이터베이스에서 감사가 설정 되어 있지만 통해는 Azure 포털합니다.In Azure SQL Database, auditing is enabled through the Azure portal.

보안 연산의 로그인, 역할 및 사용 권한 위치 설정 (standard edition 시스템)는 포함 하는 모든 시스템에 기록 됩니다.Security operations involving logins, roles and permissions are logged on all systems where audit is enabled (including standard edition systems). 감사는 모든 시스템에서 사용할 수 있으며 추가 권한이 필요 하지 않습니다 때문에 응용 프로그램 로그에 전송 됩니다.Audit is directed to the application log because this is available on all systems and does not require additional permissions. 경고 보안을 강화 하기 리디렉션되어야 보안 로그 또는 파일은 안전한 폴더에 있다고 가정 됩니다.A warning is given that for higher security, it should be redirected to the security log or to a file in a secure folder. 필요한 추가 구성을 설명 하는 링크가 제공 됩니다.A link is provided to describe the required additional configuration.

엔터프라이즈 개발자/평가/버전 시스템에 대 한 모든 금융 트랜잭션 데이터에 대 한 액세스 감사 됩니다.For evaluation/developer/enterprise edition systems, access to all financial transactional data is audited.