2016-10-13 7 views
0

SQL SErver 2008 R2 Express 테이블의 내용을 CSV 또는 TXT 파일로 내 보내야합니다.xp_cmdshell없이 CSV로 SQL Server 2008 R2 테이블 내용 내보내기

xp_cmdshell을 활성화 할 수 없으며 임시 분산 쿼리를 허용 할 수도 없습니다.

테이블 중 하나의 트리거에서 실행 가능해야합니다.

+1

이것은 훨씬 더 끔찍한 디자인 패턴을 극복하기위한 끔찍한 해킹처럼 들립니다. (죄송 합니다만 무례한 것은 아닙니다.)하지만 정말로이 경로를 사용하려면 테이블 데이터를 파일로 내보내는 powershell 스크립트가 포함 된 작업 단계로 SQL 에이전트 작업을 조사해야합니다. 트리거는'msdb.dbo.sp_start_job'을 호출 할 수 있습니다. 하지만 진지하게! – DMason

+0

왜 방아쇠를 당길 필요가 있습니까? @DMason은 올바른 IMO를 가지고 있습니다. – SMM

+0

예. 소스 코드를 수정하기가 매우 어려우던 오래된 시스템에서 데이터를 가져 오려고 시도하는 것은 끔찍한 해킹입니다 (1999 년경). DB는 쉽게 수정할 수 있습니다. 또한 SQL Express를 실행 중입니다. 언급하지 않으니 죄송합니다. SQL 에이전트가 없습니다. 새 데이터가 있으면 추출 만 업데이트하면됩니다. 따라서 트리거가됩니다. 내 다른 해결책은 PS 스크립트가있는 작업 스케줄러이지만 업데이트가 없을 때 계속 실행하는 것은 어리석은 일입니다. 새 데이터가있을 때 추출 만 작성하면됩니다. 추출물을 채취하여보고를 위해 다른 시스템으로 옮깁니다. – Maa421s

답변

0
USE master; 
GO 
EXEC sp_configure 'show advanced option', '1'; 
RECONFIGURE; 
EXEC sp_configure; 
EXEC sp_configure 'Ad Hoc Distributed Queries', '1'; 
RECONFIGURE; 
EXEC sp_configure; 

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
         'Text;Database=C:\Temp\;HDR=Yes;', 
         'SELECT * FROM test.csv') 
      (object_id, name) 

SELECT 'object_id', 'name' 

UNION ALL 

SELECT object_id, name 
FROM sys.tables 

--This require csv file to be there at location 

삽입시 문제가 발생하면 Link을 따르십시오.

일단 작동하면 트리거에서 동일한 스크립트를 사용합니다.

+0

죄송합니다. 제 게시물에 명시된 바와 같이 '임시적인 분산 쿼리'를 사용할 수 없습니다. 그렇지 않으면 작동하지 않을 것이라고 가정합니다. 그래도 고마워 – Maa421s