首页 > 解决方案 > 为什么在 Azure SQL DB 中登录有权选择 DB 表而不将用户链接到 DB?

问题描述

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

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

标签: loginazure-sql-databaseprivileges

解决方案


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

DROP LOGIN TestLogin;  
GO  

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

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

参考:创建登录 (Transact-SQL)

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

但是当你表演 的时候ALTER AUTHORIZATION ON DATABASE ::[DB1] TO [MyLogin],那么 ALTER AUTHORIZATION ON DATABASE ::[DB1] TO [ServerAdmin]。这意味着将 SQL 数据库的所有者更改为 MyLogin。

请参阅:ALTER AUTHORIZATION for databases

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

希望这可以帮助。


推荐阅读