sp_password

13/04/2004 - 02:15 por Julio C. Briceño R. | Informe spam
Saludos,

El procedimiento siguiente:

Dim cmdCambioClave As New ADODB.Command
Dim parLogin As New ADODB.Parameter
Dim parClaveVieja As New ADODB.Parameter
Dim parClaveNueva As New ADODB.Parameter
cmdCambioClave.ActiveConnection = mcnnPrincipal
cmdCambioClave.CommandText = "sp_password"
cmdCambioClave.CommandType = adCmdStoredProc
Set parClaveVieja = cmdCambioClave.CreateParameter
("clavevieja", adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parClaveVieja
Set parClaveNueva = cmdCambioClave.CreateParameter
("clavenueva", adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parClaveNueva
Set parLogin = cmdCambioClave.CreateParameter("logi",
adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parLogin
parLogin.Value = strCodUsu
parClaveVieja.Value = strClave
parClaveNueva.Value = Me.txtConfirmacion.Text
cmdCambioClave.Execute

cambiaba la clave de un usuario en desde Visual Basic para
SQL Server 7.0. Ahora en SQL Server 2000 insiste en que la
clave antigua está incorrecta. strClave contiene la clave
antigua pues lo que he comprobado con breakpoints y además
lo ejecuto desde el Query Analizer y todo bien. strCodUsu
también contiene el usuario que quiero cambiar.

Alguien puede decirme qué sucede? Qué cambia en SQL 2000?

Gracias de antemano

Julio C. Briceño R.
Caracas, Venezuela

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP SQL]
13/04/2004 - 02:33 | Informe spam
Tal vez tenga que ver que los tipos de datos de los tres parámetros de
sp_password son 'sysname' que son NVARCHAR(128), es decir que usan UNICODE
(2 bytes por caracter).

Tal vez si usas la libreria SQL-DMO puedes aplicar a un objeto de clase
Login su método SetPassword. Los parámetros son de tipo SQLDMO_LPCSTR
object.SetPassword( OldValue , NewValue )


Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho
This posting is provided "AS IS" with no warranties, and confers no rights.
"Julio C. Briceño R." wrote in message
news:1b93a01c420ec$5ccbb040$
Saludos,

El procedimiento siguiente:

Dim cmdCambioClave As New ADODB.Command
Dim parLogin As New ADODB.Parameter
Dim parClaveVieja As New ADODB.Parameter
Dim parClaveNueva As New ADODB.Parameter
cmdCambioClave.ActiveConnection = mcnnPrincipal
cmdCambioClave.CommandText = "sp_password"
cmdCambioClave.CommandType = adCmdStoredProc
Set parClaveVieja = cmdCambioClave.CreateParameter
("clavevieja", adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parClaveVieja
Set parClaveNueva = cmdCambioClave.CreateParameter
("clavenueva", adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parClaveNueva
Set parLogin = cmdCambioClave.CreateParameter("logi",
adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parLogin
parLogin.Value = strCodUsu
parClaveVieja.Value = strClave
parClaveNueva.Value = Me.txtConfirmacion.Text
cmdCambioClave.Execute

cambiaba la clave de un usuario en desde Visual Basic para
SQL Server 7.0. Ahora en SQL Server 2000 insiste en que la
clave antigua está incorrecta. strClave contiene la clave
antigua pues lo que he comprobado con breakpoints y además
lo ejecuto desde el Query Analizer y todo bien. strCodUsu
también contiene el usuario que quiero cambiar.

Alguien puede decirme qué sucede? Qué cambia en SQL 2000?

Gracias de antemano

Julio C. Briceño R.
Caracas, Venezuela
Respuesta Responder a este mensaje
#2 Rubén Vigón
13/04/2004 - 10:00 | Informe spam
Los argumentos @old, @new y @loginame de «sp_password» en SQL Server 2000 son de tipo «sysname», que equivale a nvarchar(128). Prueba a cambiar el tipo de tus parámetros adChar de longitud 200 por adVarWChar de longitud 128

[...] sysname es el tipo de datos suministrado por el sistema y definido por el usuario que es funcionalmente equivalente a nvarchar(128) y que se utiliza para hacer referencia a nombres de objetos de bases de datos

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
Respuesta Responder a este mensaje
#3 Eladio Rincón
13/04/2004 - 11:10 | Informe spam
Hola,

como ha comentado Rubén y Gustavo, el problema se puede deber a un error en los tipos de datos y longitud del procedimiento; yo como truco, cuando no sé exactamente el tipo de datos de los argumentos, suelo utilizar en desarrollo el método Refresh del Command para saber cuales son los tipos de datos y longitud; una vez que los tengo (vista previa en ejecución), los codifico en la aplicación y listo ... ;-)


Eladio Rincón
Torrevieja - Alicante
MCAD, SQL Server MVP
http://www.siquelnet.com

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Julio C. Briceño R." escribió en el mensaje news:1b93a01c420ec$5ccbb040$
Saludos,

El procedimiento siguiente:

Dim cmdCambioClave As New ADODB.Command
Dim parLogin As New ADODB.Parameter
Dim parClaveVieja As New ADODB.Parameter
Dim parClaveNueva As New ADODB.Parameter
cmdCambioClave.ActiveConnection = mcnnPrincipal
cmdCambioClave.CommandText = "sp_password"
cmdCambioClave.CommandType = adCmdStoredProc
Set parClaveVieja = cmdCambioClave.CreateParameter
("clavevieja", adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parClaveVieja
Set parClaveNueva = cmdCambioClave.CreateParameter
("clavenueva", adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parClaveNueva
Set parLogin = cmdCambioClave.CreateParameter("logi",
adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parLogin
parLogin.Value = strCodUsu
parClaveVieja.Value = strClave
parClaveNueva.Value = Me.txtConfirmacion.Text
cmdCambioClave.Execute

cambiaba la clave de un usuario en desde Visual Basic para
SQL Server 7.0. Ahora en SQL Server 2000 insiste en que la
clave antigua está incorrecta. strClave contiene la clave
antigua pues lo que he comprobado con breakpoints y además
lo ejecuto desde el Query Analizer y todo bien. strCodUsu
también contiene el usuario que quiero cambiar.

Alguien puede decirme qué sucede? Qué cambia en SQL 2000?

Gracias de antemano

Julio C. Briceño R.
Caracas, Venezuela
Respuesta Responder a este mensaje
#4 Julio C. Briceño R.
13/04/2004 - 14:32 | Informe spam
Saludos,

Exactamente amigos el tipo de datos. Claro el
password "000 " es incorrecto (el antiguo) porque char
agrega los espacios en blanco y la clave antigua es en
realidad "000". Gracias!!! Qué tonto soy!

Hasta luego,

Julio C. Briceño R.


Saludos,

El procedimiento siguiente:

Dim cmdCambioClave As New ADODB.Command
Dim parLogin As New ADODB.Parameter
Dim parClaveVieja As New ADODB.Parameter
Dim parClaveNueva As New ADODB.Parameter
cmdCambioClave.ActiveConnection = mcnnPrincipal
cmdCambioClave.CommandText = "sp_password"
cmdCambioClave.CommandType = adCmdStoredProc
Set parClaveVieja = cmdCambioClave.CreateParameter
("clavevieja", adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parClaveVieja
Set parClaveNueva = cmdCambioClave.CreateParameter
("clavenueva", adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parClaveNueva
Set parLogin = cmdCambioClave.CreateParameter("logi",
adChar, adParamInput, 200)
cmdCambioClave.Parameters.Append parLogin
parLogin.Value = strCodUsu
parClaveVieja.Value = strClave
parClaveNueva.Value = Me.txtConfirmacion.Text
cmdCambioClave.Execute

cambiaba la clave de un usuario en desde Visual Basic


para
SQL Server 7.0. Ahora en SQL Server 2000 insiste en que


la
clave antigua está incorrecta. strClave contiene la clave
antigua pues lo que he comprobado con breakpoints y


además
lo ejecuto desde el Query Analizer y todo bien. strCodUsu
también contiene el usuario que quiero cambiar.

Alguien puede decirme qué sucede? Qué cambia en SQL 2000?

Gracias de antemano

Julio C. Briceño R.
Caracas, Venezuela
.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida