Jak vyřešit problémy oprávnění při přesunutí databáze mezi servery se systémem SQL Server

Překlady článku Překlady článku
ID článku: 240872 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje mapovat přihlášení standardní a integrované vyřešit problémy oprávnění při přesunutí databáze mezi servery se systémem SQL Server.

Další informace

Při přesunutí databáze z jednoho serveru na jiný server je spuštěn SQL Server je spuštěn SQL Server může dojít neshodu mezi identifikační čísla zabezpečení (SID) přihlášení v hlavní databázi a uživatelé v databázi uživatelů. Ve výchozím nastavení poskytují systémovou uloženou proceduru sp_change_users_login mapovat tyto neshodující uživatele SQL Server 7.0, SQL Server 2000 a SQL Server 2005. Však sp_change_users_login uložené procedury lze použít pouze mapovat standardní přihlášení serveru SQL a musíte provést tyto mapování pro jednoho uživatele současně. Další informace o postupu sp_change_users_login uloženy v tématu "sp_change_users_login" SQL Server 7.0, SQL Server 2000 a SQL Server 2005 Books Online.

V SQL Server 7.0 nebo novější verze udržovat mapování mezi přihlášení v hlavní databázi a uživatelé v databázi uživatelů pomocí čísla SID. Toto mapování je vyžadován udržovat správná oprávnění pro přihlášení v uživatelských databází. Při ztrátě toto mapování přihlášení mají oprávnění problémy, které obsahují, ale jsou omezeny na následující:
  • Pokud na nový server neexistuje přihlášení serveru SQL a uživatel se pokusí přihlásit, uživatel může zobrazit následující chybová zpráva:
    Server: Zpráva 18456, 16, úroveň Město 1
    Přihlášení se nezdařilo pro uživatele % ls.
  • Pokud přihlášení serveru SQL na nový server existuje, ale SID v hlavní databázi se liší od SID v databázi uživatelů, uživatel může přihlásit k serveru SQL úspěšně; však, když se uživatel pokusí získat přístup k databázi, uživatel může zobrazit následující chybová zpráva:
    Server: Zpráva 916, úroveň 14, stát 1 Line1
    Uživatel serveru ' %. * ls 'není platný uživatel v databázi' %. * ls'.
    Poznámka: SQL Server 2005 uživatel obdržet následující chybová zpráva:

    Uživatel serveru '% s' není platný uživatel v databázi '% s'. Nejprve přidejte účet uživatele do databáze.
Další informace o modelu zabezpečení SQL Server 7.0 naleznete v dokumentu white paper "Zabezpečení 7.0 Microsoft SQL Server". Tento dokument naleznete na následujícím webu společnosti Microsoft:
http://msdn2.microsoft.com/en-us/library/Aa226173(SQL.70).aspx
Další informace o modelu zabezpečení SQL Server 2000 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
322712Funkce zabezpečení S322712 2000 Microsoft SQL Server a doporučené postupy

Omezení

  • Pokud existují uživatelé v tabulce sysusers bez předpony názvu počítače nebo názvu domény, který vlastní objekty a tyto objekty jsou odkazovány v aplikacích pomocí dvou částí název username. objectname aplikace může přerušit, protože sp_sidmap uložené procedury zobrazené v tabulce sysxlogins přejmenuje tyto uživatele s předponou název počítače nebo název domény. Tento problém vyřešit, po sp_sidmap uloženou proceduru dokončit, přejmenovat uživatele, kteří byly ovlivněny v tabulce sysusers dřívější názvy nebo primární podporu poskytovatele.
  • Tento článek nepovažuje aliasy. Aliasy musí spravovat ručně.
  • Standardní přihlášení serveru SQL na novém serveru SQL server neexistuje, můžete přidat přihlášení pomocí hesla NULL. Můžete mít odpovídajícím způsobem změnit heslo pro tyto přihlášení.
  • Pokud uživatel byl vytvořen v databázi uživatelů s názvem, který se liší od, které se zobrazí v tabulce sysxlogins, je nemožné znát odpovídající přihlášení daného uživatele. Proto před spuštěním sp_sidmap uložené procedury:
    1. Přenést všechny objekty, které tento uživatel vlastní pracovní databáze.
    2. Přetažení uživatele, přidat uživatele, který má správný název a potom přenést zpět všechny objekty pro tohoto uživatele.
  • Pokud uživatel nemá odpovídající přihlášení ani předponu název místního počítače nebo název domény, zobrazí se zpráva pro tohoto uživatele. Tato zpráva označuje musí nejprve přidat uživatele na úrovni Windows a přidat jej k serveru SQL jako přihlašovací jméno. Po učiníte, musíte znovu spustit sp_sidmap uložené procedury.
  • Pokud uživatel má předponu názvu domény nebo název místního serveru se systémem Windows, ale v tabulce sysxlogins neexistuje odpovídající přihlášení, uložené procedury se pokusí přidat jako nové přihlášení k serveru SQL. Pokud uživatel systému Windows neexistuje, vygeneruje zprávu výstup v okně výsledků a potom ručně vytvoří přihlášení po prvním přidá uživatele systému Windows.
  • Pokud je více než jedno přihlášení pro uživatele v tabulce sysusers, viz zprávy výstup v souboru výsledky a seznamy přihlášení, která mají stejné uživatelské jméno. V tomto okamžiku musí ručně zasáhnout Ujistěte se, že uživatel odpovídá pouze jedno přihlášení.

    Příklad Tabulka sysusers má uživatel s názvem "petrnovak" a tabulky sysxlogins má přihlášení s názvy jako například "Test\johndoe" a "Test2\johndoe" Pokud se spuštění uložené procedury, zobrazí zpráva oznamující, že jeden z uživatelů má více než jeden přihlášení a správce systému musí vybrat jednu. Toto je pouze čas, musíte spustit druhý uložené procedury sp_prefix_sysusersname, který je dodáván v tomto článku. Navíc tato situace je podrobně popsáno v souboru Readme.txt.

