奇怪的Sql Server 2005行为

时间:2010-05-12 14:16:35

标签: sql sql-server sql-server-2005 backup windows-server-2003

背景:
我有一个用ASP.NET构建的站点,其中包含Sql Server 2005作为它的数据库。该站点是位于我的客户端服务器机房中的Windows Server 2003机箱上的唯一站点。客户端是本地学区,因此出于数据安全原因,没有远程桌面访问,也没有远程Sql Server连接,所以如果我必须为数据库提供服务,我必须在终端。我有FTP访问权限来更新ASP代码。

问题:
我昨天联系了有关该系统的问题。当我查看它时,似乎一年前我解决的一个错误已经回来了。我有一个存储过程,用于将int作为参数,但一年前我们更改了系统的结构并更新了存储过程以获取nvarchar(10)。存储过程以某种方式更改为采用int而不是nvarchar。

连接到服务器的外部硬盘驱动器会定期复制数据,并且能够在发生故障时还原服务器。我会假设某个旧版本的数据库已经恢复,但我知道的数据是在错误发生前7天和1天插入的,仍然在数据库中。

问题:
无论如何,Sql Server 2005数据库的结构是否可以恢复到以前的版本,或者在不触及实际数据的情况下还原到以前的版本?没有其他人可以访问服务器所以我有点疯狂试图弄清楚这是怎么发生的。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

使用SQL Server的内置备份和还原机制,无法仅选择要还原的某些对象。使用事务日志备份,您可以还原到某个事务或ALTER语句之前可能出现的时间点,但这是您获得的最接近的事务。有一些工具可以让你选择要恢复的某些对象,但是它们可以通过将数据库恢复到副本并复制所需的对象或直接读取备份并复制出这些对象来工作。换句话说,这不是意外使用内置工具可能发生的事情。我的猜测是,有人意外地运行了一个旧的脚本,存储了一个还原它的脚本。

答案 1 :(得分:2)

在不触及任何数据或任何其他存储过程的情况下更改存储过程将是微不足道的。怎么是谁,这就是问题。

一个建议,运行

select * from sys.procedures

并检查create_date和modify_date列,以查找问题过程和数据库中的所有其他过程。

答案 2 :(得分:1)

我目睹了我在一个客户端安装的应用程序发生了类似的事情。 s'procs经常会恢复到旧版本。

这只是一个客户端,该应用程序安装在其他几个从未遇到此问题的应用程序上,它们恰好也是一个学区。它大概每3个月发生一次,没有人应该接触那台机器。我甚至不确定他们是否有人知道如何打开企业经理。

出于好奇,您的客户使用哪种备份软件?并且,在检查过程的创建/修改日期之后,是否在那个时间周围发生了服务器重启?

我问的原因是我的客户端有备份软件,在该服务器上做了一些非常奇怪的事情。例如,在重新启动时,它必须“回放”自上次成功备份以来的更改,包括文件操作。此外,它是否安装在VM中?

答案 3 :(得分:0)

通过数据转换服务(DTS)?或者如果设置数据库的脚本在某个地方可用..