作为理论测试(因为我想复习我对 SQL Server 安全性的理解)我想设置一个 SQL Server 登录,它只能看到一个数据库中一个表上的几个字段。
除了默认的 public,我没有为此登录分配任何角色。我不希望假设的用户具有任何服务器角色(即不是 sysadmin、dbcreator)……而且我不想为数据库使用任何标准角色(db_datareader 等)……
登录有默认数据库,登录映射到数据库(默认架构dbo)。现在,在用户安全对象中,我已授予对一张表的访问权限并使用列权限来指定列,但在测试登录时我真的没有做到这一点。
当我使用 SQL Server 身份验证和新登录名登录到 SSMS 时,除了 master/tempdb 之外,我看不到任何数据库...
我应该看到我的默认/映射数据库吗?我没有看到任何其他类似这样的问题,所以我猜我错过了一些完全明显的东西。
为了使用 sql 登录名登录到 SSMS,您是否必须拥有分配的服务器角色才能查看非系统数据库?当我添加 sysadmin 时我可以看到数据库,但随后我又回到了过度授权。
CREATE LOGIN [Chris_Test2] WITH PASSWORD=N'¯\Ï<ÞZcÅÎ5¿ûY!ËDåÜ''¨Äs»¾Þja7',
DEFAULT_DATABASE=[Finance_Receivables_TEST],
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
USE [Finance_Receivables_TEST]
GO
/****** Object: User [Chris_Test2] Script Date: 01/18/2017 14:40:21 ******/
GO
CREATE USER [Chris_Test2] FOR LOGIN [Chris_Test2] WITH DEFAULT_SCHEMA=[dbo]
Run Code Online (Sandbox Code Playgroud)