BCP em arquivo Batch

Frequentemente eu recebo pedidos de ajuda e revendo descobri que um dos top 10 de pedido de ajuda é como executar um BCP de dentro de arquivos Batch.

BCP (Bulk Copy Program) é um aplicativo que copia grandes volumes de dados, pode ser utilizado para importar e exportar dado, ou até mesmo copiar dados entre instâncias do SQL Server. E a grande vantagem deste aplicativo é a velocidade, ele é muito mais rápido do que os procedimentos padrões de importação ou exportação de dados.

A sintaxe para utilizar o BCP dentro de um batch:

@echo off  
@if
not %OS==goto :Exit
bcp AdventureWorks
..HumanResources.Department out c:Department.txt
Exit

A sintaxe para utilizar o BCP dentro de um VBS:

Set x = WsCript.CreateObject("WScript.Shell")   
retorno
= x.Run("bcp AdventureWorks..HumanResources.Department out c:Department.txt -erro.txt",0,TRUE")

Vale lembrar que o BCP existe em versões antigas do SQL Server, e vale a pena dar uma olhadinha na sintaxe de comando para outras opções.

Banco de dados Resource

O SQL Server 2005 adicionou um novo banco de dados chamado Resource.
Este banco de dados contém registros de tabelas de sistema, metadata e stored procedures que o SQL Server necessita para rodar, além disso, esse banco de dados é sempre read-only. E não contém informações sobre as instâncias e os bancos de dados isso acontece porque esse banco de dados é escrito somente durante a instalação de um novo Service Pack.
O Resource contém apenas tabelas físicas e stored procedures referenciadas logicamente por outros databases, ele pode ser encontrado por default em : c:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLBinn.mdf (ldf).
No SQL Server 2000 quando era feita uma atualização de um Service Pack era necessário (em alguns casos) rodar scripts que excluíam e re-criavam os objetos de sistema, este processo demorava tempo e poderia criar problemas na aplicação para voltar a release.
No SQL Server 2008 quando atualizamos um novo Service Pack ou quick fix, uma cópia do resource é feita, isso nos da garantias na hora de voltar uma atualização.
É possível conectar ao Resource database se a conexão for single-user digitando o comando: Use MSSQLSystemResource.