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

C# 如何从SSMS禁用SQL Server数据库中的表,c#,sql-server,ssms,C#,Sql Server,Ssms,我继承了一个与C客户机应用程序一起使用的SQL Server数据库。我知道这很危险,但我不是程序员。我知道以前的程序员喜欢在实时数据库中玩,因此我有一些我认为是孤立的表 应用程序本身并不是超高的使用率,并且能够承受表在很短时间内不存在的异常。我想开始关闭或禁用这些表,通过反复试验来查看它们是否被使用 是否有一种方法可以在不完全删除数据的情况下关闭它们,以便在需要时可以快速重新启用它们?还是有更透明的方法来发现是否需要这些表?没有简单的方法。可以通过存储过程和客户端应用程序的直接SQL调用访问这些

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

应用程序本身并不是超高的使用率,并且能够承受表在很短时间内不存在的异常。我想开始关闭或禁用这些表,通过反复试验来查看它们是否被使用


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

没有简单的方法。可以通过存储过程和客户端应用程序的直接SQL调用访问这些表。一个全面的方法意味着您必须有某种方法使每个表不可用。在注释中建议重命名,然后在您的客户端应用程序上执行完整的回归测试;您可能必须对数据库中的每个表执行此操作。客户机应用程序可能会有条件地访问这些表,这取决于外部因素,如登录用户和相关权限、日期、配置等


这是一个很好的工具,但它本身并不能完全解决您的问题,因为您仍然需要分析它捕获的内容。

没有简单的方法。可以通过存储过程和客户端应用程序的直接SQL调用访问这些表。一个全面的方法意味着您必须有某种方法使每个表不可用。在注释中建议重命名,然后在您的客户端应用程序上执行完整的回归测试;您可能必须对数据库中的每个表执行此操作。客户机应用程序可能会有条件地访问这些表,这取决于外部因素,如登录用户和相关权限、日期、配置等


这是一个很好的工具,但是它本身并不能完全解决您的问题,因为您仍然需要分析它捕获的内容。

您可以创建一个新的db模式,并将表传输到该模式

ALTER SCHEMA new SCHEMA TRANSFER dbo.OUR表

然后在测试后再次将其转移回


您可以创建一个新的db模式,并将表传输到该模式

ALTER SCHEMA new SCHEMA TRANSFER dbo.OUR表

然后在测试后再次将其转移回


您可以更改权限,以便除您和DBO之外,没有人对表具有select权限。不能阻止dbo或sa拥有表的所有权限

您还可以对表进行加密,请参见,在这种情况下,表实际上是被锁定的


您还可以使用SQL Server Audit查看是否有人读取数据。Audit是SQL Server 2008附带的一种影响非常小的产品,非常容易设置,可以对选择进行审核,而不像触发器。

您可以更改权限,以便除您和DBO之外,没有人对表具有select权限。不能阻止dbo或sa拥有表的所有权限

您还可以对表进行加密,请参见,在这种情况下,表实际上是被锁定的


您还可以使用SQL Server Audit查看是否有人读取数据。Audit是SQL Server 2008附带的一种影响非常小的产品,非常容易设置,并且可以进行Audit选择,而不是使用触发器。

好吧,这是一种非常暴力的方法,您不能只在源代码中搜索表名吗?你怎么知道你在测试每一个函数?如果您真的想这样做,只需重命名该表。您只需重命名该表即可。可能会在名称后面添加.testing或其他内容。请参阅表上是否有聚集索引?如果是,您可以禁用它们。这实际上使该表无法访问。然后,如果需要的话,您可以重建聚集索引。我们还使用了数据库审计来查看是否正在使用数据。好吧,这是一种非常暴力的方法,您不能只在源代码中搜索表名吗?你怎么知道你在测试每一个函数?如果您真的想这样做,只需重命名该表。您只需重命名该表即可。可能会在名称后面添加.testing或其他内容。请参阅表上是否有聚集索引?如果是,您可以禁用它们。这实际上使该表无法访问。然后,如果需要,您可以重建聚集索引。我们还使用了数据库审计来查看是否正在使用这些内容。应用程序确实使用了存储过程和来自客户端的SQL调用。我的一个目标是将所有SQL查询迁移到存储过程,以实现一致性和我的个人理智。但首先我想清理现有的杂乱。我肯定重命名表不是最好的方法,但由于规模小,使用量有限,可能是最好的方法
我能忍受的东西。我有一种直觉,认为3个表已经死了,但我不喜欢直接删除这些表并期待最好的结果。该应用程序确实使用了存储过程和来自客户端的SQL调用。我的一个目标是将所有SQL查询迁移到存储过程,以实现一致性和我的个人理智。但首先我想清理现有的杂乱。我肯定重命名表不是最好的方法,但由于规模小,使用有限,这可能是我可以接受的。我有一种直觉,三张桌子都死了,但我不舒服,只是全力以赴地搬走桌子,期待最好的结果。