【问题标题】:How to pass a network path to a stored procedure?如何将网络路径传递给存储过程?
【发布时间】:2012-05-03 20:35:07
【问题描述】:

我有一个存储过程 (previous question),但现在我想在网络位置而不是服务器上的位置进行备份。

如果我使用如下命令:

sp_doStuff '\\172.16.97.15\DbBCK\', 'MyDatabase', 'F'

然后我得到以下错误:

消息 3201,第 16 级,状态 1,第 1 行
无法打开备份设备“\172.16.97.15\DbBCK\MyDatabase_Full_20120503113029.BAK”。操作 系统错误 5(访问被拒绝。)。
消息 3013,第 16 级,状态 1,第 1 行
BACKUP DATABASE 异常终止。

我还尝试制作该位置('Z:')的网络驱动器,然后按如下方式运行突击队:

sp_doStuff 'Z:\', 'MyDatabase', 'F'

然后我得到这个错误:

消息 3201,第 16 级,状态 1,第 1 行
无法打开备份设备“Z:\MyDatabase_Full_20120503113340.BAK”。操作系统错误3(系统找不到指定的路径)。
消息 3013,第 16 级,状态 1,第 1 行
BACKUP DATABASE 异常终止。

但是我可以去路径,路径确实存在。有没有人知道这是否可能?

【问题讨论】:

  • 第一条错误消息似乎是最可能的解释 - 操作系统错误 5(访问被拒绝。)。运行存储过程的用户无权访问该网络路径。
  • ... 第二条消息表明驱动器Z: 未映射给运行存储过程的用户。
  • @Filburt 是对的,需要重启 SQL Server 才能看到新的备份设备。
  • @dash 我使用管理员帐户运行命令,该帐户可以访问路径。
  • UNC 必须可由 MSSQL 服务用于安全凭证的用户帐户访问。 LocalSystem 没有任何网络权限(服务使用的默认用户),尝试设置NetworkServiceservices.msc 中的工作组/域用户。

标签: sql-server networking stored-procedures path


【解决方案1】:

使用@wqw 和@Filburt 提供的信息,我将我的SQL EXPRESS 服务设置为使用我的管理员帐户,然后它能够​​执行'\\172.16.97.15\DbBCK\' 的命令。向他们致敬!

【讨论】:

    猜你喜欢
    • 2016-06-09
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多