0

我正在使用 SQL-DMO 将位于网络共享上的数据库备份还原到在本地计算机上运行的 SQL Server 实例中。

该代码在我的机器上运行良好。但在测试虚拟机上,它只有在我将备份放在本地路径中时才有效。如果我在网络上尝试它,它会失败。

我发现 VM 上的 SQL 服务器在系统用户下运行,并将其更改为作为网络服务运行,认为这是网络访问的问题。但这并没有解决问题。

此代码失败,因为对 ReadFileList 的调用返回一个空结果集。

Dim restore As New SQLDMO.Restore With {
  .Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database,
  .ReplaceDatabase = True,
  .Database = dbName,
  .Files = "[" + backupFile + "]",
  .Devices = ""}
Dim fileList = restore.ReadFileList(sqlserver)
Dim dataLogicalName = fileList.GetColumnString(1, 1)
Dim dataPhysicalName = Path.GetFileName(fileList.GetColumnString(1, 2))
Dim logLogicalName = fileList.GetColumnString(2, 1)
Dim logPhysicalName = Path.GetFileName(fileList.GetColumnString(2, 2))

[SQL-DMO]此缓存不包含结果集,或当前结果集不包含行。

在此代码之前,我进行了检查File.Exists(backupFile)并通过了。但是,我知道运行此检查的进程(我的程序)与运行还原(SQL Server)的进程不同,所以它不是可以通过的。

什么可能导致这种行为?我该怎么做才能弄清楚为什么服务器看不到备份文件?

4

1 回答 1

1

查看服务(开始->运行->services.msc)并向下滚动到 SQL Server。登录选项卡下的用户很可能没有共享权限。

如果 Sql Server 需要访问域资源,我建议将服务更改为以低权限域用户身份登录,以便可以为其分配对这些资源的权限。

于 2011-03-28T13:34:32.813 回答