我试图编写一个包装来帮助我们的客户恢复SQL Server数据库。 默认情况下,SQL Server作为用户networking服务运行,其权限非常有限。 我们的客户有时会感到困惑,他们不能指向任何位置的备份文件并将其恢复。
我想将文件从他们select的位置复制到SQL Server可以访问的临时位置,但我很难find位置。 我不能只调用Path.GetTempPath(),因为这给了我SQL Server不能访问的用户临时文件。
有一个文件夹,我可以检索,将始终工作?
网络服务帐户的临时文件夹位于此处:
%WINDIR%\ ServiceProfiles \网络服务\应用程序数据\本地的\ 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并没有给你本地化的“本地设置”名称。
默认情况下,管理员可以写入网络服务配置文件。 使用它的临时文件夹为您的目的应该是完全正常的。
为什么不把NETWORK_SERVICE权限授予特定的文件夹,并告诉用户将备份文件放在那里?
或者运行:
BACKUP DATABASE [master] TO DISK='master.bak' GO
从SSMS,看看文件被写入。