如何从SSMS禁用SQL Server数据库中的表

时间:2017-06-07 14:58:56

标签: c# sql-server ssms

我继承了一个与C#客户端应用程序一起使用的SQL Server数据库。我知道这很危险,但我不是程序员。我知道以前的程序员喜欢在实时数据库中玩游戏,因此我有一些我认为是孤立的表。

应用程序本身并不是超高使用率,并且可以承受表格不存在的例外情况。我想开始关闭或禁用这些表格,以便通过反复试验再次使用它们。

有没有办法在不完全删除数据的情况下关闭它们,以便我可以在需要时快速重新启用它们?或者是否有更透明的方法来发现是否需要这些表?

3 个答案:

答案 0 :(得分:1)

没有简单的方法。可以通过存储过程和客户端应用程序的直接SQL调用来访问这些表。一个全面的方法意味着您必须有一些方法使每个表不可用(在评论中建议重命名),然后对您的客户端应用程序执行完整的回归测试;您可能必须使用数据库中的每个表执行此操作。客户端应用程序可以有条件地访问表,受外部事件的影响,例如登录用户(和相关权限),日期,配置等。

SQL Server Profiler是一个很好用的工具,但它不能单独解决您的问题,因为您仍然需要分析它捕获的内容。

答案 1 :(得分:1)

您可以创建新的数据库模式并将表传输到该模式

ALTER SCHEMA新架构TRANSFER dbo.your table

然后在测试后将它们再次传回。

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-schema-transact-sql

答案 2 :(得分:0)

您可以更改权限,以便除了您和dbos之外没有人对该表具有select权限。您无法阻止dbo或sa拥有对表的所有权限。

你也可以加密表格 - Encrypting database tables in SQL Server 2008,在这种情况下它真的被锁定了。

您还可以使用SQL Server Audit查看是否有人读取数据。审计是一个影响非常小的产品(随SQL Server 2008一起提供),并且非常容易设置,并且可以像触发器一样审核选择。