【问题标题】:SMO backup reports can't open backup device (which is a file), Message 3201SMO 备份报告无法打开备份设备(这是一个文件),消息 3201
【发布时间】:2016-02-11 04:54:46
【问题描述】:

此代码在本地 SQL Server Express 实例上运行良好:

Dim thisSMOBackup As New Backup()
With thisSMOBackup
  .Database = singleDatabase.Name 'This contains the database name
  .Action = BackupActionType.Database
  .Devices.AddDevice(DatabaseFileName, DeviceType.File)
  .Incremental = False
  .LogTruncation = BackupTruncateLogType.Truncate
End With
Try
  thisSMOBackup.SqlBackup(thisServer) 'thisServer is setup w/ valid connection string and reads back data OK from the SQL server
  System.IO.File.AppendAllText(logfileName, singleDatabase.Name & " - backed up")
Catch ex As Exception
  System.IO.File.AppendAllText(logfileName, singleDatabase.Name & " - " & ex.InnerException.Message & vbCrLf)
End Try

当我将相同的代码应用于共享托管 SQL Server 时,它会产生以下内部异常错误消息:

无法打开备份设备“D:\aFolderName\aBackupName\theDatabaseName.bak”。操作系统错误3(系统找不到指定的路径。)。 BACKUP DATABASE 异常终止。
消息#:3201

似乎有不同的方式连接到服务器。对于 SQL Server Express 实例,我使用 .ServerInstance 属性,对于托管服务器,我使用 .ConnectionString 属性。这与 SMO 代码的功能有关吗?

我读到共享 SQL 托管服务器可能有难以克服的限制,但在我放弃之前,我想征求意见。

错误本身表明 SMO 找不到写入文件的位置,但它就在那里,我将文件夹的安全性设置为“所有人”并使用“完全控制”。但是,错误似乎并不总是准确地表达他们所说的意思。我想知道是否需要设置一些其他参数才能使此操作成功,或者其他地方可以查看。

【问题讨论】:

  • 我想我明白了。这是否意味着当我的本地应用程序访问 SMO 时,SMO 实际上是在远程 SQL 服务器上运行,而不是在我的本地计算机上?我只是连接到那个服务器,它在那里工作?假设是这样,似乎没有办法在本地发送 SMO 备份,但无论如何我都会问,以防我遗漏了一些明显的东西;有什么技术可以用来将备份推送到我的机器上吗?托管服务确实具有一些备份功能,但它们是手动的,我试图在本地代码中执行此操作。
  • 不,没那么多...和其他人一样,我竭尽全力让人们远离我的机器!但由于我只是一个中等水平的编码员,我发现通常有一些已知或经过验证的技术可以解决我从未接触过的此类问题;但显然不是这个问题。我将花一些时间尝试查看是否可以使用托管服务提供商的 ftp 服务,以防可能以我希望的方式解决问题。不过,重点很好的帮助。谢谢!

标签: sql-server sql-server-2012 asp.net-mvc-5 shared-hosting smo


【解决方案1】:

当您尝试在共享主机环境中创建备份时,备份文件被写入该远程服务器计算机的文件系统不是您的拥有本地 D: 驱动器!)运行 SQL Server 的位置。

很可能,远程运行 SQL Server 的用户帐户没有写入该目录的权限。

另外:这是一件好事!毕竟,您不希望一台您不知道且无法控制的远程服务器能够对您自己的本地计算机进行直接写访问 - 现在您会吗?

可以做的(尤其是在公司环境中)是将备份写入远程 SQL Server 计算机具有的 UNC 路径 (\\server\share\path) 写入权限,并且您至少具有读取权限,以便您可以根据需要去那里将.bak 文件复制到本地计算机。但是,对于商业托管公司,这种选择很少存在......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多