【问题标题】:RESTORE .bak-file from c:\users\ directories on SQL Server从 SQL Server 上的 c:\users\ 目录恢复 .bak 文件
【发布时间】:2019-10-08 17:40:47
【问题描述】:

我的程序有这个更新工具。该工具使用此代码(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 读取 Windows 的用户目录,例如 DesktopDownloads。但是许多客户将存档解压缩到这些目录,然后他们会收到此错误。

无法访问 myprogram_update.bak / 访问被拒绝。

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

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

【问题讨论】:

  • 考虑将您的更改和/或初始数据库作为 DACPAC 或 BACPAC 发送。部署只需要 SQL Server 本身的权限。这种方式只支持有限数量的数据,但它比脚本恢复更方便(通过 DacFx 支持以编程方式调用 DACPAC 部署)。一般来说,数据库项目是一个巨大的胜利,因为它们完全支持版本控制。

标签: sql-server restore database-backups


【解决方案1】:

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

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

【讨论】:

  • 应用程序一直以管理员模式运行。更新本身工作正常,还有UPDATEALTER 的sql 部分。但是 RESTOREDesktop 上失败,但在 c:\temp 上有效。
  • 不,这无济于事 - 即使管理员也无法从远程 SQL Server 计算机访问本地用户的磁盘驱动器。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多