[SQL 2012] Contained DataBase
Durante o processode migração de databases, sempre temos um trabalho extra, pois durante amigração perdemos o vínculo com o Login. A solução foi criar um databaseindependente.
Um ContainedDatabase é um database isolado da instância e dos outros databases.
O SQL Server 2012 ajuda o usuário a isolar o database da instância e possui 4características:
-Maioria dos metadados que descreve o database é armazenado no próprio database(ao invés de armazenar no Master).
-Todos Metadados são definidos usando o mesmo Collation
-Autenticação de Usuário pode ser feito pelo Database, reduzindo a dependênciado Login da instância.
-Objetos DMVs, XEvents, etc, possuem informações sobre o Contained Database.
1) CONFIGURAÇÃO DOSERVIDOR
Para usufruir dos recursos do ContainedDatabase precisamos configurar o servidor:
sp_configure 'contained database authentication',1
GO
RECONFIGURE
2) CRIAÇÃO DODATABASE
Agora criaremos o Database com o opçãode Contained:
USE master
GO
CREATEDATABASE TesteCD CONTAINMENT = PARTIAL
GO
3) CRIAÇÃO DOUSUÁRIO
Criação do Usuário, sem a necessidade devínculo com o Login:
USE TesteCD
GO
CREATEUSER CDUser WITH PASSWORD = 'SQL2K12pass'
GO
4) MIGRAÇÃO DE SQLSERVER LOGINS PARA DATABASE USERS
Se você já possui umusuário normal e quer migrar para o tipo Contained, você pode utilizar aprocedure sp_migrate_user_to_contained.
Ela possui 3parâmetros:
-@username=Nome de um usuário que consta no database, mas é um SQL ServerLogin.
-@rename= 2 valores - copy_login_name(cria o novo usuário com o nome do Loginao invés do usuário), keep_name(mantém o nome do usuário)
-@disablelogin= 2 valores - disable_login(desabilita o login na Master) ,do_not_disable_login(Não desabilita o login na Master).
EXEC SP_MIGRATE_USER_TO_CONTAINED @username='ozimar', @rename='keep_name',@disablelogin='do_not_disable_login'
É necessário passar o Database na string de conexão ou alterá-lo na Caixa deconexão do SSMS.

Após logar, terá esta visão:

6) ACESSANDO OUTROSDATABASES
SELECT * FROMDatabase2.dbo.Cliente
Este comando irágerar um erro, pois o usuário utilizado não tem acesso a outro database.
Para resolver isso temos que dar acesso ao usuário Guest.
Use Database2
GO
GRANTCONNECT TO guest
GO
7) LIMITAÇÕES
-DMVs e XEvents vão ajudar a identificar objetos "not contained" eque representam riscos ao mover o database.
-Não pode ser utilizado Replication, Change Data Capture, or Change Tracking.
-Utilizar objetos que depende de Built-in Functions com mudança de Collation.
-Uso do Kerberos Authentication. Caso precise de uma autenticação neste níveluse Windows Authentication.
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.