Utilizzo delle funzionalità di SQL ServerUse of SQL Server features and capabilities

In questo argomento si applica a: SìSQL ServerSìDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse WideWorldImporters l'utilizzo di funzionalità di SQL Server e funzionalità nel database OLTP. WideWorldImporters use of SQL Server features and capabilities in the OLTP database.

WideWorldImporters è progettato per illustrare molte delle funzionalità chiave di SQL Server, incluse le funzionalità più recenti introdotte in SQL Server 2016.WideWorldImporters is designed to showcase many of the key features of SQL Server, including the latest features introduced in SQL Server 2016. Di seguito è riportato un elenco di funzionalità di SQL Server e funzionalità e una descrizione di come vengono usati in WideWorldImporters.The following is a list of SQL Server features and capabilities, and a description of how they are used in WideWorldImporters.

Funzionalità di SQL Server o funzionalitàSQL Server feature or capability Utilizzo in WideWorldImportersUse in WideWorldImporters
Tabelle temporaliTemporal tables Sono presenti molte tabelle temporali, incluse tutte le tabelle di riferimento di stile di ricerca e le entità principali, ad esempio StockItems, clienti e fornitori.There are many temporal tables, including all look-up style reference tables and main entities such as StockItems, Customers, and Suppliers. L'utilizzo di tabelle temporali consente facilmente tenere traccia di cronologia di tali entità.Using temporal tables allows to conveniently keep track of the history of these entities.
Chiamate AJAX per JSONAJAX calls for JSON L'applicazione utilizza spesso chiamate AJAX per eseguire query su queste tabelle: persone, i clienti, fornitori e StockItems.The application frequently uses AJAX calls to query these tables: Persons, Customers, Suppliers, and StockItems. Le chiamate restituiscono i payload JSON (ad esempio i dati restituiti sono nel formato dati JSON).The calls return JSON payloads (i.e. the data that is returned is formatted as JSON data). Vedere, ad esempio, la stored procedure Website.SearchForCustomers.See, for example, the stored procedure Website.SearchForCustomers.
Contenitori di proprietà/valore JSONJSON property/value bags Un numero di tabelle con colonne che contengono i dati JSON per estendere i dati nella tabella relazionali.A number of tables have columns that hold JSON data to extend the relational data in the table. Ad esempio, Application.SystemParameters include una colonna per le impostazioni dell'applicazione e Application.People include una colonna in base alle preferenze utente record.For example, Application.SystemParameters has a column for application settings and Application.People has a column to record user preferences. Utilizzano queste tabelle un nvarchar(max) colonna per registrare i dati JSON, insieme a un vincolo CHECK utilizzando la funzione predefinita ISJSON per garantire la colonna i valori sono JSON valido.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.
Sicurezza a livello di riga (riga)Row-level security (RLS) Livello di sicurezza di riga viene utilizzato per limitare l'accesso alla tabella Customers, in base all'appartenenza ai ruoli.Row Level Security (RLS) is used to limit access to the Customers table, based on role membership. Ogni territorio di vendita ha un ruolo e un utente.Each sales territory has a role and a user. Per vedere un esempio pratico, usare lo script corrispondente nella esempio script.zip, che fa parte di versione dell'esempio.To see this in action, use the corresponding script in sample-script.zip, which is part of the release of the sample.
Analisi operativa in tempo realeReal-time Operational Analytics (Versione completa del database) Le tabelle di base transazionale Sales.InvoiceLines e Sales.OrderLines dispongono di un indice columnstore non cluster per supportare l'esecuzione efficiente delle query analitiche nel database transazionale con impatto minimo sul carico di lavoro operativo.(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. Esecuzione di transazioni e analitica nello stesso database è detta anche l'elaborazione transazionale/analitica ibrido (HTAP).Running transactions and analytics in the same database is also referred to as Hybrid Transactional/Analytical Processing (HTAP). Per vedere un esempio pratico, usare lo script corrispondente nella esempio script.zip, che fa parte di versione dell'esempio.To see this in action, use the corresponding script in sample-script.zip, which is part of the release of the sample.
PolyBasePolyBase Per visualizzare questo PolyBase in azione, l'utilizzo di una tabella esterna con un set di dati pubblico ospitato in archiviazione BLOB di Azure, usare lo script corrispondente nella esempio script.zip, che fa parte di versione dell'esempio.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.
OLTP in memoriaIn-Memory OLTP (Versione completa del database) I tipi di tabella sono tutti con ottimizzazione della memoria, in modo che i valori di tabella parametri (TVP tutti) trarre vantaggio dall'ottimizzazione per la memoria.(Full version of the database) The table types are all memory-optimized, such that table-valued parameters (TVPs) all benefit from memory-optimization.

