Banco de Dados

12 jul, 2018

SQL Server 2017 para desenvolvedores .NET

Publicidade

Este artigo agrupa diversos conteúdos que produzi sobre o uso do SQL Server 2017 em aplicações .NET, bem como dicas úteis para desenvolvedores que empreguem esta tecnologia relacional em seus projetos.

SQL Operations Studio: ferramenta multiplataforma para gerenciamento

Alternativa mais leve que o Management Studio para gerenciamento de recursos do SQL Server, Azure SQL Database e AzureSQL Data Warehouse, o SQL Operations Studio é uma solução multiplataforma compatível com Linux e macOS, além de Windows. Vale a pena destacar que este utilitário conta ainda com funcionalidades como exportação para Excel e JSON, além de suporte a ferramentas de linha de comando como PowerShell, Bash, sqlcmd e bcp.

O uso do SQL Operations Studio já foi abordado inclusive em um evento online do Canal .NET:

E também em um artigo que publiquei neste link:

Suporte a Docker

A capacidade de execução de uma instância do SQL Server 2017 a partir de um container Docker é uma excelente alternativa para a montagem de ambientes para testes, além de trazer a possibilidade de uso de diferentes versões deste SGDB em uma mesma máquina.

O comando a seguir fará uso da imagem microsoft/mssql-server-linux:2017-latest para criar um container Linux baseado na versão Developer do SQL Server 2017, com o acesso à instância deste servidor acontecendo na porta 11433:

docker run --name testesqlserver2017 -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=DockerSql2017!" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 11433:1433 -d microsoft/mssql-server-linux:2017-latest

Já a próxima instrução (docker ps) mostrará que a instância está executando na porta 11433:

Executando o comando a seguir para a instância criada:

SELECT @@VERSION

PRINT @@VERSION

Teremos como resultado, a string:

Microsoft SQL Server 2017 (RTM-CU6) (KB4101464) — 14.0.3025.34 (X64)
Apr 9 2018 18:00:41
Copyright © 2017 Microsoft Corporation
Developer Edition (64-bit) on Linux (Ubuntu 16.04.4 LTS)

Suporte a JSON

A possibilidade de converter diretamente um conjunto de informações para o padrão JSON (presente desde a versão 2016 do SQL Server) evita a codificação de inúmeras classes em uma API REST criada em .NET, além de dispensar a execução de custosas operações de serialização/deserialização de objetos que seriam devolvidos como retorno do projeto considerado. No artigo a seguir, temos um exemplo disto utilizando o ASP.NET Core e o SQL Server 2017:

Para a gravação de dados no formato JSON, a recomendação é que se utilize uma coluna definida como NVARCHAR(MAX), informando-se em tais campos strings em conformidade com este padrão. O próximo script exemplifica isto por meio da coluna Detalhes:

CREATE TABLE dbo.LogErros(
	Id int IDENTITY(1,1) NOT NULL,
	Sistema varchar(50) NOT NULL,
	DataOcorrencia datetime NOT NULL,
	Detalhes nvarchar(max) NULL,
	CONSTRAINT PK_LogErros PRIMARY KEY (Id)
)
GO

A recuperação de informações de uma coluna que contém dados em JSON é possível graças à função JSON_VALUE, bastando referenciar os diferentes níveis de um valor neste formato com o caracter “.” (ponto) — o primeiro nível sempre será indicado por “$” (cifrão). No exemplo a seguir, se observa o uso desta função tanto na recuperação de valores, quanto no filtro de uma query:

SELECT Id
      ,Sistema
      ,DataOcorrencia
      ,JSON_VALUE(Detalhes, '$.ClassName') AS TipoExcecao
      ,JSON_VALUE(Detalhes, '$.Message') AS Mensagem
	  ,Detalhes
FROM dbo.LogErros
WHERE JSON_VALUE(Detalhes, '$.ClassName') = 'System.IO.FileNotFoundException'

Já a imagem seguinte traz um resultado da execução desta instrução:

Dynamic Data Masking: protegendo a exibição de dados sensíveis

O SQL Server conta desde a versão 2016 com um recurso chamado Dynamic Data Masking, o qual permite mascarar a visualização de informações de maneira rápida e sem grandes complicações. Este mecanismo se baseia na substituição de todo um conteúdo (ou partes deste) por caracteres específicos, garantindo assim a confidencialidade de dados sensíveis.

Já abordei o uso prático desta funcionalidade no seguinte artigo:

A função TRIM

Também acrescentada na versão 2016 do SQL Server, a função TRIM substitui finalmente o uso combinado de LTRIM e RTRIM na remoção de espaços adicionais nas extremidades de uma string. Este melhoramento simplificará em muito a codificação de instruções voltadas ao tratamento de textos.

Tomando como exemplo as instruções a seguir:

DECLARE @TEXTO_EXEMPLO VARCHAR(20) = '       Exemplo      '

SELECT @TEXTO_EXEMPLO AS TextoExemplo,
       LEN(@TEXTO_EXEMPLO) AS TamanhoTextoExemplo,
       TRIM(@TEXTO_EXEMPLO) AS TextoExemploTratado,
       LEN(TRIM(@TEXTO_EXEMPLO)) AS TamanhoTextoExemploTratado

Teremos como resultado:

Boa parte destes mesmos tópicos foram cobertos em outro evento online do Canal .NET:

Referências