为什么在Azure SQL DB中登录时有权选择数据库表而不将用户链接到数据库?

时间:2019-02-18 03:40:08

标签: login azure-sql-database privileges

DB1中有一些表。我在Master DB中创建了Login MyLogin而不为此创建用户(或创建但删除了)。但是现在,至少我检查了MyLogin中没有相同SID的用户。为什么我仍然可以搜索表?

select * from sys.sysusers;   -- Check in DB1 
select * from sys.sql_logins; -- Check in Master DB    

1 个答案:

答案 0 :(得分:1)

在创建登录名之前,我们需要检查登录名是否存在。 演示代码:

DROP LOGIN TestLogin;  
GO  

CREATE LOGIN TestLogin   
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;  

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';  
GO  

参考:CREATE LOGIN (Transact-SQL)

创建登录名后,该登录名可以连接到SQL数据库,但仅具有授予公共角色的权限。

但是当您执行ALTER AUTHORIZATION ON DATABASE ::[DB1] TO [MyLogin]时,然后是ALTER AUTHORIZATION ON DATABASE ::[DB1] TO [ServerAdmin]。这意味着将SQL数据库的所有者更改为MyLogin。

请参阅:ALTER AUTHORIZATION for databases

我认为这就是为什么您仍然有权搜索表。

希望这会有所帮助。