任何人都可以分享隐藏SQL Server 2012中表格中特定列的步骤,因为我不想删除该列
隐藏我的意思是每当我对该特定表使用select查询时,它都不应该向我显示该列。
有可能吗? 我需要将列隐藏起来,无论用户登录和我使用的任何查询
根据评论But the problem is whenever i open the table in sql i dont want to see that particular column
我假设问题是:
下面的屏幕截图显示了Employee表的所有列,尽管登录StackoverIntern
没有列SSN, Salary
的选择权
答案 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 *?