修改表创建日期

时间:2012-02-25 16:51:04

标签: sql-server-2005

是否可以修改表的表创建日期?我们在右键单击table > properties > Created datesys.tables.create_date

时看到的日期

即使这些表是在几个月前创建的,我希望它看起来像是今天创建的。

2 个答案:

答案 0 :(得分:1)

只有你可以改变你的生日,你为什么要这样做?

你可以

select * into #tmp from [tablename]
drop table [tablename]
select * into [tablename] from #tmp

那会重建表并保留结构(到一点)。您可以编写新表的脚本,复制数据然后删除并重命名。如上所述。

答案 1 :(得分:1)

在SQL Server 2000中,您可以通过在sp_configure选项'allow updates'设置为1的情况下入侵系统表来执行此操作。

这在SQL Server 2005及更高版本中是不可能的。来自联机丛书:

  

此选项仍存在于sp_configure存储过程中,   虽然它的功能在Microsoft SQL Server 2005中不可用   (该设置无效)。在SQL Server 2005中,直接更新   系统表不受支持。

2005年,我相信你可以通过使用dedicated administrator connection来“游戏系统”,但我认为这是在RTM之后不久修复的(或者它需要跟踪标记或其他一些未记录的设置才能工作)。即使使用DAC并将sp_configure选项设置为1,在SQL Server 2005 SP4和SQL Server 2008 R2 SP1上尝试此操作也会产生:

 Msg 259, Level 16, State 1 
 Ad hoc updates to system catalogs are not allowed.

你想欺骗谁,为什么?

修改

现在我们有了更多关于原因的信息,你可以创建一个没有连接到任何域的虚拟机,将时钟设置回你想要的任何日期,创建数据库,创建对象,备份数据库,将其复制到主机,然后将其还原。这些对象的create_date仍然应该反映较早的日期,尽管数据库本身可能没有(我没有对此进行过测试)。

你可以通过在你自己的系统上移回时钟来做到这一点,但是我不知道在安装SQL Server之后我是否想要以这种方式弄乱我的时钟并且已经在将要创建的对象中创建对象“未来”在短时间内。 VM对我来说绝对安全。