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 2000.
[Kod]
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