Partager via


SQL Server 2012 - Base de données contenue (fr-FR)


Introduction

Cet article a été écrit par Ozimar Henrique sur le site Technet Wiki Português / Brésilienne : SQL 2012: Contained Database

Pendant le processus de migration de bases de données, il y a toujours du travail supplémentaire parce que lors de la migration on perd le lien vers la Logon. La solution était de créer une base de données indépendante.

Une base de données contenue est isolé du server instance et d'autres bases de données.

SQL Server 2012 permet à l'utilisateur d'isoler l'instance de base de données et dispose de 4 fonctions:

  • La plupart des métadonnées qui décrivent la base de données est stockée dans la base de données elle-même (au lieu de stocker le maître).
  • Toutes les métadonnées sont définies en utilisant le même classement
  • l'authentification de l'utilisateur peut être faite par la base de données, en réduisant la dépendance du Logon de l'instance.
  • Objets DMV, XEvents, etc., ont des informations sur la base de données contenue.

1. Configuration du server

Pour profiter des fonctionnalités de base de données contenue nous devrons configurer le serveur:

sp_configure 'contained database authentication',1
GO
RECONFIGURE

2. Création de la base

Maintenant, nous allons créer la base de données avec l'option Contained:

USE master
GO
CREATE DATABASE TesteCD CONTAINMENT = PARTIAL
GO

3. Création de l'utilisateur

Création de l'utilisateur, sans avoir besoin de se lier au Logon:

USE TesteCD
GO
CREATE USER CDUser WITH PASSWORD = ''
GO

4. Migration des logons SQL Server pour les utilisateurs

Si vous avez déjà un utilisateur normal et vous voulez migrer vers type Isolé, vous pouvez utiliser la procédure sp_migrate_user_to_contained.

Elle dispose de 3 paramètres:

  • @username = nom de l'utilisateur qui apparaît sur une base de données mais c'est une SQL Server Login.
  • @rename = 2 valeurs - copy_login_name (crée un nouvel utilisateur avec le nom d'utilisateur plutôt que l'utilisateur), keep_name (conserve le nom d'utilisateur)
  • @Disablelogin = 2 valeurs - disable_login (désactive l'enregistrement en Master), do_not_disable_login (Ne désactive pas l'enregistrement sur Master).
EXEC SP_MIGRATE_USER_TO_CONTAINED @username = 'Ozimar' , @rename = 'keep_name' , @disablelogin ='do_not_disable_login'

5. Connexion à la base de données contenue

C'est nécessaire de passer la chaîne texte de connexion de base de données ou de le changer dans la boîte de connexion de SSMS.

Une fois connecté, note qu'il ne voit pas des autres bases de données:


6. Accès aux autres bases de données

SELECT * FROM Database2.dbo.Client

Cette commande génère une erreur parce que l'utilisateur n'a pas accès à une autre base de données.

Pour résoudre cela, nous devons donner accès à l'utilisateur Guest.

Use Database2
GO
GRANT CONNECT TO Guest
GO

7. Limitations

  • DMV et XEvents aideront à identifier les objets "pas isolés" et qui posent des risques pour déplacer la base de données.
  • Réplication ne peut pas être utilisée, ainsi que Change Data Capture ou Suivi des modifications (Change Tracking).
  • Utilisation des objets qui dépendent de fonctions intégrées pour modifier le classement.
  • Utilisation de l'authentification Kerberos. Si vous avez besoin d'une authentification à ce niveau utilisez de l'authentification Windows.

Autres langues

SQL 2012: Contained Database (pt-BR)


Références

Bases de données SQL Server 2012 contenue: http://technet.microsoft.com/en-us/library/ff929071.aspx