Mensaje enviado por "Ignacio Napal" <inapal@equiplus.com>
Ejemplo de cambio de password de SQL7 usando ADO:
Supongamos que "cnn" es un objeto ADODB.Connection ya abierto, y que "sAnterior" y "sNueva" son variables tipo string, conteniendo la clave anterior y la nueva clave respectivamente. El procedimiento resulta así:
Dim Cmd As New ADODB.Command
Dim Par As ADODB.Parameter
Cmd.CommandText = "sp_password"
Cmd.CommandType = adCmdStoredProc
If sAnterior = "" Then
Set Par = cmd.CreateParameter("old", adLongVarWChar, adParamInput, 1, Null)
Else
Set Par = cmd.CreateParameter("old", adLongVarWChar, adParamInput, Len(sAnterior), sAnterior)
End If
cmd.Parameters.Append Par
If sNueva = "" Then
Set Par = cmd.CreateParameter("new", adLongVarWChar, adParamInput, 1, Null)
Else
Set Par = cmd.CreateParameter("new", adLongVarWChar, adParamInput, Len(sNueva), sNueva)
End If
Cmd.Parameters.Append Par
Cmd.ActiveConnection = cnn
Cmd.Execute
De esta manera, se cambia la clave del usuario con el cual se estableció la conexión (al abrir "cnn"). Si se quisiera cambiar la clave de otro usuario (es decir, conectarse como "xx" y cambiar la clave de "yy"), se puede agregar un tercer parámetro, llamado "loginame", en el cual se indica el usuario en cuestión ("yy"). Para hacer esto, el usuario con el que se estableció la conexión ("xx") debe tener privilegios de securityadmin o sysadmin.
Nota: desarrollado y verificado con VB6(sp3) y ADO 2.5, contra MSSQL7 y MSDE 1.0.
Ignacio Napal
Equiplus S.A.
email: inapal@equiplus.com