Creo que estas buscando esto. (Sacado de libros en pantalla del SQL)
xp_cmdshell
Ejecuta una cadena de comandos como comando del sistema operativo y devuelve el
resultado como filas de texto. Concede permisos de usuarios no administrativos
para ejecutar xp_cmdshell.
<mk:@MSITStore:C:\Archivos%20de%20programa\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/Basics/note.gif>
Nota Cuando xp_cmdshell se ejecuta en el sistema operativo Microsoft® Windows®
95 ó 98, el código de retorno de xp_cmdshell no será el código de salida del
ejecutable invocado. El código de retorno será siempre 0.
Sintaxis
xp_cmdshell {'command_string'} [, no_output]
Argumentos
'command_string'
Es la cadena de comandos que se ejecuta en el intérprete de comandos del
sistema operativo. command_string es de tipo varchar(255) o nvarchar(4000) y no
tiene valor predeterminado. command_string no puede contener más de un par de
comillas dobles. Es necesario un único par de comillas dobles si hay espacios
en las rutas de acceso de archivo o en los nombres de programa a los que hace
referencia command_string. Si tiene problemas con espacios incrustados,
considere el uso de nombres de archivo de tipo FAT 8.3 como solución.
no_output
Es un parámetro opcional para ejecutar command_string y no devuelve ninguna
salida al cliente.
Valores del código de retorno
0 (correcto) o 1 (error)
Conjuntos de resultados
La ejecución de esta instrucción xp_cmdshell devuelve una lista del contenido
del directorio actual.
xp_cmdshell 'dir *.exe'
Las filas se devuelven en una columna nvarchar(255).
La ejecución de esta instrucción xp_cmdshell devuelve el siguiente conjunto de
resultados:
xp_cmdshell 'dir *.exe', NO_OUTPUT
Éste es el resultado:
The command(s) completed successfully.
Observaciones
xp_cmdshell opera de forma sincrónica. No devuelve el control hasta que se
completa el comando del sistema operativo.
Cuando se conceden permisos de ejecución a los usuarios, éstos pueden ejecutar
cualquier comando del sistema operativo en el intérprete de comandos de
Microsoft Windows NT® sobre el cual la cuenta que ejecute Microsoft SQL
Server(tm) tenga permisos de ejecución.
De forma predeterminada, sólo los miembros de la función fija de servidor
sysadmin pueden ejecutar este procedimiento almacenado extendido. Sin embargo,
puede conceder a otros usuarios permisos de ejecución sobre este procedimiento
almacenado.
Cuando un usuario miembro de la función fija de servidor sysadmin llama a
xp_cmdshell, xp_cmdshell se ejecutará en el contexto de seguridad en el que se
esté ejecutando el servicio SQL Server. Cuando el usuario no sea miembro del
grupo sysadmin, xp_cmdshell representará la cuenta de proxy del Agente SQL
Server, que se especifica mediante xp_sqlagent_proxy_account. Si la cuenta de
proxy no está disponible, xp_cmdshell producirá errores. Esto sólo sucede en
Microsoft® Windows NT® 4.0 y Windows 2000. En Windows 9.x no hay representación
y xp_cmdshell siempre se ejecuta en el contexto de seguridad del usuario de
Windows 9.x que inició SQL Server.
<mk:@MSITStore:C:\Archivos%20de%20programa\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/Basics/note.gif>
Nota En versiones anteriores, un usuario que tuviera permisos de ejecución
para xp_cmdshell ejecutaba el comando en el contexto de la cuenta de usuario
del servicio MSSQLServer. SQL Server se podía configurar (mediante una opción
de configuración) de forma que los usuarios que no tuvieran acceso de sa a SQL
Server pudieran ejecutar xp_cmdshell en el contexto de la cuenta
SQLExecutiveCmdExec de Windows NT. En SQL Server 7.0, la cuenta se llama
SQLAgentCmdExec. Los usuarios que no son miembros de la función fija de
servidor sysadmin ejecutan ahora los comandos en el contexto de esta cuenta sin
tener que especificar opciones de configuración.
Permisos
De forma predeterminada, los permisos de ejecución de xp_cmdshell corresponden
a los miembros de la función fija de servidor sysadmin, pero se pueden conceder
a otros usuarios.
<mk:@MSITStore:C:\Archivos%20de%20programa\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/Basics/important.gif>
Importante Si decide utilizar una cuenta de Windows NT que no sea miembro del
grupo del administrador local para el servicio MSSQLServer, los usuarios que no
sean miembros de la función fija de servidor sysadmin no podrán ejecutar
xp_cmdshell.
Ejemplos
A. Devolver una lista de archivos ejecutables
Este ejemplo muestra el procedimiento almacenado extendido xp_cmdshell
ejecutando un comando de directorio.
EXEC master..xp_cmdshell 'dir *.exe'
B. Utilizar comandos de red de Windows NT
Este ejemplo muestra el uso de xp_cmdshell en un procedimiento almacenado. Este
ejemplo notifica a los usuarios (con net send) que se va a cerrar SQL Server,
detiene el servidor (con net pause) y, después, apaga el servidor (con net
stop).
CREATE PROC shutdown10
AS
EXEC xp_cmdshell 'net send /domain:SQL_USERS ''SQL Server shutting down
in 10 minutes. No more connections allowed.', no_output
EXEC xp_cmdshell 'net pause sqlserver'
WAITFOR DELAY '00:05:00'
EXEC xp_cmdshell 'net send /domain: SQL_USERS ''SQL Server shutting down
in 5 minutes.', no_output
WAITFOR DELAY '00:04:00'
EXEC xp_cmdshell 'net send /domain:SQL_USERS ''SQL Server shutting down
in 1 minute. Log off now.', no_output
WAITFOR DELAY '00:01:00'
EXEC xp_cmdshell 'net stop sqlserver', no_output
C. No devolver la salida
Este ejemplo utiliza xp_cmdshell para ejecutar una cadena de comandos sin
devolver la salida al cliente.
USE master
EXEC xp_cmdshell 'copy c:\sqldumps\pubs.dmp \\server2\backups\sqldumps',
NO_OUTPUT
D. Utilizar el estado de retorno
En este ejemplo, el procedimiento almacenado extendido xp_cmdshell también
sugiere el estado de retorno del comando. El valor del código de retorno se
almacena en la variable @result.
DECLARE @result int
EXEC @result = xp_cmdshell 'dir *.exe'
IF (@result = 0)
PRINT 'Success'
ELSE
PRINT 'Failure'
E. Escribir el contenido de variables en un archivo
Este ejemplo escribe el contenido del directorio actual en un archivo llamado
dir_out.txt, en el directorio actual del servidor.
DECLARE @cmd sysname, @var sysname
SET @var = 'dir /p'
SET @cmd = 'echo ' + @var + ' > dir_out.txt'
EXEC master..xp_cmdshell @cmd
Véase también
CREATE PROCEDURE
<mk:@MSITStore:C:\Archivos%20de%20programa\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_create_4hk5.htm>
EXECUTE
<mk:@MSITStore:C:\Archivos%20de%20programa\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_ea-ez_05ro.htm>
Crear cuentas de seguridad <javascript:hhobj_1.Click()>
Procedimientos almacenados del sistema
<mk:@MSITStore:C:\Archivos%20de%20programa\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_sp_00_519s.htm>
(procedimientos extendidos generales)
©1988-2000 Microsoft Corporation. Reservados todos los derechos.
<ms-its:hlpview.chm::/gscopy_0z3m.htm>
Suerte.
Diego Hernán Pascuzzi
Jefatura Administración de Red y Solicitudes ( TX, F.O. y TP )
Gerencia Supervisión y Gestión de Red
Telefónica de Argentina S.A.
Av. Corrientes 707 - Piso 13° - (C1043AAH) - Bs.As. - Argentina
Tel.: 54-011-4333-7645
Fax: 54-011-4303-5586 Interno: 1011
[EMAIL PROTECTED]
http://wsir <http://wsir/>
________________________________
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de José Cardaropoli
Enviado el: Lunes 14 de Mayo de 2007 10:25
Para: Pascuzzi Diego Hernan
Asunto: [dbadmin] Consulta sobre sp_
Necesito renombrar un archivos externo a la base de datos y quiero hacerlo con
un Store Procedure. Me dijero que hay un sp_?????? que ejecuta comandos
externos pero no lo encuentro... Alguien podría decirme cual es??
Desde ya muchas gracias
José Oscar Cardaropoli
[EMAIL PROTECTED]