Azure Data Studio持续更新,发布了Table Designer、Query Plan Viewer等功能。虽然,SQL Server最权威的管理工具一直是SSMS,不过最近看到MS也在快速更新Azure Data Studio。相比,SSMS,ADS是一个跨平台的产品,可以同时支持Windows、MacOS、Linux,可以看到MS在以云为战略核心之后,开发者、开放、开源都是其核心策略。
Azure Data Studio持续更新,发布了Table Designer、Query Plan Viewer等功能。虽然,SQL Server最权威的管理工具一直是SSMS,不过最近看到MS也在快速更新Azure Data Studio。相比,SSMS,ADS是一个跨平台的产品,可以同时支持Windows、MacOS、Linux,可以看到MS在以云为战略核心之后,开发者、开放、开源都是其核心策略。
战争还没有结束,更多的数据库相关的大小组织勇敢的表达了自己的观点:
Percona’s Stance on Ukraine – Percona Database Performance Blog
We stand with Ukraine – MariaDB.org
Oracle suspends operations in Russia, SAP pauses sales – REUTERS
use zzxdb2;
create table t_1(id int,nick nchar(12),birthday date);
create login zzxdb2 with password='zzxdb2' ,CHECK_POLICY=OFF;
create user zzxdb2 for login zzxdb2;
-- 当没有赋予权限的时候,zzxdb2可以登录SQL Server,但是看不到zzxdb2下面的TABLE
-- 所以,最后还需要赋予database user相应的权限,如下
exec sp_addrolemember 'db_owner', 'zzxdb2';
为什么容易混淆
通常的系统中只有用户的概念,权限系统都是基于用户。而SQL Server在其上新增了Login这一层,与其他的系统都不同。另外,在一般的客户端中,在需要登录的时候,通常都是使用”user name”/”password”作为登录认证的凭证,而不是”Login”/”password”,所以初学者通常容易混淆,例如微软的Mac客户端Azure Data Studio:
CREATE USER a_db_user_9zcloud WITHOUT LOGIN;
ALTER USER a_db_user_9zcloud WITH LOGIN='alogin';
-- 报错如下:
消息 33016,级别 16,状态 1,第 45 行
The user cannot be remapped to a login. Remapping can only be done for users that were mapped to Windows or SQL logins.
在给一个对象(主体)赋权的时候,可以通过按照细粒度(某个表的某种权限)方式进行,也可以直接将其加入到某个角色组,那么这个角色组对应的权限就都有了。例如,将login加入到”sysadmin”(fixed server role),那么就有了所有sysadmin角色组的权限,sysadmin可以理解是一个超级权限组,如果在该组中,那么访问对象时不需要检查该账号的权限;与sysadmin对应的一个权限是”CONTROL SERVER”,如果使用GRANT则可以使用这个权限。
另外,前文中偶尔会用到”主体”这个名称,英文对应SQL Server文档中的”Principals”,”主体”是SQL Server官方中文文档的翻译(参考)。可以理解为一个实体,或者前面对象的实例化或者实体,也就是说,某个具体的”server roles, logins, database roles, or users.” 都可以称作”Principals”。
在创建user的时候,如果没有显示的指定FOR LOGIN,没有指定WITHOUT LOGIN,那么该user将会被映射到同名的login上(还没有验证这一点,参考:If FOR LOGIN is omitted, the new database user will be mapped to the SQL Server login with the same name.)。