Ejecutar sql mediante xp_cmdshell

17/07/2008 - 23:44 por OJVM | Informe spam
Buenas tardes a todos. bueno pues estoy tratando de ejecutar una
sentencia sql y mandar el resultado a un archivo de texto.

La cuestion esta en que si se genera el archivo de texto pero me
arroja el siguiente texto.

Msg 137, Level 15, State 2, Server xxxxxxxxx, Line 1
Must declare the variable '@qryPermisos'.

y este es codigo con el que trato de generarlo. les agradesco de
antemano la ayuda que me puedan proporcionar.

declare @claveEmpresa char(3)
declare @qryPermisos varchar(1000)
declare @permisos char(1)
declare @cmd varchar(1000)

set @claveEmpresa = '001'
set @permisos = 'P'

set @qryPermisos = 'SELECT ' + @claveEmpresa + ' AS empresa,
e.EMPNUMEMP AS empleado, a.Asisfecha AS fecha, e.EMPXTRA10 AS nomina,
a.AsisPermCuenta FROM ASISTENCIA AS a INNER JOIN EMPLEADO AS e ON
e.EMPNUMINT = a.EMPNUMINT where a.asispermiso = ' + @permisos
set @cmd = 'osql -P -S -Q @qryPermisos -o "c:\exportacionReloj
\archivoAsistencias.txt" -w2000'
exec master..xp_cmdshell @cmd
GO

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera (MVP)
18/07/2008 - 04:24 | Informe spam
Modifique asi:

set @cmd = 'osql -P -S -Q '+' " '+ @qryPermisos + ' " ' +
' -o "c:\exportacionReloj\archivoAsistencias.txt" -w2000'



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



"OJVM" wrote:

Buenas tardes a todos. bueno pues estoy tratando de ejecutar una
sentencia sql y mandar el resultado a un archivo de texto.

La cuestion esta en que si se genera el archivo de texto pero me
arroja el siguiente texto.

Msg 137, Level 15, State 2, Server xxxxxxxxx, Line 1
Must declare the variable '@qryPermisos'.

y este es codigo con el que trato de generarlo. les agradesco de
antemano la ayuda que me puedan proporcionar.

declare @claveEmpresa char(3)
declare @qryPermisos varchar(1000)
declare @permisos char(1)
declare @cmd varchar(1000)

set @claveEmpresa = '001'
set @permisos = 'P'

set @qryPermisos = 'SELECT ' + @claveEmpresa + ' AS empresa,
e.EMPNUMEMP AS empleado, a.Asisfecha AS fecha, e.EMPXTRA10 AS nomina,
a.AsisPermCuenta FROM ASISTENCIA AS a INNER JOIN EMPLEADO AS e ON
e.EMPNUMINT = a.EMPNUMINT where a.asispermiso = ' + @permisos
set @cmd = 'osql -P -S -Q @qryPermisos -o "c:\exportacionReloj
\archivoAsistencias.txt" -w2000'
exec master..xp_cmdshell @cmd
GO

Respuesta Responder a este mensaje
#2 OJVM
18/07/2008 - 22:23 | Informe spam
On 17 jul, 21:24, Gustavo Larriera (MVP)
wrote:
Modifique asi:

 set @cmd = 'osql  -P -S -Q '+' " '+ @qryPermisos + ' " ' +
 ' -o "c:\exportacionReloj\archivoAsistencias.txt" -w2000'

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

"OJVM" wrote:
> Buenas tardes a todos. bueno pues estoy tratando de ejecutar una
> sentencia sql y mandar el resultado a un archivo de texto.

> La cuestion esta en que si se genera el archivo de texto pero me
> arroja el siguiente texto.

> Msg 137, Level 15, State 2, Server xxxxxxxxx, Line 1
> Must declare the variable '@qryPermisos'.

> y este es codigo con el que trato de generarlo. les agradesco de
> antemano la ayuda que me puedan proporcionar.

> declare @claveEmpresa char(3)
> declare @qryPermisos varchar(1000)
> declare @permisos char(1)
> declare @cmd varchar(1000)

> set @claveEmpresa = '001'
> set @permisos = 'P'

> set @qryPermisos = 'SELECT ' + @claveEmpresa + ' AS empresa,
> e.EMPNUMEMP AS empleado, a.Asisfecha AS fecha, e.EMPXTRA10 AS nomina,
> a.AsisPermCuenta FROM ASISTENCIA AS a INNER JOIN EMPLEADO AS e ON
> e.EMPNUMINT = a.EMPNUMINT where a.asispermiso = ' + @permisos
> set @cmd = 'osql  -P -S -Q @qryPermisos -o "c:\exportacionReloj
> \archivoAsistencias.txt" -w2000'
> exec master..xp_cmdshell @cmd
> GO



