Instances d'utilisateur pour les non administrateurs

Mis à jour : 5 décembre 2005

L'instance d'utilisateur est une fonctionnalité qui permet aux non-administrateurs d'exécuter une version locale de SQL Server dans leur propre compte. Grâce à cette fonctionnalité, les non-administrateurs possèdent des droits de propriétaire de base de données sur l'instance qui s'exécute dans leur propre compte.

L'instance d'utilisateur, également désignée comme instance enfant ou cliente, est une instance de SQL Server qui est générée par l'instance parente (l'instance principale exécutée en tant que service, telle que SQLExpress) pour le compte d'un utilisateur. L'instance d'utilisateur s'exécute en tant que processus utilisateur dans le contexte de sécurité de cet utilisateur. L'instance d'utilisateur est isolée de l'instance parente et de toutes les autres instances d'utilisateur exécutées sur l'ordinateur. La fonction d'instance d'utilisateur est également appelée RANU (« Run As Normal User », exécution en tant qu'utilisateur normal).

ms143684.note(fr-fr,SQL.90).gifRemarque :
À des fins de cohérence, la documentation en ligne de SQL Server Express fait référence à cette fonctionnalité comme instance d'utilisateur. Cette fonctionnalité est également disponible uniquement avec SQL Server 2005 Express Edition.

Pourquoi l'instance d'utilisateur ?

Vous trouverez ci-dessous les raisons qui expliquent les avantages à utiliser le modèle d'instance d'utilisateur :

  • L'objectif principal du modèle d'instance d'utilisateur est d'isoler les utilisateurs non-administrateurs de SQL Server, ce qui permet aux utilisateurs d'attacher des bases de données arbitraires sans risque de compromettre un autre utilisateur. Cet isolement est rendu possible en générant une instance distincte de SQL Server pour chaque utilisateur.
  • Outre l'isolement, l'objectif de SQL Server Express est également la convivialité pour les utilisateurs non-administrateurs. De nombreux utilisateurs Windows possèdent des comptes avec des privilèges administratifs. Malheureusement, une exécution en tant qu'administrateur expose l'ordinateur d'un utilisateur à des logiciels malveillants. Cependant, ces logiciels exécutés par des utilisateurs non-administrateurs ne peuvent pas causer de modifications à l'échelle du système, leur impact est donc limité.

Présentation de l'instance d'utilisateur

Le modèle d'instance d'utilisateur peut se résumer avec les points suivants :

  • Une instance parente de SQL Server doit être en cours d'exécution pour générer des instances d'utilisateur.
  • Lorsque vous installez SQL Server Express, le programme d'installation crée un dossier Template Data qui stocke des bases de données système propres utilisées par le processus d'instance d'utilisateur, si celui-ci est appelé.
  • Pour appeler l'instance d'utilisateur, utilisez le mot clé de chaîne de connexion user instance dans SQLClient, qui peut prendre la valeur true ou false, la valeur par défaut étant false. Lorsqu'il a la valeur false, aucune prise en charge d'instance d'utilisateur n'est appliquée et le comportement d'origine est conservé. Si user instance a la valeur true, le modèle d'instance d'utilisateur est activé au cours de l'appel connection.open ADO. NET.
    ms143684.note(fr-fr,SQL.90).gifRemarque :
    L'espace de noms System.Data.SqlClient définit un jeu de classes qui permet d'accéder à la base de données SQL Server et qui est appelé collectivement fournisseur de données .NET pour SQL Server, ou SqlClient. Les applications gérées interagissent avec SqlClient via l'API ADO .NET pour interroger et manipuler des données et des informations de schéma stockées dans des bases de données SQL Server. Pour plus d'informations, consultez la documentation de Visual Studio 2005.
  • Lors de la création de la première instance d'utilisateur, quel qu'il soit, les bases de données système sont copiées du dossier Template Data vers un chemin d'accès sous le répertoire référentiel des données de l'application locale de l'utilisateur, afin d'être utilisées exclusivement par l'instance d'utilisateur. Ce chemin d'accès est généralement lecteur:\Documents and Settings\Username\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS.**
  • L'utilisateur se connecte à cette nouvelle instance d'utilisateur SysAdmin et utilise la base de données même si cet utilisateur n'est pas un administrateur sur l'instance parente.
ms143684.note(fr-fr,SQL.90).gifRemarque :
Les bases de données utilisateur dérivent leurs propriétés READONLY en fonction des attributs et des autorisations de système de fichier du fichier primaire de la base de données. Les paramètres ALTER DATABASE SET READ_ONLY/READ_WRITE ne s'appliquent pas.
  • Lorsque l'instance d'utilisateur est générée, SQLClient redirige tous les appels vers cette instance.

Chaîne de connexion pour l'utilisation de l'instance d'utilisateur

