0

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

  • 应保护表免受删除和重命名
  • 应保护列免受删除和重命名
  • 允许添加表和列

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

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

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

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

这不是由 DDL 触发器拾取的。有什么方法可以确保不重命名表和列?

4

1 回答 1

0

对于每个表,使用模式绑定创建一个视图,如以下代码所示:

CREATE VIEW PreventDropOnT1
WITH SCHEMABINDING 
AS
    SELECT Col1, Col2
    FROM T1
于 2012-10-15T10:42:49.230 回答