ConfigurationSetting Method – GenerateDatabaseRightsScript (ConfigurationSetting-Methode: GenerateDatabaseRightsScript)

Generiert ein SQL-Skript, mit dem du einem Benutzer Zugriff auf die Datenbank des Berichtsservers gewähren kannst. Darüber hinaus gewährt sie Zugriff auf andere Datenbanken, die für die Ausführung eines Berichtsservers erforderlich sind. Der Aufrufer sollte eine Verbindung mit dem SQL Server-Datenbankserver herstellen und das Skript ausführen.

Syntax

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);  

Parameter

UserName
Der Benutzername oder die Windows-Sicherheits-ID (SID) des Benutzers, dem durch das Skript Berechtigungen erteilt werden.

DatabaseName
Der Name der Datenbank, für die dem Benutzer durch das Skript Zugriff gewährt wird.

IsRemote
Ein boolescher Wert, der angibt, ob es sich vom Berichtsserver aus gesehen um eine Remotedatenbank handelt.

IsWindowsUser
Ein boolescher Wert, der angibt, ob der angegebene Benutzername für einen Windows-Benutzer oder einen SQL Server-Benutzer steht.

Skript
[out] Eine Zeichenfolge, die das generierte SQL Server-Skript enthält.

HRESULT
[out] Wert, der angibt, ob der Aufruf erfolgreich war oder zu einem Fehler geführt hat.

Rückgabewert

Gibt HRESULT zurück, wodurch der Erfolg oder das Fehlschlagen des Methodenaufrufs angegeben wird. Der Wert 0 (null) gibt an, dass der Methodenaufruf erfolgreich war. Ein Wert ungleich 0 (null) gibt an, dass ein Fehler aufgetreten ist.

Bemerkungen

Wenn DatabaseName leer ist, wird IsRemote ignoriert und der Wert aus der Konfigurationsdatei des Berichtsservers als Datenbankname verwendet.

Wenn IsWindowsUser auf TRUE festgelegt ist, muss UserName das Format <domain>\<username> aufweisen.

Wenn IsWindowsUser auf TRUE festgelegt ist, werden dem Benutzer durch das generierte Skript Anmeldeberechtigungen für SQL Server erteilt, wobei die Berichtsserver-Datenbank als Standarddatenbank festgelegt wird. Außerdem wird dem Benutzer die Rolle RSExec für die Berichtsserver-Datenbank, die temporäre Berichtsserver-Datenbank, die Hauptdatenbank und die MSDB-Systemdatenbank erteilt.

Wenn IsWindowsUser auf truefestgelegt ist, akzeptiert die Methode standardmäßige Windows-SIDs als Eingabe. Bei der Angabe einer Standard-Windows-SID oder eines Dienstkontonamens wird der Name in eine Zeichenkette für den Benutzernamen übersetzt. Falls es sich bei der Datenbank um eine lokale Datenbank handelt, wird das Konto in die richtige lokalisierte Darstellung des Kontos übersetzt. Bei einer Remotedatenbank wird das Konto als das Konto des Computers dargestellt.

In der folgenden Tabelle sind Konten, die übersetzt werden, und ihre Remotedarstellung aufgeführt.

Konto/SID, das bzw. die übersetzt wird Allgemeiner Name Remotename
(S-1-5-18) Lokales System <Domäne>\<Computername>$
.\LocalSystem Lokales System <Domäne>\<Computername>$
ComputerName\LocalSystem Lokales System <Domäne>\<Computername>$
LocalSystem Lokales System <Domäne>\<Computername>$
(S-1-5-20) Netzwerkdienst <Domäne>\<Computername>$
NT AUTHORITY\NetworkService Netzwerkdienst <Domäne>\<Computername>$
(S-1-5-19) Lokaler Dienst Fehler
NT AUTHORITY\LocalService Lokaler Dienst Fehler

Wenn Sie unter Windows 2000 ein integriertes Konto verwenden und es sich bei der Berichtsserver-Datenbank um eine Remotedatenbank handelt, wird ein Fehler zurückgegeben.

Falls das integrierte LocalService -Konto angegeben wird und es sich bei der Berichtsserver-Datenbank um eine Remotedatenbank handelt, wird ein Fehler zurückgegeben.

Wenn IsWindowsUser auf true festgelegt ist, bestimmt der WMI-Anbieter, ob sich die Berichtsserver-Datenbank auf demselben Computer oder auf einem Remotecomputer befindet. Diese Bestimmung erfolgt, wenn der in UserName angegebene Wert übersetzt werden muss. Um zu bestimmen, ob es sich um eine lokale Installation handelt, wertet der WMI-Anbieter die DatabaseServerName-Eigenschaft anhand der folgenden Werteliste aus. Wenn eine Übereinstimmung gefunden wird, handelt es sich um eine lokale Datenbank. Andernfalls ist es eine Remotedatenbank. Bei dem Vergleich wird Groß- und Kleinschreibung nicht unterschieden.

Wert von "DatabaseServerName" Beispiel
"."
„(local)“
„LOCAL“
localhost
<Computername> testlab14
<Computer-FQDN> example.redmond.microsoft.com
<IPAddress> 180.012.345,678

Wenn IsWindowsUser auf true festgelegt ist, ruft der WMI-Anbieter LookupAccountName auf, um die SID für das Konto abzurufen. Anschließend ruft er LookupAccountSID auf, um den im SQL Server-Skript einzufügenden Namen abzurufen. Diese Aktion stellt sicher, dass der verwendete Kontoname die SQL Server-Überprüfung besteht.

Ist IsWindowsUser auf falsefestgelegt, wird dem Benutzer durch das generierte Skript die RSExec -Rolle für die Berichtsserver-Datenbank, die temporäre Berichtsserver-Datenbank und die MSDB-Datenbank erteilt.

Wenn IsWindowsUser auf FALSE festgelegt ist, muss der SQL Server-Benutzer bereits in SQL Server vorhanden sein, damit das Skript erfolgreich ausgeführt werden kann.

Wenn für den Berichtsserver keine Berichtsserver-Datenbank angegeben ist, wird bei einem Aufruf von GrantRightsToDatabaseUser ein Fehler zurückgegeben.

Das generierte Skript unterstützt SQL Server 2000 (8.x), SQL Server 2005 und SQL Server 2008 (10.0.x).

Anforderungen

Namespace:root\Microsoft\SqlServer\ReportServer\<InstanceName>\v13\Admin

MSReportServer_ConfigurationSetting Mitglieder