我正在开发支持两个SQL Server版本的软件。我们在SQL Server 2000上运行了一个版本,在2005年运行了另一个版本。两者都安装在客户站点(两个不同的客户)上,我需要能够从两个服务器获得备份以进行升级测试。然后,在将升级发送给两个客户之前,将使用备份进行最终测试。通过测试他们的实际数据,测试结果将是最可靠的。
但问题是,两个客户都不允许我们访问在这些服务器上运行的任何SQL工具。我得到的只是一个SQL连接字符串,与C#一起用作ASP.NET应用程序的一部分。所以我需要通过这个连接通过c#/ SQL语句做一些聪明的事情。我也没有对服务器上的文件系统的访问权限,所以我甚至无法在服务器上的某个文件中进行备份,然后下载它。那么,还有其他选择吗?
答案 0 :(得分:1)
这个SMO或SQL DMO的东西听起来很有希望。有一节介绍如何通过连接以编程方式执行备份。请注意SMO的要求,并且我确信将依赖于您用于连接的SQL Server用户权限的配置:
答案 1 :(得分:1)
也许您的客户可以为您做备份?
如果您需要通过远程连接处理它,那么您的第一个挑战将是确保一致的DB状态。如果您正在运行SQL Enterprise,则可以通过创建数据库快照来实现。
您可以使用服务器管理对象(SMO)以编程方式执行您可以从SSMS执行的任何操作,包括创建脚本以创建数据库对象,运行传统备份等。
如果您不需要数据库结构,可以编写一个SSIS包来获取所有远程数据并将其转储到本地数据库中。这可能比尝试自己编码更快。
答案 2 :(得分:0)
假设您是sql admin,您已经(或可能启用)访问xp_cmdshell。因此,在您进行备份(并将其存储在sql数据目录中,Sql Server服务帐户必须具有访问权限)之后,您可以调用xp_cmdshell以使用这些备份文件执行任何操作(同样,xp_cmdshell将在Sql的安全上下文中运行)服务器引擎,因此它可以访问数据目录。)
答案 3 :(得分:0)
要么做保罗说什么,让他们让你远程访问他们的网络和服务器,或让他们让他们的人发送数据库的备份。我不会浪费时间尝试开发一种解决方法。与你的老板讨论为什么重要的是要获得这些备份,看看他们是否可以提供一些杠杆作用。