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

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

Publicado em fevereiro 16, 2012, em Administração, SQL Server 2012, SQL Server Denali, VirtualPass e marcado como , , . Adicione o link aos favoritos. 2 Comentários.

Deixe uma resposta

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

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: