Compartilhar via


Usar os recursos e funcionalidades do SQL Server

Aplica-se a: SQL Server Banco de Dados SQL do Azure

O WideWorldImporters usa os recursos e funcionalidades do SQL Server no banco de dados OLTP.

O WideWorldImporters foi projetado para mostrar os principais recursos do SQL Server, incluindo os recursos mais recentes introduzidos no SQL Server 2016. A tabela a seguir lista os recursos e os funcionalidades do SQL Server. Cada linha também fornece uma descrição de como os recursos são usados no WideWorldImporters.
 

Recurso ou funcionalidade do SQL Server Usar no WideWorldImporters
Tabelas temporais Há muitas tabelas temporais, incluindo todas as tabelas de referência de estilo de pesquisa e entidades principais, como StockItems, Customers e Suppliers. O uso de tabelas temporais permite acompanhar convenientemente o histórico dessas entidades.
Chamadas AJAX para JSON O aplicativo frequentemente usa chamadas AJAX para consultar essas tabelas: Persons, Customers, Suppliers e StockItems. As chamadas retornam os dados no formato JSON. Por exemplo, confira o procedimento armazenado Website.SearchForCustomers.
Recipientes de valor/propriedade JSON Várias tabelas têm colunas que contêm dados JSON para estender os dados relacionais na tabela. Por exemplo, Application.SystemParameters tem uma coluna para configurações de aplicativo e Application.People tem uma coluna para registrar as preferências do usuário. Essas tabelas usam uma coluna nvarchar(max) para registrar os dados JSON, juntamente com uma restrição CHECK usando a função interna ISJSON para garantir que os valores da coluna sejam JSON válidos.
RLS (Segurança em nível de linha) A RLS (Segurança em Nível de Linha) é usada para limitar o acesso à tabela Customers, com base na associação de função. Cada território de vendas tem uma função e um usuário. Para ver um limite de acesso RLS em ação, use o script correspondente em sample-script.zip, que faz parte da versão do exemplo.
Análise operacional em tempo real (Versão completa do banco de dados) As principais tabelas transacionais Sales.InvoiceLines e Sales.OrderLines têm um índice columnstore não clusterizado para dar suporte à execução eficiente de consultas analíticas no banco de dados transacional com impacto mínimo na carga de trabalho operacional. A execução de transações e análises no mesmo banco de dados também é conhecida como HTAP (Processamento Transacional/Analítico Híbrido). Para ver isso em ação, use o script correspondente em sample-script.zip, que faz parte da versão do exemplo.
PolyBase Para ver esse PolyBase em ação, usando uma tabela externa com um conjunto de dados público hospedado no Armazenamento de Blobs do Azure, use o script correspondente em sample-script.zip, que faz parte da versão do exemplo.
OLTP na memória (Versão completa do banco de dados) Os tipos de tabela são todos com otimização de memória, de modo que os TVPs (parâmetros com valor de tabela) se beneficiam da otimização de memória.

As duas tabelas de monitoramento, Warehouse.VehicleTemperatures e Warehouse.ColdRoomTemperatures, são otimizadas para memória. A otimização de memória permite que a tabela ColdRoomTemperatures seja preenchida em velocidade mais alta do que uma tabela tradicional baseada em disco. A tabela VehicleTemperatures contém o conteúdo JSON e se presta à extensão para cenários de IoT. A tabela VehicleTemperatures se presta ainda mais a cenários que envolvem EventHubs, Stream Analytics e Power BI.

O procedimento armazenado Website.RecordColdRoomTemperatures é compilado nativamente para melhorar ainda mais o desempenho do registro de temperaturas ambientes frias.

Para ver um exemplo de In-Memory OLTP em ação, confira o driver de carga de trabalho local do veículo em workload-drivers.zip, que faz parte da versão do exemplo.
Índice columnstore clusterizado (Versão completa do banco de dados) A tabela Warehouse.StockItemTransactions usa um índice columnstore clusterizado. Espera-se que o número de linhas nesta tabela aumente e o índice columnstore clusterizado reduza significativamente o tamanho do disco da tabela e melhore o desempenho da consulta. A modificação nesta tabela é somente inserção – não há nenhuma atualização/exclusão nesta tabela na carga de trabalho online – e o índice columnstore clusterizado tem um bom desempenho para inserir cargas de trabalho.
Máscara de Dados Dinâmico No esquema de banco de dados, o Mascaramento de Dados foi aplicado aos detalhes bancários mantidos para Suppliers, na tabela Purchasing.Suppliers. A equipe não administrativa não terá acesso a essas informações.
Always Encrypted Uma demonstração para Always Encrypted está incluída no samples.zip para baixar, que faz parte da versão do exemplo. A demonstração cria uma chave de criptografia, uma tabela usando criptografia para dados confidenciais e um pequeno aplicativo de exemplo que insere dados na tabela.
Stretch Database A tabela Warehouse.ColdRoomTemperatures foi implementada como uma tabela temporal e com otimização de memória na versão Completa do banco de dados de exemplo. A tabela de arquivos é baseada em disco e pode ser estendida para o Azure.
Índices de texto completo Os índices de texto completo melhoram as pesquisas de People, Customers e StockItems. Os índices serão aplicados a consultas somente se você tiver a indexação de texto completo instalada em sua instância do SQL Server. Uma coluna computada não persistente é usada para criar os dados indexados de texto completo na tabela StockItems.

