У нас были некоторые старые хранимые процедуры в SQL Server 2000, которые обновляли системный каталог из приложения, которое использовалось для обеспечения безопасности пользовательского приложения, привязанного к ролям SQL Server, чтобы использовать преимущества встроенной безопасности SQL Server и логинов NT.
Когда мы переносим БД в SQL Server 2008 и пытаемся запустить эту хранимую процедуру, мы получаем ошибку SQL Server 2008
Специальные обновления системных каталогов не допускаются.
Я искал и обнаружил, что начиная с SQL Server 2005 и далее MS не поддерживает обновления каталога (кроме случаев использования выделенного подключения администратора (DAC)).
Если кто-нибудь может помочь мне с тем, как сделать это в новых версиях или любой другой альтернативе (например, .Net код, запускаемый на сервере Sql ??), это будет здорово.
Некоторые примеры запросов ниже
update sysusers
set roles = convert(varbinary(2048), substring(convert(binary(2048), roles), 1, @ruidbyte-1)
+ convert(binary(1), (~@ruidbit) & substring(convert(binary(2048), roles), @ruidbyte, 1))
+ substring(convert(binary(2048), roles), @ruidbyte+1, 2048-@ruidbyte)),
updatedate = getdate()
where uid = @memuid
delete from syspermissions where grantee = @uid
delete from sysusers where uid = @uid
insert into sysusers
values(@uid, 0, @rolename, NULL, 0x00, getdate(), getdate(), @owner, NULL)