在MS SQL Server中隐藏表中的列

Dee*_*pti 4 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表定义显示所有列

Ame*_*nde 8

后期但我觉得值得分享

早些时候,SQLSERVER-2016没有任何选择隐藏表几列时selecting *,却SQLSERVER-2016拿出HIDDEN关键字由您现在可以设置隐藏的列从Select *您不希望显示的只希望为您的企业的一些后台进程逻辑.

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

.

你可以改变现有的表,让我们举一个现有的表的例子

ALTER TABLE [dbo].[Account] ALTER COLUMN [StartDate] ADD HIDDEN;
ALTER TABLE [dbo].[Account] ALTER COLUMN [EndDate] ADD HIDDEN;
Run Code Online (Sandbox Code Playgroud)

您可以查看更常用的概念 Temporal table

你可以在下面的Temporal Table中找到更多相关信息

  • ADD HIDDEN仅适用于时态表周期列,而不能用于普通列。 (2认同)

Joe*_*orn 3

您可以使用列级别权限,以便目标用户无法在该列上进行选择。SELECT *但是,在执行 a或的情况下,这不会“隐藏”该列SELECT SpecialColumn。相反,它会使查询失败,从而导致错误。

为了更轻松地进行查询,您可以创建一个不包含此列的视图:

create view MyTableEx As
    SELECT Every, Other, Column
    FROM MyTable
Run Code Online (Sandbox Code Playgroud)

然后,仅向某些用户授予对视图(而不是表)的 SELECT 权限。然而,这对于应用程序来说仍然是个问题,它现在必须知道是否应该从表或视图中进行选择。

归根结底,列级权限在数据库中是一种不自然的事情。