我想将文件从他们选择的位置复制到SQL Server可以访问的临时位置,但是我很难找到这样的位置。我不能只调用Path.GetTempPath(),因为它会给我用户的临时文件夹,而SQL Server无法访问。
是否有一个文件夹我可以检索,它将始终起作用?
Network Service账户的临时文件夹位于以下位置:
%Windir%\ServiceProfiles\NetworkService\AppData\Local\Temp
在Windows XP/2003上,网络服务配置文件位于通用用户配置文件目录中。在德语计算机上,它在此处:
C:\Dokumente und Einstellungen\NetworkService\Lokale Einstellungen\Temp
在英语计算机上,它将在这里:
C:\Documents and Settings\NetworkService\Local Settings\Temp
您可以通过查询以下注册表值来找到所有Windows版本上配置文件的路径:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-20\ProfileImagePath
但这并不会给出XP/2003上“本地设置”文件夹的本地化名称。
默认情况下,管理员可以写入网络服务配置文件。将其临时文件夹用于您的目的应该是完全可以的。
在Windows Vista及以上版本中
系统账户 (NT AUTHORITY\SYSTEM
)
C:\Windows\TEMP
网络服务 (NT AUTHORITY\NETWORK SERVICE
)
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp
本地服务 (NT AUTHORITY\LOCAL SERVICE
)
C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp
为什么不给 NETWORK_SERVICE 权限到一个特定的文件夹,然后告诉用户把备份文件放在那里呢?
或者只需运行:
BACKUP DATABASE [master] TO DISK='master.bak'
GO
从SSMS中查看文件写入的位置。