Le due tabelle di monitoraggio, Warehouse.VehicleTemperatures e Warehouse.ColdRoomTemperatures, siano con ottimizzazione per la memoria.The two monitoring tables, Warehouse.VehicleTemperatures and Warehouse.ColdRoomTemperatures, are memory-optimized. In questo modo, la tabella ColdRoomTemperatures da popolare con velocità superiore rispetto a una tabella basata su disco tradizionali.This allows the ColdRoomTemperatures table to be populated at higher speed than a traditional disk-based table. La tabella VehicleTemperatures contiene il payload JSON e si presta all'estensione verso scenari IoT.The VehicleTemperatures table holds the JSON payload and lends itself to extension towards IoT scenarios. La tabella VehicleTemperatures ulteriormente si presta a scenari che implicano EventHubs flusso Analitica e Power BI.The VehicleTemperatures table further lends itself to scenarios involving EventHubs, Stream Analytics, and Power BI.

La stored procedure Website.RecordColdRoomTemperatures viene compilata in modo nativo per migliorare ulteriormente le prestazioni di registrazione delle temperature ambientali fredde.The stored procedure Website.RecordColdRoomTemperatures is natively compiled to further improve the performance of recording cold room temperatures.

Per un esempio di OLTP In memoria in azione, vedere il driver del carico di lavoro veicolo posizioni nel carico di lavoro drivers.zip, che fa parte di versione dell'esempio.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.
Indice columnstore clusterClustered columnstore index (Versione completa del database) La tabella Warehouse.StockItemTransactions viene utilizzato un indice columnstore cluster.(Full version of the database) The table Warehouse.StockItemTransactions uses a clustered columnstore index. Il numero di righe in questa tabella è previsto può raggiungere dimensioni e l'indice columnstore cluster in modo significativo riduce le dimensioni su disco della tabella e consente di migliorare le prestazioni delle query.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. La modifica in questa tabella sono solo inserimento: non è presente alcun aggiornamento o eliminazione in questa tabella del carico di lavoro online - e un indice columnstore cluster esegue anche per i carichi di lavoro di inserimento.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.
Mascheramento dati dinamiciDynamic Data Masking Nello schema del database, la maschera dati è stata applicata per i dettagli bancari contenuti per i fornitori, nella tabella Purchasing.Suppliers.In the database schema, Data Masking has been applied to the bank details held for Suppliers, in the table Purchasing.Suppliers. Personale senza privilegi di amministratore non avrà accesso a queste informazioni.Non-admin staff will not have access to this information.
Crittografia sempre attivaAlways Encrypted Una demo per Always Encrypted è incluso nel Samples. zip scaricabili, che fa parte di versione dell'esempio...A demo for Always Encrypted is included in the downloadable samples.zip, which is part of the release of the sample.. La dimostrazione crea una chiave di crittografia, una tabella utilizzando la crittografia per i dati sensibili e un'applicazione di esempio di piccole dimensioni che inserisce i dati nella tabella.The demo creates an encryption key, a table using encryption for sensitive data, and a small sample application that inserts data into the table.
Estensione databaseStretch database Il Warehouse.ColdRoomTemperatures tabella è stata implementata come una tabella temporale ed è con ottimizzazione della memoria nella versione completa del database di esempio.The Warehouse.ColdRoomTemperatures table has been implemented as a temporal table, and is memory-optimized in the Full version of the sample database. La tabella di archiviazione è basata su disco e può essere estesi in Azure.The archive table is disk-based and can be stretched to Azure.
Indici full-textFull-text indexes Indici full-text di migliorare le ricerche per utenti, i clienti e StockItems.Full-text indexes improve searches for People, Customers, and StockItems. Gli indici vengono applicati alle query solo se è installata l'istanza di SQL Server di indicizzazione full-text.The indexes are applied to queries only if you have full-text indexing installed on your SQL Server instance. Una colonna calcolata non persistente viene utilizzata per creare i dati full-text nella tabella StockItems indicizzato.A non-persistent computed column is used to create the data that is full-text indexed in the StockItems table.

CONCATviene utilizzato per la concatenazione di campi per creare SearchData che viene applicata l'indicizzazione full-text.CONCAT is used for concatenating the fields to create SearchData that is full-text indexed.
Per abilitare l'utilizzo di indici full-text Nell'esempio di eseguire l'istruzione seguente nel database:To enable the use of full-text indexes in the sample execute the following statement in the database:

EXECUTE [Application].[Configuration_ConfigureFullTextIndexing]

La procedura crea un catalogo full-text predefinito se uno non è già presente, sostituisce le visualizzazioni di ricerca con le versioni full-text di tali visualizzazioni).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).

