Méthode GenerateDatabaseRightsScript (WMI MSReportServer_ConfigurationSetting)

Génère un script SQL pouvant être utilisé pour accorder des droits d'utilisateur à la base de données du serveur de rapports et à d'autres bases de données requises pour l'exécution d'un serveur de rapports. Il est prévu que l'appelant se connecte au serveur de base de données SQL Server et exécute le script.

Syntaxe

Public Sub GenerateDatabaseRightsScript(ByVal UserName As String, _
    ByVal DatabaseName As String, ByVal IsRemote As Boolean, _
    ByVal IsWindowsUser As Boolean, ByRef Script As String, _
    ByRef HRESULT As Int32)
public void GenerateDatabaseRightsScript(string UserName, string DatabaseName, bool IsRemote, bool IsWindowsUser, out string Script, 
out Int32 HRESULT);

Paramètres

  • UserName
    Nom d'utilisateur ou identificateur de sécurité Windows (SID) de l'utilisateur auquel le script accorde des droits.

  • DatabaseName
    Nom de la base de données à laquelle le script accordera l'accès à l'utilisateur.

  • IsRemote
    Valeur booléenne indiquant si la base de données est distante du serveur de rapports.

  • IsWindowsUser
    Valeur booléenne qui indique si le nom d'utilisateur spécifié est un utilisateur Windows ou un utilisateur SQL Server.

  • Script
    [out] Chaîne contenant le script SQL Server généré.

  • HRESULT
    [out] Valeur indiquant si l'appel a réussi ou a échoué.

Valeur de retour

Retourne un paramètre HRESULT qui indique si l'appel de la méthode a réussi ou a échoué. La valeur 0 indique que l'appel de la méthode a réussi. Toute autre valeur indique qu'une erreur s'est produite.

Notes

Si DatabaseName est vide, IsRemote est ignoré et la valeur du fichier de configuration du serveur de rapports est utilisée comme nom de base de données.

Si IsWindowsUser a la valeur true, UserName doit être au format <domaine>\<nom d'utilisateur>.

Lorsque IsWindowsUser a la valeur true, le script généré accorde des droits de connexion à l'utilisateur pour le serveur SQL Server (en définissant la base de données du serveur de rapports comme base de données par défaut) et il accorde le rôle RSExec sur la base de données du serveur de rapports, la base de données temporaire du serveur de rapports, la base de données master et la base de données système MSDB.

Lorsque IsWindowsUser a la valeur true, la méthode accepte les SID Windows standard comme entrée. Lorsqu'un nom de compte de service ou un SID Windows standard est fourni, il est converti en une chaîne de nom d'utilisateur. Si la base de données est locale, le compte est converti en la représentation localisée correcte du compte. Si la base de données est distante, le compte est représenté en tant que compte de l'ordinateur.

Le tableau suivant répertorie les comptes qui sont convertis et indique leur représentation distante.

Compte/SID converti

Nom commun

Nom distant

(S-1-5-18)

Système local

<Domaine>\<Nom d'ordinateur>$

.\LocalSystem

Système local

<Domaine>\<Nom d'ordinateur>$

ComputerName\LocalSystem

Système local

<Domaine>\<Nom d'ordinateur>$

LocalSystem

Système local

<Domaine>\<Nom d'ordinateur>$

(S-1-5-20)

Service réseau

<Domaine>\<Nom d'ordinateur>$

NT AUTHORITY\NetworkService

Service réseau

<Domaine>\<Nom d'ordinateur>$

(S-1-5-19)

Service local

Erreur (voir ci-dessous)

NT AUTHORITY\LocalService

Service local

Erreur (voir ci-dessous)

Dans Windows 2000, si vous utilisez un compte intégré et que la base de données du serveur de rapports est distante, une erreur est retournée.

Si le compte intégré LocalService est spécifié et que la base de données du serveur de rapports est distante, une erreur est retournée.

Lorsque IsWindowsUser a la valeur True et qu'il est nécessaire de convertir la valeur indiquée dans UserName, le fournisseur WMI détermine si la base de données du serveur de rapports réside sur le même ordinateur ou sur un ordinateur distant. Pour déterminer si l'installation est locale, le fournisseur WMI compare la propriété DatabaseServerName à la liste de valeurs suivante. Si une correspondance est trouvée, la base de données est locale. Dans le cas contraire, elle est distante. La casse n'est pas prise en compte lors de la comparaison.

Valeur de DatabaseServerName

Exemple

“.”

“(local)”

“LOCAL”

hôte local

<Nom ordinateur>

labtest14

<FQDN ordinateur>

example.redmond.microsoft.com

<Adresse IP>

180.012.345,678

Lorsque IsWindowsUser a la valeur true, le fournisseur WMI appelle LookupAccountName pour obtenir le SID du compte, puis il appelle LookupAccountSID pour obtenir le nom devant être inséré dans le script SQL Server. De cette manière, le nom du compte utilisé réussit systématiquement la validation SQL Server.

Lorsque IsWindowsUser a la valeur false, le script généré accorde le rôle RSExec sur la base de données du serveur de rapports, la base de données temporaire du serveur de rapports et la base de données système MSDB.

Lorsque IsWindowsUser a la valeur false, l'utilisateur SQL Server doit déjà exister sur le serveur SQL Server pour que le script puisse s'exécuter correctement.

Si aucune base de données de serveur de rapports n'est spécifiée pour le serveur de rapports, l'appel de GrantRightsToDatabaseUser retourne une erreur.

Le script généré prend en charge SQL Server 2000, SQL Server 2005 et SQL Server 2008.

Conditions requises

Espace de noms : root\Microsoft\SqlServer\ReportServer\RS_<EncodedInstanceName>\v10\Admin

Plateforme : Windows Server 2003, Datacenter Edition ; Windows Server 2003, Enterprise Edition ; Windows Server 2003, Standard Edition ; Windows Vista ; Windows XP Professionnel avec Service Pack 2 (SP2) ou Service Pack 1 (SP1) ; ou Windows 2000 (toutes versions)