2011-01-13 3 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(アクセス許可が不明)を使用する必要があります。これはあなたにサービスアカウントのフォルダを与えます。 「一般的な」1これは、あなたが正常に管理者としてSSMSを実行してみてください一日のSQLに一日に約

+0

通常の場合ではありません。何らかのファイル書き込みがあり、ドライブに関するものを仮定するのではなく、パスにダンプファイル用のスペースが少しあることを "知る"ことができるので、システムの一時ディレクトリを使いたいと思っています。私はそれが必要なときにMSSQLがOSのtempディレクトリを使用すると確信しています、私はあまりにもそれを使用したいと思います。 – Snowy

+0

(休暇から戻ってきた)それに基づいて、データベース固有のファイルをtempdbデータファイルと同じ場所に保存することができなくなったように思えます。主な「それは依存している」要素は、あなたのSQLプロセスのほかにこれらのファイルにアクセスする必要がありますか? –

1

を行いたいものではありません%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の回答は解決策の検索の終点になるはずです(対時間の経過とともに古くなる傾向がある参照の途中降機)。リンクを参考にして、ここにスタンドアロンの概要を追加することを検討してください。 – kleopatra

関連する問題