ejecutar procedimiento almacenado ADO SQL SERVER 2000

01/12/2004 - 15:40 por Hugo Gsell | Informe spam
Hola.
... al fin logré abrir una conexión de base de datos y hacer un select sobre
una tabla de sqlserver...
ahora no estoy pudiendo ejecutar un procedimiento almacenado.
Alguien podría faciliarme un ejemplo completo.
Hugo A. Gseññ

Preguntas similare

Leer las respuestas

#1 Jorge Serrano [MVP VB]
01/12/2004 - 15:49 | Informe spam
Hola Hugo,

puedes ejecutar un SP desde código como si ejecutases una instrucción normal.
Puedes usar algo así como "EXEC nombre_SP" en lugar de emplear la sentencia
SQL.


Un saludo,

Jorge Serrano
MVP VB.NET


"Hugo Gsell" wrote:

Hola.
al fin logré abrir una conexión de base de datos y hacer un select sobre
una tabla de sqlserver...
ahora no estoy pudiendo ejecutar un procedimiento almacenado.
Alguien podría faciliarme un ejemplo completo.
Hugo A. Gseññ



Respuesta Responder a este mensaje
#2 Marco Villagrana
01/12/2004 - 20:04 | Informe spam
Tengo el siguiente código, a ver si te sirve

Comando = New SqlClient.SqlCommand(sNombre, Cnx, Trx)

Comando.CommandType = CommandType.StoredProcedure

Return Comando.ExecuteNonQuery

Donde Cnx es tu conexión válida

y si necesitas Trx es tu transacción.

saludos,


"Hugo Gsell" escribió en el mensaje
news:
Hola.
... al fin logré abrir una conexión de base de datos y hacer un select
sobre
una tabla de sqlserver...
ahora no estoy pudiendo ejecutar un procedimiento almacenado.
Alguien podría faciliarme un ejemplo completo.
Hugo A. Gseññ


Respuesta Responder a este mensaje
#3 Ing. Yván Ricardo Ecarri G., MCSD, MCDBA
02/12/2004 - 15:01 | Informe spam
Misael,

SQL Server no funciona como tú lo dices.

Si se trata de un stored procedure que vas a llamar, la sentencia
"tustoredprocedure or 1=1" produce un error de sintaxis en el analizador
del SQL Server.

La inyección de código en ese caso tendría que hacerse así:

Dim x as New SQLCommand
Dim malicious_thing as String

malicious_thing = "1 exec master..xp_cmdshell 'dir c:\'"
x.CommandText="EXEC tustoredprocedure " & malicious_thing

Si lo haces de la otra manera, no es posible inyectar el código del
execute dentro del parámetro. Te muestro:

Dim x as New SQLCommand
Dim valorParam as Integer

x.CommandText="EXEC tustoredprocedure ?"
ValorParam = 1

// El signo de interrogación es para el parámetro

x.Parameters.Add("@Param1", valorParam)

En esta instrucción, el x.Parameters.Add no hace una concatenación del
parámetro, más bien lo que ocurre es que el SQL Server recibe un
sp_executesql con el texto del comando como primer parámetro, y luego,
cada uno de los siguientes parámetros a partir del número 2.

Saludos,

Y.

Misael Monterroca wrote:
Hola de nuevo :)

Hum, no estaremos hablando de temas diferentes?

Lo que creo que Jorge se referia es que puedes mandar a llamar un store
procedure sin necesidad de especificar en el SqlCommand que estas
haciendo referencia a un comando


Dim valorParam1 As String = "or 1=1"

Dim x As New SqlCommand

x.CommandText = "tustoreprocedure " & valorParam1

haciendo asi el store funcionaria (independientemente de la validación
de los parametros)



Haciendolo como deberia sería.

Dim valorParam1 As String = "or 1=1"

Dim x As New SqlCommand

x.CommandText = "tustoreprocedure"

x.CommandType = CommandType.StoredProcedure

x.Parameters.Add("@Param1", valorParam1)





Practicamente es lo mismo, la diferencia entre la primera manera y la
segunda es que en la primera la sentencia es "compilada" por sql y en
la segunda como ya estamos especificando que es un store procedure esta
sentencia ya no es compilada :)



Aqui es la parte en donde te decia yo que tanto en la primera como la
segunda el sql inyection no aplicaria ya que la validación de la
información de los parametros es validada directamente por Sql más no
por el SqlCommand.







"MAXI"
<mailto: escribió en el mensaje
news:
> Si pero es mas inseguro :( y mas propenso a inject sql
>
>
>
>
> Maxi
>
> Buenos Aires - Argentina
> Desarrollador .NET 3 Estrellas
> Microsoft User Group (MUG)
> Mail: Maxi_accotto[arroba]speedy.com.ar
>
> Msn Messenger: <mailto:
>
> "Misael Monterroca"
<mailto: escribió en el mensaje
> news:
>>
>> Hola Maxi, Aún cuando se realice la ejecución como "texto directo"
el que
>> hace la comprobación de los parametros es SQL no el SqlCommand
>>
>> Saludos!
>> http://www.neo-mx.com/blog
>> <mailto:
>>
>>
>>
>> "MAXI"
<mailto: wrote in message
>> news:ugVM$x$
>>> Hola Jorge, ojo con el uso de EXEC y la injection de codigo :( , yo
>>> recomendaria el uso de parametros :)
>>>
>>>
>>>
>>>
>>> Maxi
>>>
>>> Buenos Aires - Argentina
>>> Desarrollador .NET 3 Estrellas
>>> Microsoft User Group (MUG)
>>> Mail: Maxi_accotto[arroba]speedy.com.ar
>>>
>>> Msn Messenger: <mailto:
>>>
>>> "Jorge Serrano [MVP VB]"
>>>
<mailto:
>> escribió
>>> en el mensaje
news:
>>> > Hola Hugo,
>>> >
>>> > puedes ejecutar un SP desde código como si ejecutases una instrucción
>>> > normal.
>>> > Puedes usar algo así como "EXEC nombre_SP" en lugar de emplear la
>>> > sentencia
>>> > SQL.
>>> >
>>> >
>>> > Un saludo,
>>> >
>>> > Jorge Serrano
>>> > MVP VB.NET
>>> >
>>> >
>>> > "Hugo Gsell" wrote:
>>> >
>>> >> Hola.
>>> >> al fin logré abrir una conexión de base de datos y hacer un
>>> >> select
>>> >> sobre
>>> >> una tabla de sqlserver...
>>> >> ahora no estoy pudiendo ejecutar un procedimiento almacenado.
>>> >> Alguien podría faciliarme un ejemplo completo.
>>> >> Hugo A. Gseññ
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida