GenerateDatabaseRightsScript-Methode (WMI: MSReportServer_ConfigurationSetting)
Generiert ein SQL-Skript, das verwendet werden kann, um einem Benutzer Berechtigungen für die Berichtsserver-Datenbank sowie für andere Datenbanken zu gewähren, die für das Ausführen eines Berichtsservers erforderlich sind. Es wird erwartet, dass der Aufrufer eine Verbindung mit dem SQL Server-Datenbankserver herstellt und das Skript ausführt.
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.Script
[out] Eine Zeichenfolge, die das generierte SQL Server-Skript enthältHRESULT
[out] Wert, der angibt, ob der Aufruf erfolgreich war oder fehlgeschlagen ist
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.
Hinweise
Wenn DatabaseName leer ist, wird IsRemote ignoriert und der Wert aus der Konfigurationsdatei des Berichtsservers als Datenbankname verwendet.
Wenn IsWindowsUser auf true festgelegt ist, sollte UserName im Format <Domäne>\<Benutzername> vorliegen.
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 ihm die RSExec-Rolle für die Berichtsserver-Datenbank, die temporäre Berichtsserver-Datenbank, die Masterdatenbank und die MSDB-Systemdatenbank erteilt.
Wenn IsWindowsUser auf true festgelegt ist, akzeptiert die Methode standardmäßige Windows-SIDs als Eingabe. Wird eine standardmäßige Windows-SID oder ein Dienstkontoname bereitgestellt, wird diese bzw. dieser in eine Benutzernamen-Zeichenfolge ü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 – siehe unten. |
NT AUTHORITY\LocalService |
Lokaler Dienst |
Fehler – siehe unten. |
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 und der in UserName bereitgestellte Wert übersetzt werden muss, bestimmt der WMI-Anbieter, ob sich die Berichtsserver-Datenbank auf demselben Computer oder auf einem Remotecomputer befindet. 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. Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.
Wert von "DatabaseServerName" |
Beispiel |
---|---|
“.” |
|
"(local)" |
|
"LOCAL" |
|
localhost |
|
<Machinename> |
testlab14 |
<MachineFQDN> |
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. Hierdurch wird sichergestellt, dass der verwendete Kontoname die SQL Server-Überprüfung erfolgreich durchläuft.
Ist IsWindowsUser auf false festgelegt, 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, SQL Server 2005 und SQL Server 2008.
Voraussetzungen
Namespace: root\Microsoft\SqlServer\ReportServer\RS_<EncodedInstanceName>\v10\Admin
Plattform: Windows Server 2003 Datacenter Edition; Windows Server 2003 Enterprise Edition; Windows Server 2003 Standard Edition; Windows Vista; Windows XP Professional mit Service Pack 2 (SP2) oder Service Pack 1 (SP1); oder Windows 2000 (alle Versionen)