Si noti che l'utilizzo di indici full-text in SQL Server richiede l'opzione Full-Text durante l'installazione.Note that using full-text indexes in SQL Server requires selecting the Full-Text option during installation. Database SQL di Azure non richiede e la configurazione specifica per abilitare gli indici full-text.Azure SQL Database does not require and specific configuration to enable full-text indexes.
Colonne calcolate persistentiIndexed persisted computed columns Indicizzare le colonne calcolate persistenti utilizzate SupplierTransactions e CustomerTransactions.Indexed persisted computed columns used in SupplierTransactions and CustomerTransactions.
Vincoli CHECKCheck constraints È un vincolo check relativamente complessa in Sales.SpecialDeals.A relatively complex check constraint is in Sales.SpecialDeals. Ciò garantisce che uno e uno solo dei DiscountAmount, DiscountPercentage, e UnitPrice è configurato.This ensures that one and only one of DiscountAmount, DiscountPercentage, and UnitPrice is configured.
Vincoli UNIQUEUnique constraints Molti a molti costruzione (e i vincoli unique) vengono impostati per Warehouse.StockItemStockGroups'.A many to many construction (and unique constraints) are set up for Warehouse.StockItemStockGroups`.
Il partizionamento delle tabelleTable partitioning (Versione completa del database) Le tabelle Sales.CustomerTransactions e Purchasing.SupplierTransactions vengono partizionati dall'anno utilizzando la funzione di partizione PF_TransactionDate e lo schema di partizione 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. Il partizionamento viene utilizzato per migliorare la gestibilità di tabelle di grandi dimensioni.Partitioning is used to improve the manageability of large tables.
Elaborazione dell'elencoList processing Un tipo di tabella di esempio Website.OrderIDList viene fornito.An example table type Website.OrderIDList is provided. Viene utilizzato da una procedura di esempio Website.InvoiceCustomerOrders.It is used by an example procedure Website.InvoiceCustomerOrders. La routine utilizza espressioni di tabella comuni (CTE), TRY/CATCH, JSON_MODIFY, XACT_ABORT, NOCOUNT, THROW e XACT_STATE per illustra la possibilità di elaborare un elenco di ordini piuttosto che solo un singolo ordine, per ridurre i round trip dall'applicazione al motore di database.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.
Compressione GZipGZip compression Il Warehouse.VehicleTemperaturetabella s contiene dati del sensore completo, ma quando questi dati sono più di pochi mesi, verrà compressi per risparmiare spazio utilizzando la funzione COMPRESS, che utilizza la compressione 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.

La vista Website.VehicleTemperatures utilizza la funzione DECOMPRESS durante il recupero di dati che è stata compressa in precedenza.The view Website.VehicleTemperatures uses the DECOMPRESS function when retrieving data that was previously compressed.
Archivio queryQuery Store Archivio query è abilitato nel database.Query Store is enabled on the database. Dopo aver eseguito alcune query, aprire il database in Management Studio, aprire l'archivio Query, ovvero del database, il nodo e aprire il report Top query per consumo risorse per visualizzare le esecuzioni di query e i piani per le query che è stata eseguita.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 La colonna DeliveryInstructions nella tabella Sales.Invoicesha un valore delimitato da virgole che può essere utilizzato per illustrare STRING_SPLIT.The column DeliveryInstructions in the table Sales.Invoiceshas a comma-delimited value that can be used to demonstrate STRING_SPLIT.
ControlloAudit Eseguendo l'istruzione seguente nel database, SQL Server Audit può essere abilitata per questo database di esempio:SQL Server Audit can be enabled for this sample database by running the following statement in the database:

EXECUTE [Application].[Configuration_ApplyAuditing]

Nel Database di SQL Azure, il controllo è abilitato tramite il portale di Azure.In Azure SQL Database, auditing is enabled through the Azure portal.

Operazioni di protezione che include gli account di accesso, ruoli e autorizzazioni vengono registrate in tutti i sistemi in cui controllo è abilitato (inclusi i sistemi di standard edition).Security operations involving logins, roles and permissions are logged on all systems where audit is enabled (including standard edition systems). Controllo viene indirizzato al registro applicazioni di perché questo è disponibile in tutti i sistemi e non richiede autorizzazioni aggiuntive.Audit is directed to the application log because this is available on all systems and does not require additional permissions. Un avviso è dato che per una maggiore sicurezza, è necessario reindirizzarlo nel Registro di sicurezza o in un file in una cartella protetta.A warning is given that for higher security, it should be redirected to the security log or to a file in a secure folder. Viene fornito un collegamento per descrivere le operazioni di configurazione necessarie.A link is provided to describe the required additional configuration.

Per i sistemi di valutazione/developer o enterprise edition, viene controllato l'accesso a tutti i dati finanziari transazionali.For evaluation/developer/enterprise edition systems, access to all financial transactional data is audited.