Mapovat standardní a integrované přihlášení

Po přesunutí databáze z jednoho serveru na jiný server se systémem SQL serveru se systémem SQL serveru postupujte podle následujících kroků pro zásahu minimální uživatele:

SQL Server 7.0 a SQL Server 2000

  1. Ujistěte se, že je přihlašovací jméno v tabulce sysxlogins v hlavní databázi pro každého uživatele v sysusers tabulce databáze.

    Poznámka: Chcete-li přidat standardní přihlášení SQL Server, naleznete v tématu "sp_addlogin" v SQL Server Books Online. Přidání integrované přihlášení serveru SQL naleznete v tématu "sp_grantlogin" v SQL Server Books Online.
  2. Stažení souboru MapSids.exe a extrahovat soubory Sp_sidmap.sql a Readme.txt.
  3. Přihlášení k serveru je spuštěn SQL Server jako správce systému a spusťte soubor Sp_sidmap.sql v databázi uživatelů. Spuštěním souboru Sp_sidmap.sql vytvoří dvě uložené procedury, sp_sidmap a sp_prefix_sysusersname.
  4. Ujistěte se, že databáze není přístup jiný uživatel než ten, kdo je spuštěna uložené procedury.
  5. Ujistěte se, že Query Analyzer zobrazí výsledky v textovém formátu a není ve formátu mřížky. To provedete buď stiskněte CTRL ^ T klíče, nebo klepněte na dotaz a poté klepněte na příkaz výsledky text. To je velmi důležité, aby zobrazení výsledků a informační zprávy v jednom okně a výstup uložit do textového souboru. Pravděpodobně bude nutné tento soubor později jak vyřešit některé mapování.
  6. Protože nelze ověřit, zda jsou správně předány parametry, přesvědčte se, zda je správně předat sp_sidmap uložené procedury:
    EXEC sp_SidMap @old_domain = old_domain_name,
    @new_domain = new_domain_name,
    @old_server = old_server_name,
    @new_server = new_server_name
    nahradit hodnoty pro domény staré a nové názvy a názvy serveru odpovídajícím způsobem.
  7. Uložit výsledky do souboru a postupujte podle pokynů uvedených v souboru Readme.txt.

    Poznámka: Při spuštění tyto uložené procedury tabulka sysusers je pouze tabulku, která změní v databázi. Chcete-li se vrátit do stavu, ve kterém je spuštěn, obnovení databáze ze zálohy nebo opětovné připojení databáze.

SQL Server 2005

Pokud běží SQL Server 2005 pomocí klauzule WITH LOGIN příkaz ALTER USER přemapovat uživatele k nové přihlášení. Další informace naleznete na následujících webech služby MSDN (Microsoft Developer Network):
http://msdn.microsoft.com/en-us/library/ms176060.aspx
Poznámka: Chcete-li použít klauzuli WITH LOGIN příkaz ALTER USER, musíte použít SQL Server 2005 Service Pack 2.

Odkazy

Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
274188Téma o řešení potíží s opuštěnými uživateli v dokumentaci Books Online je neúplné (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
246133Přenášení přihlašovacích jmen a hesel mezi instancemi serveru SQL Server (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
168001Chyby přihlášení a oprávnění uživatele po obnovení výpisu
298897UKÁZKOVÝ: Mapsids.exe pomáhá Mapa SID mezi uživatelem a databáze Master Pokud je databáze nebo

Vlastnosti

ID článku: 240872 - Poslední aktualizace: 27. ledna 2009 - Revize: 8.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Klíčová slova: 
kbmt kbhowtomaster KB240872 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:240872

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com