Te agradesco tu atencion. voy a probarlo y les comento.
Respuesta Responder a este mensaje
#3 OJVM
18/07/2008 - 22:55 | Informe spam
On 17 jul, 21:24, Gustavo Larriera (MVP)
wrote:
Modifique asi:

 set @cmd = 'osql  -P -S -Q '+' " '+ @qryPermisos + ' " ' +
 ' -o "c:\exportacionReloj\archivoAsistencias.txt" -w2000'

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

"OJVM" wrote:
> Buenas tardes a todos. bueno pues estoy tratando de ejecutar una
> sentencia sql y mandar el resultado a un archivo de texto.

> La cuestion esta en que si se genera el archivo de texto pero me
> arroja el siguiente texto.

> Msg 137, Level 15, State 2, Server xxxxxxxxx, Line 1
> Must declare the variable '@qryPermisos'.

> y este es codigo con el que trato de generarlo. les agradesco de
> antemano la ayuda que me puedan proporcionar.

> declare @claveEmpresa char(3)
> declare @qryPermisos varchar(1000)
> declare @permisos char(1)
> declare @cmd varchar(1000)

> set @claveEmpresa = '001'
> set @permisos = 'P'

> set @qryPermisos = 'SELECT ' + @claveEmpresa + ' AS empresa,
> e.EMPNUMEMP AS empleado, a.Asisfecha AS fecha, e.EMPXTRA10 AS nomina,
> a.AsisPermCuenta FROM ASISTENCIA AS a INNER JOIN EMPLEADO AS e ON
> e.EMPNUMINT = a.EMPNUMINT where a.asispermiso = ' + @permisos
> set @cmd = 'osql  -P -S -Q @qryPermisos -o "c:\exportacionReloj
> \archivoAsistencias.txt" -w2000'
> exec master..xp_cmdshell @cmd
> GO



mira estube probando la correcion que me enviaste pero de cualquier
manera me marca error. mira por el momento tengo otro pequeño
problema, creo que es algo muy facil pero no le encuentro la solucion.
deseo concatenar una sentencia sql con un parametro pero simepre
obtengo error. es algo asi


DECLARE @sqltext NVARCHAR(800)
declare @estatusEmp char(2)
set @estatusEmp = 'A'
Set @sqltext = N'select empestatus, empnumint, empnumemp from empleado
where ltrim(rtrim(empestatus)) =' + @estatusEmp
print @sqltext


select empestatus, empnumint, empnumemp from empleado where
ltrim(rtrim(empestatus)) =A

al ejecutar ese qry me marca el erro de que la columna "A" no existe.,
lo cual es correcto, mas sin embargo no encuentro la manera de
agregarle la comilla simple a la letra A, para que quede algo asi.

select empestatus, empnumint, empnumemp from empleado where
ltrim(rtrim(empestatus)) = 'A'

te agradesco de antemano la ayuda que me puedas proporcionar.
Respuesta Responder a este mensaje
#4 Gustavo Larriera (MVP)
18/07/2008 - 23:42 | Informe spam
En mi ejemplo del mensaje previo, revise con cuidado el uso de ' y de "

Para concatenar un ' usted debe escribir el apóstrofo en forma doble. Por
ejemplo, si usted quiere construir un string que sea

SOY LA LETRA 'A' EN ESTE STRING

entonces haga esto:

'SOY LA LETRA ' + '''' + 'A' + '''' + ' EN ESTE STRING'




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



"OJVM" wrote:

On 17 jul, 21:24, Gustavo Larriera (MVP)
wrote:
> Modifique asi:
>
> set @cmd = 'osql -P -S -Q '+' " '+ @qryPermisos + ' " ' +
> ' -o "c:\exportacionReloj\archivoAsistencias.txt" -w2000'
>
> Gustavo Larriera, Microsoft MVPhttp://www.linkedin.com/in/gustavolarriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase..
>
> "OJVM" wrote:
> > Buenas tardes a todos. bueno pues estoy tratando de ejecutar una
> > sentencia sql y mandar el resultado a un archivo de texto.
>
> > La cuestion esta en que si se genera el archivo de texto pero me
> > arroja el siguiente texto.
>
> > Msg 137, Level 15, State 2, Server xxxxxxxxx, Line 1
> > Must declare the variable '@qryPermisos'.
>
> > y este es codigo con el que trato de generarlo. les agradesco de
> > antemano la ayuda que me puedan proporcionar.
>
> > declare @claveEmpresa char(3)
> > declare @qryPermisos varchar(1000)
> > declare @permisos char(1)
> > declare @cmd varchar(1000)
>
> > set @claveEmpresa = '001'
> > set @permisos = 'P'
>
> > set @qryPermisos = 'SELECT ' + @claveEmpresa + ' AS empresa,
> > e.EMPNUMEMP AS empleado, a.Asisfecha AS fecha, e.EMPXTRA10 AS nomina,
> > a.AsisPermCuenta FROM ASISTENCIA AS a INNER JOIN EMPLEADO AS e ON
> > e.EMPNUMINT = a.EMPNUMINT where a.asispermiso = ' + @permisos
> > set @cmd = 'osql -P -S -Q @qryPermisos -o "c:\exportacionReloj
> > \archivoAsistencias.txt" -w2000'
> > exec master..xp_cmdshell @cmd
> > GO

