Estaba revisando una bd que me pasaron para evaluar si se puede migrar
a SQL 2005. Ejecutando la herramienta Advisor me salio que elimine las
referencias a tablas de sistema no documentadas.
Revisando un poco mas era un procedure que permite cambiar el
password. les recreo en forma abreviada la ocurrencia, y si alguien
pudiera explicarme el porque funciona, se lo agradecere.
UPDATE MASTER.DBO.SYSXLOGINS
SET PASSWORD = CONVERT(VARBINARY(256), PWDENCRYPT('clave1')), XDATE2
= GETDATE(), XSTATUS = XSTATUS & (~2048)
WHERE NAME = 'usuario' AND SRVID IS NULL
Server: Msg 259, Level 16, State 2, Line 1
Ad hoc updates to system catalogs are not enabled. The system
administrator must reconfigure SQL Server to allow this.
Al crear un procedure conteniendo esta sentencia si funciona, aunque
para crearlo debo hacer algunas cosas previas como system
administrator.
EXEC sp_configure 'allow updates', 1
reconfigure with override
GO
create proc dbo.up_cambio as
UPDATE MASTER.DBO.SYSXLOGINS
SET PASSWORD = CONVERT(VARBINARY(256), PWDENCRYPT('clave1')), XDATE2
= GETDATE(), XSTATUS = XSTATUS & (~2048)
WHERE NAME = 'usuario' AND SRVID IS NULL
GO
EXEC sp_configure 'allow updates', 0
reconfigure with override
luego con cualquier usuario puedo ejecutar el stored procedure..y
lo hace!!! cambia el password.
exec up_cambio
(1 row(s) affected)
Alguien podria explicarme el porque funciona la actualizacion si no
esta activa la opcion "allow Updates"?
Saludos,
Juan Carlos Mendoza
Leer las respuestas