2012-10-15 44 views
0

我要保護數據庫以下列方式:如何防止SQL Server中的列和表的重命名2008 R2

  • 表應防止掉落保護,重命名
  • 列應該得到保護防止掉落並重命名
  • 添加表和列允許

要把它放到背景:這是一個vocabularies數據庫(查找表),這將是中央主複製,分發到其他數據庫(在同一臺服務器上,並在將來到其他服務器(甚至非SQL服務器系統))。

添加表和列可以以客戶端數據庫可以繼續工作並在出現時獲取更新的方式進行處理。另一方面,刪除表和列將不得不以不同的方式進行處理。

我創建了一個DDL觸發器來鎖定表和列的丟棄,這是很容易的部分。
不幸的是,重命名錶和列進行處理,現在看來,由sp_rename程序,該程序使用下面的結構:

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

這不是由DDL觸發器回升。有沒有辦法確保表和列不重命名?

+2

關於什麼的創建用戶和登錄名和盛大的適用權限,每一個? http://blog.sqlauthority.com/2012/04/23/sql-server-introduction-to-sql-server-security-a-primer/ – danihp

+0

好吧,是的,發佈這個問題後,這條路線突然進入我的腦海以及。事情是:我也想保護自己,在DBA的情況下重新命名錶和列。我希望有一種方法可以讓DDL觸發器檢測到這些%%對象動作,這樣可以更容易,因爲當DDL觸發器處於活動狀態時會被阻塞,但是可以在名稱更改時臨時禁用觸發器已經由客戶數據庫計劃和考慮。 – user1746581

+2

@ user1746581爲什麼不創建自己的低權限帳戶,並且只在需要時使用管理員帳戶? – podiluska

回答

0

對於每個表,創建架構綁定視圖如下面的代碼演示:

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