SQL Server 2012 Contained Databases

Olá Pessoal,

Atualmente quando precisamos nos conectar em uma determinada base de dados, precisamos primeiramente criar um login na instancia do SQL Server e posteriormente atribui-lá a base de dados desejada. Uma segunda opção que temos é criar um login e atribuir a role de sysadmin que assim poderá se conectar em qualquer base de dados.

Agora entra a parte do SQL Server 2012 – Contained Databases. Isso nada mais nada menos trata-se de uma nova técnica que nos permite a criação de usuários diretamente na base de dados sem a necessidade da criação de um login, isso sem sombra de duvidas é digamos uma “mão na roda” no momento de realizar migrações das bases, pois sempre acontece o famoso problema dos logins perderem o relacionamento com os usuários e acabamos então por ter que realizar a criação do novo usuário. Com o Contained Databases os usuários ficam atrelados nas base de dados e ao mover para uma outra instancia não precisamos recria-ló. A parte importante a lembrar é que o processo de utilização de contained databases é um pouco diferente do comum, e que vou então demonstrar logo abaixo como realizar essa configuração.

O primeiro passo é habilitar a opção do Contained Databases na instancia do SQL Server.

HabilitandoNaInstancia

ou via T-SQL

sp_configure ‘contained database authentication’,1
go
RECONFIGURE

Após habilitar a opção do Contained Databases, você devera criar a base de dados que será do tipo Contained. Basta realizar conforme figura abaixo.

CriandoDatabase

ou via T-SQL

USE master
go
CREATE DATABASE ContainedDatabase
CONTAINMENT = PARTIAL
GO
USE ContainedDatabase
GO
CREATE USER ContainedDatabaseUser WITH PASSWORD = ‘SQLServer2012’

Pronto você já criou uma ContainedDatabase, mas agora como logar nessa base?

Basta abrir uma nova conexão.

ConectandoDatabase

Quando você clicar em conectar, você receberá o seguinte erro.

ErroLogin

Porque???

Lembre-se que o usuário não esta na base de dados master, mas sim na base que criamos de nome ContainedDatabase. Basta ir em Connection Properties e colocar o nome da base de dados para a conexão.

ConectandoBaseEspecifica

Pronto, agora é só clicar em Connect, e você terá a seguinte visão.

Explorer

Realizando a conexão via SQLCMD.

SQLCMD

Lembre-se que alguns recursos que ficam fora dessa base de dados não poderão ser acessados, e isso é um detalhe muito importante a ser lembrado.

Pessoal era isso que eu tinha para mostrar, espero que tenham gostado dessa nova funcionalidade. No decorrer do tempo vou demonstrando mais técnicas que poderemos utilizar como restore dessa base em outra instancia, auditoria, entre outros.

Att,
Marcos Freccia
[MCTS|MCITP|MCT SQL Server 2008]

Advertisements

About Marcos Freccia

MVP em SQL Server (Data Plataform) , especialista em SQL Server, e atualmente trabalhando com Microsoft Azure!

Posted on February 16, 2012, in Administração, SQL Server 2012, SQL Server Denali, VirtualPass and tagged , , . Bookmark the permalink. 2 Comments.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: