从 SQL 服务器上的 c:\users\ 目录恢复 .bak 文件

RESTORE .bak-file from c:\users\ directories on SQL Server

我的程序有这个更新工具。该工具使用此代码(vb 和 sql)更新 SQL 服务器数据库。

Dim sql As Process = Process.Start("sqlcmd.exe", Param + " -i update.sql -o log.txt")

Param 包含 .bak 文件的名称 myprogram_update.bak 等。

update.sql 开头为

RESTORE DATABASE [myprogram_tmp] 
FROM DISK = N'$(db_src)' 
WITH FILE = 1,  
MOVE N'myprogram_tmp' TO @mdf,
MOVE N'myprogram_tmp_log' TO @ldf,
NOUNLOAD, STATS = 5

@mdf@ldf 是从 SQL 服务器设置中读取的标准路径。

更新工具已交付给客户,问题是通常 SQL 服务器不允许读取 windows 的用户目录,例如 DesktopDownloads.但是许多客户将存档解压缩到这些目录,然后他们收到此错误。

Could not access myprogram_update.bak / access denied.

我无法更改每个客户服务器上的设置,那么有什么方法可以让它对这些目录起作用吗?我的一个想法是先 运行 安装然后将其解压缩到 program files 但也许有更聪明的解决方案。

编辑:工具 运行 处于管理员模式。

您应该请求提升权限并 运行 作为管理员帐户,也许这会有所帮助:

http://www.downloadinformer.com/how-to-make-a-vb-net-application-always-run-in-administrator-mode/

我现在将我的程序放入一个通常安装在普通文件夹下的安装程序中,例如 C:\Program Files (x86)\MyProgram。这里SQL-服务器可以访问。