从 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 的用户目录,例如 Desktop
或 Downloads
.但是许多客户将存档解压缩到这些目录,然后他们收到此错误。
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-服务器可以访问。
我的程序有这个更新工具。该工具使用此代码(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 的用户目录,例如 Desktop
或 Downloads
.但是许多客户将存档解压缩到这些目录,然后他们收到此错误。
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-服务器可以访问。