2012-09-25 2 views
2

커다란 곱셈 된 SELECT 문을 사용하여 결과를 가져 와서 쿼리 결과를 CVS 파일로 전자 메일로 보내려고했습니다. 나는 정확한 질의와 이메일 전송을 가지고 있지만 결과를 CVS 파일로 내보내는 작업을 자동화하는 데 어려움을 겪고있다. 내가 읽은 바에 따르면 쿼리 결과를 자동으로 내보내는 가장 좋은 방법은 "BCP"라는 도구입니다.xp_cmdshell SQL Server 2008 R2의 기본 오류 208, BCP

USE FootPrint; 

DECLARE @sql VARCHAR(2048); 
DECLARE @dir VARCHAR(50); 

SET @dir = 'C:\Users\bailey\Desktop'; 
SET @sql = 'bcp "SELECT TOP 10 * FROM datex_footprint.Shipments" queryout "' + @dir + '" -c -t, -T'; 

EXEC master..xp_cmdshell @sql; 

발자국은 특정 데이터베이스의 이름이며, 스키마를 datex_footprint :

나는 Management Studio에서 다음과 같이 BCP를 사용하려고했습니다. (실제 쿼리가 아니며 테스트 용으로 만 사용됩니다). 나는이 프로그램을 실행할 때

, 내가 오류는 다음과 같습니다 "SQLSTATE = S0002, NativeError = 208" "오류 = [마이크로 소프트] [SQL 서버 네이티브 클라이언트 10.0] [SQL 서버] 잘못된 개체 이름 'datex_footprint.Shipments '. "

나는 datex_footprint.Shipments가 내가 테스트하려고하는 데이터에 대한 올바른 스키마 \ 테이블 액세스임을 100 % 확신합니다.

내가 누락 된 내용이나 CSV 파일로이 결과를 내보내는 중 잘못된 것을 보는 사람이 있습니까? 특히,이 과정을 자동화하려고합니다. 결과를 CSV 파일로 내보내는 방법을 알고 있지만 T-SQL에서 파일을 생성하여 시간별 파일 생성을 자동화 할 수 있습니다.

도움이 될 것입니다.

답변

3

[SOLVED]

내가 잘못한 것을 알았습니다. 나는 완벽한 형태의 견해를 밝히지 않고 있었다. "database.schema.table/view"대신 "schema.Table/View"를 사용하고있었습니다. 또한 "-S"+ @@ SERVERNAME 플래그를 추가했습니다. SQL Server가 현재 쿼리에 연결되어있는 서버를 사용하도록 BCP 유틸리티에 알려줍니다.

T-SQL에서 SELECT 쿼리의 결과를 CSV 파일을 생성 할 수있는 올바른 코드, SQL 서버 2008는 다음과 같습니다 그래서

DECLARE @sql VARCHAR(8000); 

SELECT @sql = 'bcp "SELECT * FROM FootPrint.datex_footprint.Shipments" queryout "C:\Users\bailey\Desktop\FlatTables\YamotoShipping.csv" -c -t, -T -S' + @@SERVERNAME; 

exec master..xp_cmdshell @sql; 

내가 추가하면 "발자국을." 데이터베이스를 식별하기 위해 작동했습니다.

참고 : SQL Server 2008 R2를 실행하고 있습니다.

0

나는 동일한 오류가 있지만 다른 방법으로 해결했습니다. ID에 기본 데이터베이스를 추가 한 다음 BCP가 기본 데이터베이스에서 테이블을 찾기 시작하고 파일을 처리했습니다.