conn string =
"Data Source=.\\SQLExpress" +
"integrated security=true;" + 
"attachdbfilename=|DataDirectory|\mydb.mdf;" +
"user instance=true"
string connstr = GetConnectionString(); // get from config
using(SqlConnection conn = new SqlConnection(connstr)) {
  // this will connect to the user instance, not to the 
  // default SSE instance
  conn.Open();
  // use the connection to the user instance
}

Connexion à une instance d'utilisateur

La prise en charge du protocole réseau pour des instances d'utilisateur s'effectue uniquement par l'intermédiaire de canaux nommés locaux, ce qui implique l'impossibilité faite à un utilisateur de se connecter à une instance d'utilisateur à partir d'un ordinateur distant.

Pour plus d'informations sur la connexion à une instance d'utilisateur à l'aide de SQL Server Management Studio, consultez « SQL Server Management Studio et SQL Server Express » dans la documentation en ligne de SQL Server Express.

ms143684.note(fr-fr,SQL.90).gifRemarque :
Pour plus d'informations sur les canaux nommés ou les protocoles réseau, consultez l'aide du Gestionnaire de configuration SQL Server. Pour accéder à cette aide, dans le menu Démarrer, cliquez sur Exécuter, puis tapez SQLServerManager.msc. Cette opération ouvre le Gestionnaire de configuration SQL Server. Pour accéder à l'aide, cliquez sur le menu Aide. Pour afficher les protocoles réseau pour SQL Server, cliquez sur Configuration du réseau SQL Server 2005.

Administration des instances d'utilisateur

Si vous êtes un administrateur et souhaitez gérer des instances d'utilisateur, les informations suivantes sont utiles.

Afficher/procédure stockée/Transact-SQL Description

Select * from sys.dm_os_child_instances

Vous permet d'exécuter une vue virtuelle qui répertorie toutes les instances d'utilisateur générées sur l'instance parente.

SHUTDOWN

Arrête SQL Server. Utilisez cette commande pour arrêter l'instance d'utilisateur. Pour plus d'informations sur la manière d'utiliser SHUTDOWN, consultez SHUTDOWN (Transact-SQL) dans la documentation en ligne de SQL Server 2005.

sp_configure 'user instances enabled'

Contrôle l'activation ou la désactivation d'une fonctionnalité d'instance d'utilisateur.

Pour activer la génération des instances d'utilisateur, utilisez :

sp_configure 'user instances enabled','1' 

RECONFIGURE;

GO

Pour désactiver la génération des instances d'utilisateur, utilisez :

sp_configure 'user instances enabled','0'.

sp_configure ‘user instance timeout’

Utilisez :

sp_configure 'show advanced options', 1;

RECONFIGURE;

GO

sp_configure 'user instance timeout', 5;

GO

Où 5 correspond à la valeur minimale et 65535 à la valeur maximale.

Vous avez besoin de sp_configure ‘show advanced options’ pour afficher et définir le délai d'attente. Pour plus d'informations sur show advanced options, consultez Définition des options de configuration de serveur dans la documentation en ligne de SQL Server 2005.

Vous pouvez définir la valeur d'expiration de l'instance d'utilisateur dans l'instance parente et l'instance d'utilisateur.

Lorsqu'une instance d'utilisateur démarre, elle obtient toujours la valeur d'expiration de l'instance parente. Cependant, une fois que l'instance d'utilisateur démarre, elle peut utiliser sp_configure pour modifier la valeur d'expiration qui n'est valide que pour cette instance spécifique.

Limitations relatives à l'utilisation des instances d'utilisateur

Lorsque vous utilisez des instances d'utilisateur, certaines fonctionnalités SQL Server Express peuvent ne pas fonctionner comme prévu. La liste suivante décrit les limitations possibles :

  • Un utilisateur ne peut avoir qu'une seule instance d'utilisateur.
  • La réplication sera désactivée.
  • L'instance d'utilisateur ne prend pas en charge l'authentification SQL Server. Seule l'authentification Windows est prise en charge.
  • La prise en charge des protocoles réseau pour les instances d'utilisateur est limitée aux canaux nommés locaux.
  • L'instance d'utilisateur partage les entrées de registre de l'instance parente.
  • Il n'y a pas de prise en charge pour l'instance d'utilisateur avec le code natif. Cette fonctionnalité n'est prise en charge qu'avec ADO .NET.
  • La recherche de texte intégral n'est pas prise en charge sur une instance d'utilisateur SQL Server Express.
  • Le fournisseur WMI pour les événements de serveur ne sera pas pris en charge sur les instances d'utilisateur produites dynamiquement. Cela devrait toutefois être le cas sur l'instance SQL Server Express parente. Pour plus d'informations sur le fournisseur WMI, consultez la rubrique relative au fournisseur WMI pour les événements de serveur dans la documentation en ligne SQL Server 2005.

Voir aussi

Autres ressources

Centre de téléchargement de la documentation en ligne de SQL Server 2005

Aide et Informations

Assistance sur SQL Server 2005