1

所以这是挑战。我需要使用 C# 从远程数据库服务器本地备份数据库,我们拥有的唯一共享是 \\computer\c$。

如果答案是备份到远程数据库服务器上的某个位置,然后复制该本地位置,则假设远程位置上没有共享。只是 b/c 我可以访问数据库并不意味着我可以访问文件系统。

这个 Q/A 看起来接近我想要的,但请记住数据库中的常规帐户将无法访问网络。用于压缩和传输数据库备份文件的示例 sql 脚本

考虑到所有这些……有人做过这样的事情并愿意分享吗?或者知道如何做到这一点?

更新:我故意含糊其辞。这里的上下文是这样的:

  1. 我无权访问数据库所在服务器上的文件。
  2. 我在客户端凭据下从客户端运行 C#,因此我可以完全控制客户端计算机并且可以在此域中执行任何操作。

我想我实际上已经弄清楚了我们要做什么:

  1. 在当前用户的 AppData 区域创建一个特殊文件夹。
  2. 为该文件夹创建文件共享
  3. 为每个人添加特定共享和文件夹的权限。
  4. 基于该共享处理备份。
  5. 删除共享并重置权限。

如果有人好奇这个问题指的是什么:RoundhouseE

4

4 回答 4

1

语境?甲骨文?MySQL?SQL 服务器?数据库大小?备份时间?可用性要求?加密要求?行数验证?

我猜您是在谈论基于 TSQL 示例的 SQL Server,我建议您查看 DMO 对象。这是一个入门 - http://www.codersource.net/csharp_sqldmo_sqlserver.aspx

说实话 - 你的问题的模糊性质 - 以及它与上下文无关的事实给了我一些 heebie jeebies。确保在测试环境中进行测试,而不是在生产数据上运行,好吗?

于 2009-11-15T23:35:34.227 回答
1

SQL Server 的备份系统在服务器上运行整个备份过程,这基本上意味着文件必须放在数据库服务器可以放置并可以访问的地方。

换句话说,文件将从服务器写入

如果你:

  1. 无法以任何方式从客户端直接访问服务器上的文件
  2. 无法以任何方式将文件从服务器下载到客户端
  3. 无法将文件从服务器写入客户端可以以任何方式访问的公共位置

然后你只剩下一种方法:重新实现备份。

如果您的实际问题是这样的:

考虑到所有这些……有人做过这样的事情并愿意分享吗?

然后我会冒险猜测这个问题的答案是:

确定不能将问题更改为可解决的问题吗?

于 2009-11-15T23:41:33.387 回答
0

我想我实际上已经弄清楚我们要做什么:

  1. 在当前用户的 AppData 区域创建一个特殊文件夹。
  2. 为该文件夹创建文件共享
  3. 为每个人添加特定共享和文件夹的权限。
  4. 基于该共享处理备份。
  5. 删除共享并重置权限。

如果有人好奇这个问题指的是什么:RoundhouseE

于 2009-11-16T23:08:11.573 回答
-1

如果您想要/需要备份数据库,那么一般来说,为了保证数据库的一致性,数据库服务器将需要完全关闭,或者至少完全处于只读模式。

您的问题听起来像是您的“挑战者”已将您带入备份远程服务器的任务,而这些条件都不满足。对于这样的挑战,唯一明智的答案是它无法完成。

于 2009-11-15T23:22:33.503 回答