mira estube probando la correcion que me enviaste pero de cualquier
manera me marca error. mira por el momento tengo otro pequeño
problema, creo que es algo muy facil pero no le encuentro la solucion.
deseo concatenar una sentencia sql con un parametro pero simepre
obtengo error. es algo asi


DECLARE @sqltext NVARCHAR(800)
declare @estatusEmp char(2)
set @estatusEmp = 'A'
Set @sqltext = N'select empestatus, empnumint, empnumemp from empleado
where ltrim(rtrim(empestatus)) =' + @estatusEmp
print @sqltext


select empestatus, empnumint, empnumemp from empleado where
ltrim(rtrim(empestatus)) =A

al ejecutar ese qry me marca el erro de que la columna "A" no existe.,
lo cual es correcto, mas sin embargo no encuentro la manera de
agregarle la comilla simple a la letra A, para que quede algo asi.

select empestatus, empnumint, empnumemp from empleado where
ltrim(rtrim(empestatus)) = 'A'

te agradesco de antemano la ayuda que me puedas proporcionar.

Respuesta Responder a este mensaje
#5 OJVM
19/07/2008 - 01:21 | Informe spam
On 18 jul, 16:42, Gustavo Larriera (MVP)
wrote:
En mi ejemplo del mensaje previo, revise con cuidado el uso de ' y de "

Para concatenar un ' usted debe escribir el apóstrofo en forma doble. Por
ejemplo, si usted quiere construir un string que sea

SOY LA LETRA 'A' EN ESTE STRING

entonces haga esto:

'SOY LA LETRA ' + '''' + 'A' + '''' + ' EN ESTE STRING'

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

"OJVM" wrote:
> On 17 jul, 21:24, Gustavo Larriera (MVP)
> wrote:
> > Modifique asi:

> >  set @cmd = 'osql  -P -S -Q '+' " '+ @qryPermisos + ' " ' +
> >  ' -o "c:\exportacionReloj\archivoAsistencias.txt" -w2000'

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

> > "OJVM" wrote:
> > > Buenas tardes a todos. bueno pues estoy tratando de ejecutar una
> > > sentencia sql y mandar el resultado a un archivo de texto.

> > > La cuestion esta en que si se genera el archivo de texto pero me
> > > arroja el siguiente texto.

> > > Msg 137, Level 15, State 2, Server xxxxxxxxx, Line 1
> > > Must declare the variable '@qryPermisos'.

> > > y este es codigo con el que trato de generarlo. les agradesco de
> > > antemano la ayuda que me puedan proporcionar.

> > > declare @claveEmpresa char(3)
> > > declare @qryPermisos varchar(1000)
> > > declare @permisos char(1)
> > > declare @cmd varchar(1000)

> > > set @claveEmpresa = '001'
> > > set @permisos = 'P'

> > > set @qryPermisos = 'SELECT ' + @claveEmpresa + ' AS empresa,
> > > e.EMPNUMEMP AS empleado, a.Asisfecha AS fecha, e.EMPXTRA10 AS nomina,
> > > a.AsisPermCuenta FROM ASISTENCIA AS a INNER JOIN EMPLEADO AS e ON
> > > e.EMPNUMINT = a.EMPNUMINT where a.asispermiso = ' + @permisos
> > > set @cmd = 'osql  -P -S -Q @qryPermisos -o "c:\exportacionReloj
> > > \archivoAsistencias.txt" -w2000'
> > > exec master..xp_cmdshell @cmd
> > > GO

> mira estube probando la correcion que me enviaste pero de cualquier
> manera me marca error. mira por el momento tengo otro pequeño
> problema, creo que es algo muy facil pero no le encuentro la solucion.
> deseo concatenar una sentencia sql con un parametro pero simepre
> obtengo error. es algo asi

> DECLARE @sqltext NVARCHAR(800)
> declare @estatusEmp char(2)
> set @estatusEmp = 'A'
> Set @sqltext = N'select empestatus, empnumint, empnumemp from empleado
> where ltrim(rtrim(empestatus)) =' + @estatusEmp
> print @sqltext


> select empestatus, empnumint, empnumemp from empleado where
> ltrim(rtrim(empestatus)) =A

> al ejecutar ese qry me marca el erro de que la columna "A" no existe.,
> lo cual es correcto, mas sin embargo no encuentro la manera de
> agregarle la comilla simple a la letra A, para que quede algo asi.

> select empestatus, empnumint, empnumemp from empleado where
> ltrim(rtrim(empestatus)) = 'A'

> te agradesco de antemano la ayuda que me puedas proporcionar.



muchas gracias, ya me funciono
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida