Exportar resultado de una query a un archivo en Sql Server 2008 R2 (BCP Utility)

A continuación les presentamos un procedimiento almacenado que hemos creado para que puedan exportar sus consultas tsql rápidamente a un archivo plano.


GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo][qualityInfoSolutions]  
	@Archivo varchar(255), 
	@Query varchar(1000)	
AS
BEGIN TRY

	declare @Sql nvarchar(1000);
	declare @Resultado nvarchar(50);
	
	set @Sql = 'exec master..xp_cmdshell ' + char(39) + 'bcp "'+ @Query +
		'" queryout "' + @Archivo + '" -c -t -T ' + char(39)
	PRINT @Sql;
	EXECUTE sp_executesql @Sql;

	SET @Resultado = 'Exito'
	select @Resultado as Resultado;

END TRY
BEGIN CATCH

	SET @Resultado = 'Error'
	select @Resultado as Resultado;

END CATCH

A continuación un ejemplo de como probarlo:


DECLARE	@return_value int
	
	EXEC	@return_value = [dbo].[Sp805ExportBDToFile]
			@Archivo 'C:\cliente.txt',
			@Query = 'SELECT * FROM TUDATABASE.DBO.Cliente'

	SELECT	'Return Value' = @return_value

*Este procedimiento realiza la exportación por lotes de 1000 registros.
*Es importante enviar la ruta completa de la tabla
*Deben tener habilitada la opción XPCmdShellEnable (Pueden encontrarla presionando clic derecho sobre el servidor-> Facets -> Server Configuration -> XPCmdShellEnable –Dejar en True)

Esperamos sea de su utilidad.

También te podría gustar...

12 Respuestas

  1. Emmanuel Castro dice:

    Hola, estoy tratando de usar algo parecido, pero me manda el error:

    output
    Unable to load BCP resource DLL. BCP cannot continue.

    Ya active el XPCmdShellEnable.. 🙁

  2. Neil Tarazona dice:

    En que parte se adiciona el store procedure en la BD Master?

    • Debes utilizar un programa por ejemplo sql management studio y ejecutar el código mediante una consulta sql.

      Si utilizas este programa veras que esta ordenado todo por carpetas y podrás encontrar una que dice Store Procedure o Procedimientos Almacenados dependiendo del idioma de instalación.

      Saludos

  3. Natural dice:

    Es posible sacar un lote mas grande?

  4. Eso solo es posible si tu equipo es el que tiene instalado sql server y funciona como servidor. El problema es que si utilizas alguna ruta local como C:\ sql server la interpretara como su unidad y no la tuya.

    Saludos

  5. Darwin Vargas Morales dice:

    Una pregunta el procedimiento me funciono muy bien pero tengo una duda hay forma de cambiar la ruta del archivo que no salga en el servidor, sino en un equipo local que utilice SQL management Studio.

  6. Gary dice:

    me da este error
    Error = [Microsoft][SQL Server Native Client 10.0]Unable to open BCP host data-file

    • Buenas tardes, te comento que este error suele suceder cuando la ruta de origen es C:\…. intenta cambiar el directorio ejemplo C:\micarpeta\… Si no te funciona mándame la instrucción para poder ayudarte. Saludos

      • En realidad eso ocurre porque el usuario con el que se ejecuta el servicio SQL (MSSQL) es el NT, el cual no tiene permisos de escritura en el disco.

        La solucion es cambiar el usuario del servicio.

        Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada.