在MS SQL Server中隐藏表中的列

时间:2016-05-16 21:34:28

标签: sql sql-server sql-server-2012

任何人都可以分享隐藏SQL Server 2012中表格中特定列的步骤,因为我不想删除该列

隐藏我的意思是每当我对该特定表使用select查询时,它都不应该向我显示该列。

有可能吗? 我需要将列隐藏起来,无论用户登录和我使用的任何查询

第三方编辑

根据评论But the problem is whenever i open the table in sql i dont want to see that particular column我假设问题是:

  • 我如何配置以便在sql management studio中打开一个表定义,只显示连接用户选择的列?

下面的屏幕截图显示了Employee表的所有列,尽管登录StackoverIntern没有列SSN, Salary的选择权

SSMS table defintion shows all columns

3 个答案:

答案 0 :(得分:8)

  

发帖很晚但我觉得值得分享

在SQLSERVER-2016之前,selecting *没有任何选项可以隐藏表中的几列,但是SQLSERVER-2016提供了HIDDEN关键字,您现在可以通过该关键字设置隐藏的列Select *您不想展示,只想要业务逻辑的后台流程。

  

HIDDEN 属性是可选的,会隐藏这些列       从标准的SELECT语句向后兼容我们的       应用程序和查询。您无法将HIDDEN属性应用于现有列

您可以更改现有表格,并以现有表格为例

ALTER TABLE [dbo].[Account] ALTER COLUMN [StartDate] ADD HIDDEN;
ALTER TABLE [dbo].[Account] ALTER COLUMN [EndDate] ADD HIDDEN;

您可以在Temporal table

中更频繁地检查此概念

您可以在Temporal Table

下面找到更多相关信息

答案 1 :(得分:3)

您可以使用column level permissions,以便目标用户无法在该列上进行选择。但是,这不会隐藏"执行node: this.root.querySelector('iron-selector').root.querySelector('.iron-selected'),SELECT *时的列。相反,它将使查询失败,从而导致错误。

允许更简单查询的替代方法,您可以创建不包含此列的视图:

SELECT SpecialColumn

然后,仅为某些用户授予对View的SELECT权限,而不是表。但是,对于应用程序来说,这仍然存在问题,现在必须知道应该从表格还是视图中进行选择。

当涉及到它时,列级权限在数据库中是一种不自然的事情。

答案 2 :(得分:0)

如果您不希望显示该列,则不应将其包含在select语句中。在select语句中不使用asterisk (*)也更有效。

有关性能问题的详细信息,请参阅此帖子: Performance issue in using SELECT *?