簡體   English   中英

如何從SSMS禁用SQL Server數據庫中的表

[英]How can I disable a table in a SQL Server database from SSMS

我繼承了與C#客戶端應用程序一起使用的SQL Server數據庫。 我知道足以危險,但我不是程序員。 我知道以前的程序員喜歡在實時數據庫中玩耍,因此,我有很多我認為是孤立表的東西。

該應用程序本身不是超高使用率,並且可以承受表在短時間內不存在的異常。 我想開始關閉或禁用這些表,以通過反復試驗來查看它們是否已被使用。

有沒有辦法在不完全刪除數據的情況下將其關閉,以便在需要時可以快速重新啟用它們? 還是有一種更透明的方式來發現是否需要這些表?

沒有簡單的方法。 可以通過存儲過程和來自客戶端應用程序的直接SQL調用來訪問表。 一種全面的方法意味着您將不得不采用某種方法使每個表都不可用(注釋中已建議重新命名),然后對客戶端應用程序執行完整的回歸測試; 您可能必須對數據庫中的每個表執行此操作。 客戶端應用程序可能會受外部條件(例如,登錄用戶(和相關特權),日期,配置等)的約束,有條件地訪問表。

SQL Server Profiler是一個很好的工具,但是它並不能完全解決您的問題,因為您仍然必須分析它捕獲的內容。

您可以創建一個新的數據庫模式,並將表轉移到該模式

ALTER SCHEMA新模式轉移dbo.your表

然后在測試后將它們重新傳送回去。

https://docs.microsoft.com/zh-cn/sql/t-sql/statements/alter-schema-transact-sql

您可以更改權限,以便除您和dbos之外的任何人都沒有對該表的選擇權限。 您不能阻止dbo或sa對表擁有所有權限。

您還可以對表進行加密,請參閱在SQL Server 2008加密數據庫表,在這種情況下,它實際上已被鎖定。

您還可以使用SQL Server審核來查看是否有人讀取了數據。 審核是影響很小的產品(SQL Server 2008附帶),非常容易設置,並且可以與觸發器不同地審核選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM