O mascaramento de dados é definido a nível de coluna no create table ou através do alter table (dinamic data mask - DDM) para "anonimizar" um dado para atender demandas da LGPD.

Exemplo prático, mascarar cpf na tabela pf

 

ALTER TABLE contato  ALTER COLUMN ds_contato ADD MASKED WITH (FUNCTION = 'email()')

para remover a máscara:

ALTER TABLE contato  ALTER COLUMN ds_contato drop MASKED






Referência técnica:

[1] https://learn.microsoft.com/pt-br/sql/relational-databases/security/dynamic-data-masking?view=sql-server-ver16

 

No menu Ferramentas, clique em Opções.

No painel de navegação da janela Opções, clique em Designers. Marque ou desmarque a caixa de seleção Evitar salvar alterações que exijam recriação de tabela e clique em OK.

Queremos habilitar o cmdshell para executar comandos como esse, para remover um arquivo no disco do servidor do banco de dados:

Xp_cmdshell 'del c:\temp\heredia_1200h.bak'

 

Se xp_cmdshell precisar ser usado, como uma melhor prática de segurança, é recomendável habilitá-lo apenas durante a tarefa real que o exige.

 

USE [msdb]
GO

-- To allow advanced options to be changed.  
EXECUTE sp_configure 'show advanced options', 1;  
GO  
-- To update the currently configured value for advanced options.  
RECONFIGURE;  
GO  
-- To enable the feature.  
EXECUTE sp_configure 'xp_cmdshell', 1;  
GO  
-- To update the currently configured value for this feature.  
RECONFIGURE;  
GO 

 

Respostas:

A opção de configuração 'show advanced options' foi alterada de 0 para 1. Execute a instrução RECONFIGURE para instalar.
A opção de configuração 'xp_cmdshell' foi alterada de 0 para 1. Execute a instrução RECONFIGURE para instalar.

Com o botão direito do mouse sobre a tabela vá ao Design

click no campo que deseja remover a propriedade e coloque-a com o valor "não"

Vide também como habilita e desabilita temporariamente essa propriedade, exemplo:

SET IDENTITY_INSERT [dbo].[uf] ON

INSERT [dbo].[uf] ([sg_uf], [nm_uf], [cd_pais], [cd_uf], [cd_regiao]) VALUES ('AC', 'ACRE', 1, 1, 1)
INSERT [dbo].[uf] ([sg_uf], [nm_uf], [cd_pais], [cd_uf], [cd_regiao]) VALUES ('AM', 'AMAZONAS', 1, 2, 1)
INSERT [dbo].[uf] ([sg_uf], [nm_uf], [cd_pais], [cd_uf], [cd_regiao]) VALUES ('AP', 'AMAPÁ', 1, 3, 1)
INSERT [dbo].[uf] ([sg_uf], [nm_uf], [cd_pais], [cd_uf], [cd_regiao]) VALUES ('AL', 'ALAGOAS', 1, 4, 2)

SET IDENTITY_INSERT [dbo].[uf] OFF
go

Uma demanda que nos surgiu foi criar um vínculo entre dois servidores de banco de dados para que possam trocar informações; o SQL Server seria o banco de dados principal na sede da empresa (local) e o banco de dados MySQL é o seu banco de dados na internet para o e-commerce.

Passo a passo da criação do "Linked Server":

  • Logar no banco de dados SQL Server com o usuário que também será mapeado num usuário no banco de dados MySQL;
  • No banco de dados SQL Server, ir em "Objetos de Servidor" --> "Servidores Vínculados" --> "Provedores" --> "MSDASQL", com o botão direito do Mouse selecione propriedades e marque as seguintes:
  • Criar uma fonte de dados ODBC para o banco de dados remoto MySQL (pode-se baixar o aplicativo em MySQL :: Download Connector/ODBC) , vá em  "Painel de Controle" --> "Sistemas e Segurança" --> "Ferramentas Administrativas" --> "Fontes de Dados ODBC (64 bits)" -- "DNS de Sistemas" --> "Adicionar" 

 

Realize o teste dessa conexão, para verificar se tudo está correto:

  •  Agora vamos criar um servidor vinculado (Linked Server) chamado "SER" utilizando essa conexão ODBC criada acima. a criação será através de um script (também pode ser realizado com a interface gráfica do MS Management Studio):

 

USE [master]
GO

/****** Object: LinkedServer [SER] Script Date: 03/01/2023 23:27:16 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'SER', @srvproduct=N'lojayii', @provider=N'MSDASQL', @datasrc=N'loja365', @provstr=N'DRIVER={MySQL ODBC 8.0 Unicode Driver}; Hostname=loja365.mysql.dbaas.com.br; PORT=3306; DATABASE=loja365; LogonID=lojayii; PASSWORD=tytttrrrW#1968'
/* For security reasons the linked server remote logins password is changed with ######## */


EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'SER',@useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'collation compatible', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'data access', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'dist', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'pub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'rpc', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'rpc out', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'sub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'connect timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'collation name', @optvalue=null
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'lazy schema validation', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'query timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'use remote collation', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

 

Com o botão direito do mouse sobre a nova conexão "SER" teste-a, se tudo ok vamos em frente:

  • com o botão direito do mouse sobre a nova conexão "SER" selecione propriedades e na nova tela selecione "Segurança"

 Mapeie o usuário do banco de dados SQL Server no usuário no banco de dados MySQL remoto, tudo pronto agora é só testar !

 

Referências:

[1] - OPENQUERY (Transact-SQL) - SQL Server | Microsoft Learn