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

时间:2017-11-14 15:31:56

标签: sql-server restore database-backups

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

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 Server设置中读取的标准路径。

更新工具已发送给客户,问题在于,通常不允许SQL Server读取DesktopDownloads等窗口的用户目录。但是许多客户将存档解压缩到这些目录,然后他们就会收到此错误。

  

无法访问myprogram_update.bak / access denied。

我无法更改每个客户服务器上的设置,有没有办法让它适用于这些目录?我的一个想法是先运行一个设置并将其解压缩到program files,但也许有一个更智能的解决方案。

编辑:该工具以管理员模式运行。

2 个答案:

答案 0 :(得分:0)

您应该要求提升并以管理员帐户身份运行,这可能会有所帮助:

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

答案 1 :(得分:0)

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