db1中有一些表。我在Master DB中创建了登录MyLogin,而无需为此创建用户(或创建但已删除)。但是现在,至少我检查了没有带有Mylogin的SID的用户。为什么我仍然有权搜索表?
select * from sys.sysusers; -- Check in DB1
select * from sys.sql_logins; -- Check in Master DB
在创建登录之前,我们需要检查登录是否存在。演示代码:
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。
请参阅:数据库的更改授权。
我认为这就是为什么您仍然有权搜索表。
希望这会有所帮助。