2016-06-30 11 views
1

로그 항목을 삽입하기 위해 SQL Server에서 저장 프로 시저를 호출하는 타사 소프트웨어가 있습니다. 오히려 로그 항목을 SQL Server 테이블에 있지 않고 txt 파일에 직접 쓰는 것이 좋습니다.SQL Server에서 외부 파일에 로그온하는 방법 2016

나는 ##temptable에있는 항목을 수집하고 BCP를 사용하여 작성했지만 문제가 발생했습니다. 타사 소프트웨어는 저장 프로 시저에 대한 모든 호출을 트랜잭션 중에 래핑하여 내보내는 동안 BCP를 중단시킵니다.

##temptable을 사용하고 SQL Server 에이전트 작업을 일정 간격으로 덤프했는데 트랜잭션이 오래 동안 실행될 수 있으며 중복이없는 텍스트 파일에 항목을 쓸 수 있는지 확실하지 않습니다. 트랜잭션 길이에 따라 행이 누락되거나 누락 될 수 있습니다.

저장 프로 시저에서 파일로 쓸 수있는 좋은 방법이 있습니까? 그렇다면 저장 프로 시저의 여러 호출을 통해 쓰기를 일괄 처리하는 방법이 있습니까?

+3

로그에 다른 플래그를 추가에서 찾을 수 있습니다 (그리고 예를 제시)

CREATE ASSEMBLY MyFirstUdp FROM 'C:\Programming\MyFirstUdp.dll'; CREATE PROCEDURE HelloWorld AS EXTERNAL NAME MyFirstUdp.StoredProcedures.HelloWorld; EXEC HelloWorld; 

CLR에 대한 자세한 정보가 저장 프로 시저 : 여기에 외부 어셈블리에서 프로 시저를 만드는 방법 MSDN에서 예이다 진입 테이블? SQLAgent가 디스크에 덤프 한 후에 지 웁니다. 해당 테이블을 터치 할 수 없다면 삽입 트리거를 사용하여 항목을 다른 테이블에 복제 한 다음 거기에서 수행하십시오. – Squirrel

+0

창의적인 접근! 잠재적으로 많은 장기 실행 삽입 트랜잭션이 제 3 자 소프트웨어에서 실행되는 동안 업데이트 트랜잭션을 실행하기 위해 과도한 잠금이 발생할 수 있다고 생각합니다. 그러나이 제안에는 분명히 뭔가가 있습니다! 감사. –

+0

다음 새 테이블을 고려해보십시오. 기존 로그 입력 테이블에는 영향을 미치지 않습니다. – Squirrel

답변

1

TSQL 배치에서 SQL Server 컨트롤을 벗어나는 리소스에 액세스하려면 CLR 저장 프로 시저를 사용할 수 있습니다. 이 파일을 사용하면 예제 파일이나 네트워크 연결과 관련하여 원하는 모든 작업을 수행 할 수있는 .NET 코드를 작성할 수 있습니다. 그런 다음 DLL 어셈블리를 준비하고 SQL Server에 연결해야합니다. 가능 https://msdn.microsoft.com/pl-pl/library/ms131094(v=sql.110).aspx

관련 문제