Zamiana sid-a usera sidem z loginu w SQL Server 2000.

Bardzo często zdarza się, że przenosimy bazę danych na inną instancję serwera czy też na inny fizyczny serwer.

Mamy już założone loginy lub te loginy zakładamy. Po przeniesieniu bazy i po jej odtworzeniu posiadamy te same nazwy userów ale z innymi wartościami sid tzn. inny jest sid zapisany w tabeli sysusers należącej do przenoszonej bazy danych oraz inny jest sid zapisany w tabeli sysxlogins bazy systemowej master.

Należy podmienić sidy w tabeli wybranej bazy danych sysusers sidami z tabeli sysxlogins bazy master w ramach tej samej nazwy loginu i usera.

Poniżej przedstawiony kod działa wyłącznie na wersji MS SQL Server 2000.

Use master
GO

sp_configure @configname = 'allow updates'
, @configvalue = '1';
RECONFIGURE WITH OVERRIDE
GO

UPDATE su
SET su.sid = sl.sid
FROM [nazwabazydanych]..sysusers AS su
JOIN master..sysxlogins AS sl ON su.[name] like sl.[name]
WHERE su.[name] = 'nazwausera'
GO

sp_configure @configname = 'allow updates'
, @configvalue = '0'

RECONFIGURE WITH OVERRIDE
GO

DBBS