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] 
 

Responder a