SQL 2000: Update sysxlogins.

21/07/2008 - 14:43 por Juan Carlos Mendoza | Informe spam
La semana pasada postee esta consulta, la cual fue respondida que era
posible porque el Allow Update estaba activo. Me permito repostear la
misma consulta, ampliando la informacion indicando que el Allow Update
no esta activo y aun asi el stored procedure funciona permitiendo
cambiar el password.

Saludos,


-

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

#1 Gustavo Larriera (MVP)
21/07/2008 - 20:03 | Informe spam
No sé la respuesta a lo que usted pregunta, pero si me permite una
sugerencia: No actualice directamente sobre tablas del sistema.

Para lo que usted quiere hacer le alcanza con ejecutar sp_password y no
tendrá necesidad de jugar con las tablas del sistema.

sp_password (Transact-SQL)
http://msdn.microsoft.com/es-es/lib...74428.aspx


Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Juan Carlos Mendoza" wrote:

La semana pasada postee esta consulta, la cual fue respondida que era
posible porque el Allow Update estaba activo. Me permito repostear la
misma consulta, ampliando la informacion indicando que el Allow Update
no esta activo y aun asi el stored procedure funciona permitiendo
cambiar el password.

Saludos,


-

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



Preguntas similares