我想隐藏SQL Server数据库中的表

时间:2018-01-16 12:23:03

标签: sql-server azure

我在Azure中创建了一个数据同步过程,以便Azure在Datasync模式的SQL Server数据库中创建了几个表。我想隐藏位于Datasync架构中的那些表。

你们可以建议如何避免在Azure中显示这些表,或者如何从我的SQL Server中隐藏表?

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:4)

SQL Server中没有HIDE功能,您可以拒绝对您不希望查看架构上的表或对象的某些用户组用户的该表的权限

您可以使用DENY关键字拒绝某些用户,REVOKE删除现有权限

答案 1 :(得分:1)

这个问题有点老了,但是今天我正在寻找类似的东西,以便可以隐藏数据库中已完成设计的表,或者将它们放置在某个文件夹中,以免干扰数据库,从而组织数据库中的表。我目前正在处理的表(并使我感到困惑:P)

我发现这篇文章讨论了Hiding tables in SSMS Object Explorer

使用扩展属性,OP能够从视图中隐藏表。 您可以在文章本身中阅读更多详细信息,但是出于这个答案的目的,我在这里重现OP的代码

隐藏表“ Person.Address”

EXEC sp_addextendedproperty
@name = N'microsoft_database_tools_support',
@value = 'Hide',
@level0type = N'Schema', @level0name = 'Person',
@level1type = N'Table', @level1name = 'Address';
GO

显示表格“ Person.Address”

EXEC sp_dropextendedproperty
@name = N'microsoft_database_tools_support',
@level0type = N'Schema', @level0name = 'Person',
@level1type = N'Table', @level1name = 'Address';
GO

我刚刚在我的一张桌子dbo.Users.Logins中使用了它,因为我曾经使用过

@level0name='dbo'

@level1name='Users.Logins'

执行命令后,我刷新了表列表,刷新花了大约45秒钟(不确定是否正常),但是刷新后指定的表名不在表列表中 >

删除扩展属性后,表的名称又回来了


即使隐藏,该表也可以正常工作(SELECT, INSERT, UPDATE, DELETEJOINS


我正在使用SQL Server Management Studio v18.4(©2019)

HTH。