Sdílet prostřednictvím


Metoda ConfigurationSetting – GenerateDatabaseRightsScript

Vygeneruje skript SQL, který můžete použít k udělení přístupu uživatele k databázi serveru sestav. Kromě toho uděluje přístup k jiným databázím potřebným ke spuštění serveru sestav. Volající by se měl připojit k databázovému serveru SQL Serveru a spustit skript.

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

Parametry

UserName
Uživatelské jméno nebo identifikátor zabezpečení systému Windows (SID) uživatele, kterému skript uděluje práva.

DatabaseName
Název databáze, ke které skript uděluje přístup uživateli.

IsRemote
Logická hodnota označující, zda je databáze vzdálená od serveru sestav.

IsWindowsUser
Logická hodnota označující, jestli je zadané uživatelské jméno uživatelem Systému Windows nebo uživatelem SQL Serveru.

Skript
[ven] Řetězec obsahující vygenerovaný skript SQL Serveru.

HRESULT
[ven] Hodnota označující, jestli bylo volání úspěšné nebo neúspěšné.

Návratová hodnota

Vrátí hodnotu HRESULT označující úspěch nebo selhání volání metody. Hodnota 0 označuje, že volání metody bylo úspěšné. Nenulová hodnota označuje, že došlo k chybě.

Poznámky

Pokud je databaseName prázdný, je isRemote ignorován a hodnota konfiguračního souboru serveru sestav se použije pro název databáze.

Je-li IsWindowsUser nastavena na hodnotu true, userName by měl být ve formátu <domain>\<username>.

Pokud je isWindowsUser nastavena na hodnotu true, vygenerovaný skript udělí uživateli oprávnění k přihlášení pro SQL Server, nastaví databázi serveru sestav jako výchozí databázi a udělí roli RSExec v databázi serveru sestav, dočasné databázi serveru sestav, hlavní databázi a systémovou databázi MSDB.

Je-li IsWindowsUser nastavena na true, metoda přijímá standardní identifikátory SID systému Windows jako vstup. Když zadáte standardní název siD systému Windows nebo název účtu služby, přeloží se název na řetězec uživatelského jména. Pokud je databáze místní, účet se přeloží na správnou lokalizovanou reprezentaci účtu. Pokud je databáze vzdálená, účet je reprezentován jako účet počítače.

Následující tabulka uvádí účty, které jsou přeloženy a jejich vzdálené vyjádření.

Účet / SID přeložený Běžný název Vzdálený název
(S-1-5-18) Místní systém <Doména>\<Název_počítače>$
.\Localsystem Místní systém <Doména>\<Název_počítače>$
Název_počítače\LocalSystem Místní systém <Doména>\<Název_počítače>$
LocalSystem Místní systém <Doména>\<Název_počítače>$
(S-1-5-20) Síťová služba <Doména>\<Název_počítače>$
NT AUTHORITY\NetworkService Síťová služba <Doména>\<Název_počítače>$
(S-1-5-19) Místní služba Error
NT AUTHORITY\LocalService Místní služba Error

Pokud ve Windows 2000 používáte integrovaný účet a databáze serveru sestav je vzdálená, vrátí se chyba.

Pokud je zadaný předdefinovaný účet LocalService a databáze serveru sestav je vzdálená, vrátí se chyba.

Pokud je IsWindowsUsertrue, zprostředkovatel WMI určuje, zda je serverová databáze sestav umístěna ve stejném počítači nebo ve vzdáleném počítači. Toto určení se provede, když je potřeba přeložit hodnotu zadanou v uživatelském názvu . Pokud chcete zjistit, jestli je instalace místní, zprostředkovatel služby WMI vyhodnotí vlastnost DatabaseServerName s následujícím seznamem hodnot. Pokud se najde shoda, je databáze místní. Jinak je to vzdálené. Porovnání není citlivé na rozdíly mezi malými a velkými písmeny.

Hodnota DatabaseServerName Example
"."
"(local)"
"LOCAL"
localhost
<Machinename> testlab14
<MachineFQDN> example.redmond.microsoft.com
<IPAddress> 180.012.345,678

Pokud je IsWindowsUser nastaven na hodnotu true, zprostředkovatel WMI volá LookupAccountName pro získání identifikátoru SID pro účet a potom zavolá LookupAccountSID , aby získal název, který má být vložen do skriptu SQL Serveru. Tato akce zajistí, že název účtu použitý projde ověřením SYSTÉMU SQL Server.

Pokud je isWindowsUser nastavena na hodnotu false, vygenerovaný skript udělí roli RSExec v databázi serveru sestav, dočasné databázi serveru sestav a databázi MSDB.

Pokud je isWindowsUser nastavena na hodnotu false, musí uživatel SQL Serveru již existovat na SQL Serveru, aby se skript úspěšně spustil.

Pokud server sestav nemá zadanou databázi serveru sestav, vrátí volání GrantRightsToDatabaseUser chybu.

Vygenerovaný skript podporuje SQL Server 2000 (8.x), SQL Server 2005 a SQL Server 2008 (10.0.x).

Požadavky

Obor názvů:root\Microsoft\SqlServer\ReportServer\<InstanceName>\v13\Admin