2011-06-06 46 views
22

Tengo un procedimiento almacenado que se ejecuta el siguiente:Utilice ALTER LOGIN para cambiar la propia contraseña del usuario

'ALTER LOGIN ' + @Login + ' WITH PASSWORD = ''' + @Password + '''' 

me sale el siguiente mensaje de error:

No se puede modificar el nombre de usuario 'AUSER', porque hace no existe o no tienes permiso.

SIN EMBARGO, si hago agregar al usuario a la función SysAdmin, entonces es exitoso. Si elimino el usuario de SysAdmin, recibo el mensaje de error nuevamente, por lo que parece que son derechos de usuario.

El problema es que los usuarios necesitan ser capaces de cambiar sus propias contraseñas, y no parece el comando ALTER LOGIN para tener en cuenta que, a pesar de que MSDN dice:

Un director puede cambiar la contraseña , idioma predeterminado y base de datos predeterminada para su propio> inicio de sesión.

¿Alguien tiene alguna idea?

Respuesta

40

Creo que para realizar un cambio de contraseña normal para un usuario que no tiene ALTER ANY LOGIN, también debe proporcionar el parámetro OLD_PASSWORD. Esto coincidiría con el ejemplo del procedimiento almacenado mayores sp_password:

El siguiente ejemplo muestra cómo utilizar ALTER LOGIN para cambiar la contraseña de inicio de sesión para la Victoria desde B3r1000d # 2-36 a V1cteAmanti55imE. Este es el método preferido. El usuario Victoria puede ejecutar este comando sin permisos adicionales. Otros usuarios no requieren el permiso ALTER ANY LOGIN:

ALTER LOGIN Victoria WITH 
    PASSWORD = 'V1cteAmanti55imE' 
    OLD_PASSWORD = 'B3r1000d#2-36'; 
GO 
+0

Gracias, esa es la respuesta. – 333Mhz

+0

sp_password 'old', 'new' parece no funcionar desde dentro de una aplicación, mientras que sí. – qwerty13579

2

Puede hacer que su aplicación se ejecute como un usuario con suficientes derechos. Para eso, crearía una cuenta de servicio para la aplicación en SQL Server, y luego haría que su aplicación se ejecute como ese usuario.

Sin embargo, podría ser mejor que crear una tabla de usuarios para su aplicación y administrar estos datos allí, en lugar de permitir a los usuarios el acceso directo a la alteración de los inicios de sesión.

Cuestiones relacionadas