Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对SQL Server数据库进行备份_C#_Asp.net_Sql Server - Fatal编程技术网

C# 对SQL Server数据库进行备份

C# 对SQL Server数据库进行备份,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在开发支持两个SQL Server版本的软件。我们有一个版本在SQLServer2000上运行,另一个版本在2005上运行。两者都安装在客户站点(两个不同的客户)上,我需要能够从两台服务器获得备份,以便进行升级测试。备份将用于在向两个客户发送升级之前进行最终测试。通过测试他们的实际数据,测试结果将是最可靠的 但问题是,这两个客户都不允许我们访问在这些服务器上运行的任何SQL工具。我得到的只是一个SQL连接字符串,作为ASP.NET应用程序的一部分与C#一起使用。因此,我需要通过这个连接通过c

我正在开发支持两个SQL Server版本的软件。我们有一个版本在SQLServer2000上运行,另一个版本在2005上运行。两者都安装在客户站点(两个不同的客户)上,我需要能够从两台服务器获得备份,以便进行升级测试。备份将用于在向两个客户发送升级之前进行最终测试。通过测试他们的实际数据,测试结果将是最可靠的


但问题是,这两个客户都不允许我们访问在这些服务器上运行的任何SQL工具。我得到的只是一个SQL连接字符串,作为ASP.NET应用程序的一部分与C#一起使用。因此,我需要通过这个连接通过c#/SQL语句做一些聪明的事情。我也没有访问服务器上文件系统的权限,所以我甚至不能在服务器上的某些文件中进行备份,然后下载它。那么,还有其他选择吗?

假设您是sql管理员,您可以(或可能启用)访问xp\u cmdshell。因此,在进行备份(并将其存储在sql data目录中,sql Server服务帐户必须有权访问该目录)后,您可以调用xp_cmdshell对这些备份文件执行任何操作(同样,xp_cmdshell将在sql Server引擎的安全上下文下运行,因此它将有权访问数据目录).

这个SMO或SQL DMO的东西听起来很有前途。有一节介绍如何通过连接以编程方式执行备份。请注意SMO必须满足的要求,我相信这将取决于SQL Server用户用于连接的权限配置方式:


要么照paul说的做,让他们让你远程访问他们的网络和服务器,要么让他们让他们的人给你发送数据库的备份。我不会浪费时间去寻找解决办法。与你的老板谈谈为什么获得这些备份很重要,看看它们是否能提供一些杠杆作用。

也许你的客户可以为你做备份

如果您需要通过远程连接处理它,那么您的第一个挑战将是确保一致的数据库状态。如果您运行的是SQL Enterprise,则可以通过创建DB快照来实现这一点

您可以使用服务器管理对象(SMO)以编程方式执行从SSM可以执行的任何操作,包括创建DB对象的脚本、运行传统备份等


如果不需要数据库结构,可以编写一个SSIS包来收集所有远程数据并将其转储到本地数据库中。这可能比自己编写代码要快。

请求更多访问权限,然后再次询问,如果他们没有提供,则发布错误版本并告诉他们原因!但说真的,访问数据库有什么问题吗?@Paul's是答案——向客户解释你需要备份,以及为什么试图与客户打交道只会给你带来长期的痛苦和痛苦。你个人不需要备份,如果你必须提出理由才能得到备份,那么就提出理由。@Paul,不幸的是,我已经要求访问了。答案是否定的。他们知道,如果我能够访问数据的备份,而这些数据甚至不是敏感数据,代码将得到改进,因为我可以通过自己的web服务访问这些数据。但是他们没有给我提供任何直接检索备份的方法。@Murph,这些客户支付的费用很高,但他们“共享”一个管理员。(一个同时为这两个公司工作的人)是他阻止了这条通道。他的观点显然比我的更重要…不幸的是,我不是SQL管理员。我对数据库本身拥有完全权限,但对任何其他数据库和数据库服务器的文件系统没有权限。我没有物理访问服务器的权限。即使是通过远程桌面也不行。两个数据库的管理员都不太愿意进行备份。每当我要求备份时,他也会造成大量延迟,有时还会提供不完整的备份。他很痛苦,所以我想和他一起工作。我已经和他的老板谈过好几次了,如果我抱怨的时间够长,他们可能会采取一些行动,但我并不指望他们会支持我。是的。我想是时候让你的上级和他们的上级谈谈了。如果他们希望他们的产品是稳定和最新的,他们需要愿意合作。否则他们只是在风中挣扎。