exec master..xp_cmdshell 'set'
我需要获取操作系统临时目录而不需要使用xp_cmdshell。我正在使用MSSQL 2008.我能做到的最好的方法是什么?
好吧,从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=','' )
感谢。
答案 0 :(得分:2)
您必须使用xp_cmdshell或某些CLR(不确定权限)来读取环境变量%TEMP%
或%TMP%
。这会为您提供服务帐户文件夹。 “常见”的是%WINIR%\Temp
这不是您在日常SQL中通常会做的事情
答案 1 :(得分:1)
运行
可以快速找到tempdb数据库使用的文件的位置execute tempdb.dbo.sp_helpfile
(编辑)
......那不是你想要的,是吗?除非潜入sp_OA程序,我认为没有任何简单的方法可以访问这种性质的操作系统信息。
答案 2 :(得分:1)
尝试以管理员身份运行SSMS。
检查此链接....
答案 3 :(得分:0)
您可以使用Scripting.FileSystem
OLE对象获取Windows临时文件夹。
declare
@tempFolder varchar(260),
@oleResult int,
@fs int,
@folder int;
exec @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @fs output;
exec @OLEResult = sp_OAMethod @fs, 'GetSpecialFolder', @folder output, 2
exec sp_OAGetProperty @folder , 'Path', @tempfolder OUT
exec @oleResult = sp_OADestroy @folder
exec @oleResult = sp_OADestroy @FS
select @tempFolder