我的程序有这个更新工具。该工具使用此代码(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读取Desktop
或Downloads
等窗口的用户目录。但是许多客户将存档解压缩到这些目录,然后他们就会收到此错误。
无法访问myprogram_update.bak / access denied。
我无法更改每个客户服务器上的设置,有没有办法让它适用于这些目录?我的一个想法是先运行一个设置并将其解压缩到program files
,但也许有一个更智能的解决方案。
编辑:该工具以管理员模式运行。
答案 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可以访问这里。