2012-05-08 9 views
5

que tiene un archivo dentro de un directorio \\myServer\Admin\temp\testtemp.txtservidor SQL 2008: Copiar un archivo y cambiarle el nombre

Necesito escribir una TSQL a

  1. Buscar testtemp.txt archivo.
  2. Si existe, crear una copia de la misma y cambie su nombre a Copytesttemp.txt
  3. Si hay testtemp.txt ya en el directorio anterior como esto

    \\abcd\Admin\temp\Copytesttemp.txt 
    
  4. luego borrarlo y volver a crear Copytesttemp.txt

¿Cómo lo logro? Gracias.

+0

se trata de una pequeña fracción de mi TSQL. Quiero poder pasar este nuevo archivo copytesttemp.txt a mi operación de inserción masiva y luego consultar la tabla resultante de la inserción masiva, crear una vista, etc. – Nemo

+1

¿Qué has intentado? No solo hacemos paso a paso todo solo podemos brindar orientación. – JonH

+0

En referencia a http://stackoverflow.com/questions/10486013/sql-server-2008-bulk-insert-taking-forever, necesito poder pasar el archivo Copytesttemp.txt a mi operación de inserción masiva. Déjame por favor saber si necesitas más explicaciones Gracias de nuevo. – Nemo

Respuesta

14

Puede usar xp_cmdshell para ejecutar cualquier comando de DOS que desee, p.

declare @cmdstring varchar(1000) 

set @cmdstring = 'copy \\myServer\Admin\temp\testtemp.txt \\myServer\Admin\temp\Copytesttemp.txt' 
exec master..xp_cmdshell @cmdstring 

Solo asegúrese de que xp_cmdshell esté habilitado en su instalación.

+0

Hola Paul, gracias por tu ayuda. Pero obtengo acceso denegado, 0 archivo (s) copiados. Comprobé y descubrí que xp_cmdshell está instalado/habilitado en mi servidor. ¿Cualquier pista? – Nemo

+0

Verifique en qué cuenta se está ejecutando SQL Server y luego verifique que la cuenta pueda Leer/Escribir el directorio compartido en el que está intentando escribir. – Paul

+0

Gracias Paul. Fue un problema de permiso y se solucionó. Me dieron permiso para acceder a recursos en la red. – Nemo

3

Cree un trabajo del Agente SQL que ejecute un script de comando para realizar las acciones.

0

Usted puede intentar esto para copiar un archivo y cambiar el nombre

EXEC master..xp_cmdshell 'COPY D:\T1\a.txt D:\T2\b.txt' 

Sólo copiar y mover al igual CMD

EXEC master..xp_cmdshell 'COPY D:\T1\abcd.txt D:\T2' 
EXEC master..xp_cmdshell 'Move D:\T1\abcd.txt D:\T2' 
Cuestiones relacionadas