CONCAT é usado para concatenar os campos para criar SearchData que é indexado de texto completo.
Para habilitar o uso de índices de texto completo no exemplo, execute a seguinte instrução no banco de dados:

EXECUTE [Application].[Configuration_ConfigureFullTextIndexing]

O procedimento cria um catálogo de texto completo padrão se ainda não existir um e, em seguida, substitui as exibições de pesquisa por versões de texto completo desses modos de exibição).

Observe que o uso de índices de texto completo no SQL Server requer a seleção da opção Full-Text durante a instalação. O Banco de Dados SQL do Azure não requer configuração específica para habilitar índices de texto completo.
Colunas computadas persistentes indexadas As colunas computadas persistentes indexadas são usadas em SupplierTransactions e CustomerTransactions.
Verificar restrições Uma restrição de verificação relativamente complexa está em Sales.SpecialDeals. Isso garante que um e apenas um de DiscountAmount, DiscountPercentage e UnitPrice esteja configurado.
Restrições únicas Uma construção de muitos para muitos (e restrições únicas) são configuradas para Warehouse.StockItemStockGroups.
Particionamento de tabela (Versão completa do banco de dados) As tabelas Sales.CustomerTransactions e Purchasing.SupplierTransactions são particionadas por ano usando a função de partição PF_TransactionDate e o esquema de partição PS_TransactionDate. O particionamento é usado para melhorar a capacidade de gerenciamento de tabelas grandes.
Processamento de lista É fornecido um tipo de tabela de exemplo Website.OrderIDList. Ela é usada por um procedimento de exemplo Website.InvoiceCustomerOrders. O procedimento usa CTEs (Expressão de Tabela Comum), TRY/CATCH, JSON_MODIFY, XACT_ABORT, NOCOUNT, THROW e XACT_STATE para demonstrar a capacidade de processar uma lista de pedidos em vez de apenas um único pedido, para minimizar viagens de ida e volta do aplicativo ao mecanismo de banco de dados.
Compactação GZip Na exibição Warehouse.VehicleTemperature, sua tabela contém dados completos do sensor. Mas quando esses dados tiverem alguns meses, eles serão compactados para conservar espaço. A função COMPRESS usa compactação GZip.

A exibição Website.VehicleTemperatures usa a função DECOMPRESS ao recuperar dados que foram compactados anteriormente.
Repositório de Consultas O Repositório de Consultas está habilitado no banco de dados. Depois de executar algumas consultas, execute as seguintes etapas:

1. Abra o banco de dados no Management Studio.
2. Abra o nó Repositório de Consultas, que está sob o banco de dados.
3. Abra o relatório Principais Consultas de Consumo de Recursos. Confira as execuções de consulta e veja os planos para as consultas que você acabou de executar.
STRING_SPLIT A coluna DeliveryInstructions na tabela Sales.Invoices tem um valor delimitado por vírgulas que pode ser usado para demonstrar STRING_SPLIT.
Auditoria A Auditoria do SQL Server pode ser habilitada neste banco de dados de exemplo executando a seguinte instrução no banco de dados:

EXECUTE [Application].[Configuration_ApplyAuditing]

No Banco de Dados SQL do Azure, a auditoria é configurada por meio do portal do Azure.

As operações de segurança que envolvem logons, funções e permissões são registradas em todos os sistemas em que a auditoria está habilitada (incluindo sistemas de edição padrão). A auditoria é direcionada ao log do aplicativo porque ela está disponível em todos os sistemas e não requer permissões adicionais. Um aviso é dado que, para maior segurança, ela deve ser redirecionada para o log de segurança ou para um arquivo em uma pasta segura. Um link é fornecido para descrever a configuração adicional necessária.

Para sistemas de avaliação/desenvolvedor/edição empresarial, o acesso a todos os dados transacionais financeiros é auditado.