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

我需要獲取OS臨時目錄而不訴諸使用xp_cmdshell。我正在使用MSSQL 2008.我能做到這一點的最佳方式是什麼?SQL Server臨時目錄?

好吧,它看起來沒有辦法從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程序,我不認爲有任何簡單的方法來訪問這種性質的操作系統信息。

+0

這是驚人的,它不能被檢索。嗯。 – Snowy 2011-01-13 20:00:32

2

您必須使用xp_cmdshell或某些CLR(不確定權限)來讀取環境變量%TEMP%%TMP%。這雖然給你的服務帳戶文件夾。 「共同」,一個是%WINIR%\Temp

這是不是說你通常做關於日常SQL

+0

不是正常情況。有一些正在進行的文件寫入,而不是假設有關驅動器的事情,我想使用系統臨時目錄,因爲我可以「知道」該路徑會爲轉儲文件留出一點空間。我確信MSSQL在需要時使用操作系統臨時目錄,我也想使用它。 – Snowy 2011-01-13 20:00:03

+0

(從假期返回)基於此,聽起來您可以將您的特定於數據庫的文件存儲在與tempdb數據文件相同的位置。這裏主要的「取決於」因素是,除了你的SQL過程之外,還有其他什麼需要訪問這些文件嗎? – 2011-01-18 15:06:52