2011-01-13 4 views
3
exec master..xp_cmdshell 'set' 

xp_cmdshell을 사용하지 않고 OS 임시 디렉토리를 가져와야합니다. MSSQL 2008을 사용하고 있습니다. 내가 할 수있는 최선의 방법은 뭔가요?SQL Server Temp 디렉터리?

글쎄, TSQL에서 그렇게 할 방법이없는 것처럼 보입니다. SQL Server는 % temp %를 알고 있다고 믿습니다. 꼭 사용해야하기 때문에.

누구나이 코드를 더 작고/더 단단하게 만들 수있는 방법을 권장 할 수 있습니까?

Set NoCount On 
Declare @t VarChar(256) 
Declare @env Table ([Parts] VarChar(256)) 
Insert Into @env 
Exec Master..Xp_CmdShell 'set' 
Set @t = ( Select Top 1 [Parts] From @env Where [Parts] Like 'temp=%' ) 
Select Replace(@t , 'temp=','') 

감사합니다.

답변

1

tempdb 데이터베이스가 사용하는 파일의 위치는

을 실행하여 신속하게 찾을 수 있습니다
execute tempdb.dbo.sp_helpfile 

(편집)

... 즉, 당신이 찾고있는 게 아니에요은 무엇입니까? sp_OA 절차로 다이빙을하지 않으면, 나는이 성질의 OS 정보에 접근하는 간단한 방법이 없다고 생각합니다.

+0

. 흠. – Snowy

2

환경 변수 %TEMP% 또는 %TMP%을 읽으려면 xp_cmdshell 또는 일부 CLR (사용 권한이 없음)을 사용해야합니다. 이것은 서비스 계정 폴더를 제공합니다. 은 "일반적인"일이 당신이 일반적으로

+0

정상적인 경우는 아닙니다. 어떤 파일 작성이 진행 중이고 드라이브에 대한 가정 대신 드라이브 덤프 파일을위한 공간이 약간 있음을 알 수 있으므로 시스템 임시 디렉토리를 사용하고 싶습니다. 나는 MSSQL이 필요할 때 OS temp 디렉토리를 사용한다고 확신한다. 나는 그것을 사용하고 싶다. – Snowy

+0

(back from vacation) 따라서 tempdb 데이터 파일과 동일한 위치에 데이터베이스 관련 파일을 저장할 수있는 것처럼 들립니다. 주된 "it depends"요소는 여기에 있습니다. SQL 프로세스 외에 다른 파일에 액세스 할 필요가 있습니까? –

1

관리자로 SSMS를 실행 해보십시오 일 SQL에 일에 대해 할 거라고 일이 아니다 %WINIR%\Temp

입니다. 이 검색 할 수없는 놀라운

확인이 링크 밖으로 ....

http://blogs.msdn.com/b/spike/archive/2008/07/23/ole-db-provider-microsoft-jet-oledb-4-0-for-linked-server-null-returned-message-unspecified-error.aspx

+0

[링크 전용 답변] (http://meta.stackoverflow.com/tags/link-only-answers/info)은 권장하지 않으므로 SO 답변은 솔루션 검색의 종점이어야합니다. 시간이 지남에 따라 부실 해지는 경향이있는 참고 문헌의 또 다른 중간 기착 (stopover)). 링크를 참조 용으로 유지하면서 독립형 시놉시스를 여기에 추가하는 것을 고려해보십시오. – kleopatra