SQL Server on Linux – Parte 3
Olá pessoal, tudo certo?
Depois de uma pequena pausa para as festas de final de ano, estamos de volta para concluir a série de posts do SQL Server on Linux.
No post de hoje vamos fazer alguns testes no SQL Server vNext no Linux, como foi dito no primeiro post, por ser uma versão CTP, ainda existe uma série de limitações e bugs.
Primeiro vamos criar um usuário novo, o processo de criação de usuários é o mesmo das versões SQL Server, as roles permanecem as mesmas, porém há uma restrição, só podemos criar usuário com autenticação do SQL Server, pois a integração com o Windows ainda não está disponível.
A forma de criar uma database continua a mesma, porém devemos nos atentar na restrição do diretório onde vamos armazenar os nossos arquivos de dados e log, nesta versão ainda não podemos alterar os diretórios dos dados, nem mesmo os arquivos do Tempdb.
CREATE DATABASE [DBTESTE2] CONTAINMENT = NONE ON PRIMARY ( NAME = N'DBTESTE2', FILENAME = N'C:\var\opt\mssql\data\DBTESTE2_DATA.mdf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) LOG ON ( NAME = N'DBTESTE2_log', FILENAME = N'C:\var\opt\mssql\data\DBTESTE2_Log.ldf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) GO
Caso você tente alterar o caminho dos dados, você vai receber uma mensagem de erro, informando que não é possível acessar o diretório.
Para realizar um restore de database o processo é o padrão que já estamos acostumados, porém, temos um ponto de atenção onde você tem que copiar o arquivo de backup para o servidor Linux, no meu caso eu utilizei uma ferramenta chamada WinSCP-5.9.3, com ela é mais simples fazer copias de arquivos do Windows para o Linux.
Após verificar o arquivo, o processo de restore é o padrão que já conhecemos.
RESTORE DATABASE AdventureWorks from DISK = '/tmp/BKP\AdventureWorks2016CTP3.bak' WITH MOVE 'AdventureWorks2016CTP3_Data' TO 'C:\var\opt\mssql\data\AdventureWorks2016CTP3_Data.mdf', MOVE 'AdventureWorks2016CTP3_Log' TO 'C:\var\opt\mssql\data\AdventureWorks2016CTP3_Log.ldf', MOVE 'AdventureWorks2016CTP3_mod' TO 'C:\var\opt\mssql\dataAdventureWorks2016CTP3_mod.ndf', STATS=10
A feature In-Memory OLTP está disponível. Para utilizar, primeiro devemos validar se o banco está com o nível de compatibilidade suportado (SQL Server 2014 (120) ou superior).
SELECT d.compatibility_level FROM sys.databases as d WHERE d.name = Db_Name(); GO
Após validar precisamos habilitar a feature no banco.
ALTER DATABASE CURRENT SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=ON GO
Habilitada a feature no banco, precisamos criar um filegroup e um arquivo de dados.
ALTER DATABASE DBTESTE ADD FILEGROUP DBTESTE_mod CONTAINS memory_optimized_data GO ALTER DATABASE DBTESTE ADD FILE (NAME='DBTESTE_mod', FILENAME='c:\var\opt\mssql\data\DBTESTE_mod') TO FILEGROUP DBTESTE_mod GO
Criei uma tabela In-Memory de teste.
CREATE TABLE Teste_IM ( [ID] int IDENTITY(1,1) NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 100000), [Nome] VARCHAR(32) NOT NULL, [Idade] int NULL ) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA)
Fiz uma carga com dados aleatórios para popular a tabela.
INSERT INTO #teste SELECT 20 + CONVERT(INT, (30-10+1)*RAND()) GO 50 DECLARE @IMtable TABLE (FullName varchar(50), Idade int ) INSERT @IMtable SELECT FirstName + ' '+ LastName,b.idade FROM AdventureWorks.person.person a CROSS APPLY #teste b INSERT INTO DBTESTE..Teste_Im SELECT * FROM @IMtable
Outra feature que está disponível é a Query Store.
Features de segurança do SQL Server 2016, como o Data Masking, Row-Level-Security e TDE também estão disponíveis, para mais informações (clique aqui).
Bom pessoal, por hoje é isso.
Já conhece a comunidade de SQL Server no Espírito Santo? então venha conhecer http://www.tiagoneves.net/blog/comunidade-sql-server-es/
Um abraço.
Tiago Neves