如何防止在SQL Server 2008 R2中重命名列和表

时间:2012-10-15 09:37:15

标签: sql-server sql-server-2008-r2 rename

我想以下列方式保护数据库:

  • 应保护表格不被丢弃并重命名
  • 应保护列不被丢弃并重命名
  • 允许添加表格和列

将此置于上下文中:它是一个vocabularies数据库(查找表),它将作为中央主副本,分发到其他数据库(在同一服务器上,将来分发给其他服务器)(甚至非SQL服务器系统。)

添加表和列可以通过客户端数据库可以继续工作的方式进行处理,并在出现时获取更新。另一方面,删除表和列必须以不同的,协调的方式处理。

我创建了一个DDL触发器来锁定表和列的下降,这是很容易的部分 不幸的是,sp_rename过程似乎处理了重命名表和列,并且此过程使用以下结构:

EXEC %%Object(ID = @objid).SetName(Name = @newname)

DDL触发器无法获取此信息。有没有办法确保不重命名表和列?

1 个答案:

答案 0 :(得分:0)

对于每个表,使用schemabinding创建一个视图,如下面的代码所示:

CREATE VIEW PreventDropOnT1
WITH SCHEMABINDING 
AS
    SELECT Col1, Col2
    FROM T1