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]

Sobre Marcos Freccia

Especialista em SQL Server.

Publicado em fevereiro 16, 2012, em Administração, SQL Server 2012, SQL Server Denali, VirtualPass e marcado como , , . Adicione o link aos favoritos. Deixe um comentário.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s