是否可以修改表的建表日期?我们在右键单击table > properties > Created date或在sys.tables.create_date中看到的日期。
尽管这些表是几个月前创建的,但我希望它看起来像是今天创建的。
发布于 2012-02-26 01:01:20
就像你不能改变你的生日一样,你为什么要改变呢?
你可以直接
select * into #tmp from [tablename]
drop table [tablename]
select * into [tablename] from #tmp这将重新构建表并(在一定程度上)保留结构。您可以编写一个新表的脚本,复制数据,然后删除并重命名。如上段所述。
发布于 2012-02-26 01:29:06
在SQL Server2000中,您可以通过将sp_configure选项“allow updates”设置为1来侵入系统表。
这在SQL Server 2005及更高版本中是不可能的。来自联机丛书:
此选项仍然存在于sp_configure存储过程中,尽管其功能在Microsoft SQL Server2005中不可用(此设置无效)。在SQL Server2005中,不支持直接更新系统表。
在2005年,我相信你可以通过使用dedicated administrator connection来“玩弄系统”,但我认为这在RTM之后不久就被修复了(或者它需要一个跟踪标志或其他一些未记录的设置才能工作)。即使使用DAC并将sp_configure选项设置为1,在SQL Server2005 SP4和SQL Server2008 R2 SP1上尝试此操作也会产生以下结果:
Msg 259, Level 16, State 1
Ad hoc updates to system catalogs are not allowed.你想骗谁,为什么?
编辑
现在我们有了更多关于原因的信息,您可以创建一个未连接到任何域的虚拟机,将时钟设置回您想要的任何日期,创建数据库,创建对象,备份数据库,将其复制到主机,然后恢复。这些对象的create_date应该仍然反映较早的日期,尽管数据库本身可能不会(我还没有测试过这一点)。
您可以通过将时钟拨回您自己的系统来实现这一点,但我不知道在安装SQL Server并在短时间内创建对象之后,我是否愿意以这种方式扰乱我的时钟。VM对我来说绝对更安全。
https://stackoverflow.com/questions/9445964
复制相似问题