Dariusz Rodziewicz

Dariusz Rodziewicz Specjalista
Informatyk ds.
Systemów Medycznych,
Przedsięb...

Temat: SID użytkownika

Witam

Czy istnieje możliwość zmiany SID użytkownika bazy danych MSSQL? SID można odczytać za pomocą

select SUSER_SID ( 'sa' );

Pozdrawiam

Darek
Marcin S.

Marcin S. Professional SQL
Server Administrator

Temat: SID użytkownika

Jeżeli chcesz podmapować użytkownika w bazie do loginu to możesz wykonać polecenie:
ALTER USER 'User1' WITH LOGIN = 'User2'
bądź

EXEC sp_change_users_login 'Update_One', 'User1', 'User2'

Polecenia musisz wykonać w kontekście bazy w której istnieje użytkownik.
Dariusz Rodziewicz

Dariusz Rodziewicz Specjalista
Informatyk ds.
Systemów Medycznych,
Przedsięb...

Temat: SID użytkownika

Witam

Jedna z aplikacji, w ramach zabezpieczeń sprawdza SID użytkownika bazy danych. Przenoszę bazę danych na nowy serwer. Bazę danych oraz użytkownika przeniosłem, pozostał mi do edycji SID użytkownika.

Pozdrawiam

Darek
Marcin S.

Marcin S. Professional SQL
Server Administrator

Temat: SID użytkownika

A nie możesz sobie wyskryptować login ze starego serwera ze starym SIDem i przenieś na nowy serwer? Przecież jeżeli przenosisz bazę, to użytkownik pozostaje w niej ze starym SIDem(no chyba, że z przeniesionej bazy wywaliłeś usera i dodałeś na nowo). Pozostaje tylko przenieść login. SID się nie zmienia. Jeżeli login na serwerze i user na bazie będą miały takim sam SID, to automatycznie się powiążą. Dodatkowo login sa zawsze ma SIDa 0x01, jeżeli chodzi o tego konkretnego usera.Ten post został edytowany przez Autora dnia 19.05.15 o godzinie 20:45
Dariusz Rodziewicz

Dariusz Rodziewicz Specjalista
Informatyk ds.
Systemów Medycznych,
Przedsięb...

Temat: SID użytkownika

Użytkownika, tak jak piszesz, przeniosłem za pomocą skryptu

USE [master]
GO

/* For security reasons the login is created disabled and with a random password. */
/****** Object: Login [jan.kowalski] Script Date: 2015-05-20 07:07:29 ******/
CREATE LOGIN [jan.kowalski] WITH PASSWORD=N'1234567890', DEFAULT_DATABASE=[baza_danych], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
GO

ALTER LOGIN [jan.kowalski] DISABLE
GO

Przenosząc bazę danych, nie przenosi się użytkowników. Mówię oczywiście nie o użytkowniku zapisanym w tabeli w mojej przenoszonej bazie danych, a o użytkowniku systemu MSSQL. Może faktycznie źle przenoszę użytkownika i jest sposób na jego przeniesienie wraz z SIDem.
Marcin S.

Marcin S. Professional SQL
Server Administrator

Temat: SID użytkownika

Właśnie.

Używasz script login as create z management studio. Niestety generator nie wyrzuca SIDa i hasła jakie było rzeczywiście ustawione Spróbuj odpalić na starym serwerze poniższy skrypt w new query. Wygeneruje Ci polecenia do przeniesienia loginów.


SELECT
'create login [' + p.name + '] '
+ case
when p.type in('U','G') then 'from windows '
else ''
end
+ 'with '
+ case
when p.type = 'S' then 'password = '
+ master.sys.fn_varbintohexstr(l.password_hash)
+ ' hashed, '
+ 'sid = '
+ master.sys.fn_varbintohexstr(l.sid)
+ ', check_expiration = '
+ case
when l.is_expiration_checked > 0 then 'ON, '
else 'OFF, '
end
+ 'check_policy = '
+ case
when l.is_policy_checked > 0 then 'ON, '
else 'OFF, '
end
else ''
end
+ 'default_database = ['
+ p.default_database_name
+ case
when len(p.default_language_name) > 0 then '], default_language = ['
+ p.default_language_name
+ ']'
else ']'
end
FROM sys.server_principals p
LEFT JOIN sys.sql_logins l
ON p.principal_id = l.principal_id
WHERE p.type in('S','U','G')

Dariusz Rodziewicz

Dariusz Rodziewicz Specjalista
Informatyk ds.
Systemów Medycznych,
Przedsięb...

Temat: SID użytkownika

Wielkie dzięki :-)

Następna dyskusja:

SQL Server 2005 - pobranie ...




Wyślij zaproszenie do