Pokročilé hledání             

HELIOS iNuvio      FAQ     Uživatelský panel    

Registrovat     Přihlásit se

    Obsah fóra> Časté dotazy> Systémové dotazy
    Verze pro tisk

Chyba: User, group, or role already exists in the database

Zapisují se opakující se dotazy na řešení systémových problémů z provozu Helios Orange. Patří sem dotazy typu "Po instalaci SQL serveru se nemohu přihlásit do Heliosu." apod.

Moderátor: orange_moderator

Odeslat odpověď
Příspěvků: 2 • Stránka 1 z 1
  • Odpovědět s citací

Chyba: User, group, or role already exists in the database

Příspěvekod jiri.dolezal v 11.05.2012 22:36

Při snaze o přidání uživatele do databáze pomocí akce Přidat do databáze v seznamu uživatelů se můžete setkat s chybovou hláškou:

[SQL:15023,16] User, group, or role 'muj_login' already exists in the current database.

Zároveň je v seznamu uživatelů u problémového uživatele zaškrtnuto jak ve sloupci S (Je uživatel definován na SQL-serveru ?), tak ve sloupci D (Přístup do databáze ?). Snaha o přihlášení uživatele, ale končí chybou:

Uživatel nemá přístup do databáze !

Tato situace je způsobena tím, že uživateli v databázi není přiřazen příslušný login na SQL Serveru.

Může nastat z různých příčin (způsobených zásahem mimo aplikaci Helios Orange). Nejčastěji při obnově databáze na jiném SQL Serveru (např. při migraci), kdy nedojde ke korektnímu přiřazení uživatelů v databázi, kteří nemají na SQL Serveru definován login, prostřednictvím programu a loginy jsou definovány ručně, např. v Management Studiu.

Řešení pomocí programu:
Smazat login na SQL serveru akcí Smazat z SQL Serveru v seznamu uživatelů. Následně spustit program (s kontrolou konzistence) a nechat založit login programem.

Řešení pomocí skriptu:

Kód: Vybrat vše
--(i) skript spustit v příslušné databázi
--(i) muj_login zaměnit za login problémového uživatele
--(i) jméno uživatele i loginu uzavřete do hranatých závorek

ALTER USER [muj_login]   
      WITH LOGIN = [muj_login];
jiri.dolezal
 
Nahoru

  • Odpovědět s citací

Hromadné přiřazení uživatelů a loginů

Příspěvekod jiri.dolezal v 18.10.2013 13:13

Pro hromadné přiřazení uživatelů v databázi, kteří nemají (a dříve měli) na sebe navázaný žádný login na SQL serveru lze použít následující skript:

Kód: Vybrat vše
DECLARE @Name sysname;
DECLARE @Exec NVARCHAR(MAX);
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @OsamelyLogin TABLE(
   [name] sysname NOT NULL
   ,[sid] varbinary(85) NULL
   );

/* funkční tělo procedury */
-- naplníme tabulku osamělých
INSERT INTO @OsamelyLogin
EXEC sp_change_users_login 'report';

-- procházíme osamělé namapujeme je na login
DECLARE OsamelyCur CURSOR LOCAL FAST_FORWARD FOR
   SELECT [name] FROM @OsamelyLogin;
OPEN OsamelyCur;
FETCH NEXT FROM OsamelyCur INTO @Name;
   WHILE (@@FETCH_STATUS = 0) AND (@@ERROR = 0)
   BEGIN
      -- zacatek akce v kurzoru OsamelyCur
      
      IF NOT EXISTS(SELECT * FROM sys.server_principals WHERE type IN ('S','U') AND name = @Name)
         PRINT (N'Login ' + @Name + N' není definován na SQL Serveru');
      ELSE
         BEGIN
            
            BEGIN TRY
               SET @Exec = N'ALTER USER ' + QUOTENAME(@Name) + N' WITH LOGIN = ' + QUOTENAME(@Name);
               EXEC (@Exec);
            END TRY
            BEGIN CATCH
               SELECT @ErrorMessage = ERROR_MESSAGE();
               PRINT (@Name + N' - chyba - ' + @ErrorMessage)
            END CATCH;
         
         END;
   
      -- konec akce v kurzoru OsamelyCur
   FETCH NEXT FROM OsamelyCur INTO @Name;
   END;
CLOSE OsamelyCur;
DEALLOCATE OsamelyCur;
jiri.dolezal
 
Nahoru


Odeslat odpověď
Příspěvků: 2 • Stránka 1 z 1

Zpět na Systémové dotazy

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků

         
  • Tým • Smazat všechny cookies z fóra • Všechny časy jsou v UTC + 1 hodina
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Český překlad – phpBB.cz

© copyright 2011 Asseco Solutions, a.s.
hotline Helios Orange
+420 244 104 155
hotline.orange@assecosol.cz