自动向 TempDB 数据库添加用户和权限
前段时间公司的开发服务器从内部服务器转移到了一台公网的 Azure 服务器,SQL Server 也变成公网开放,因此其面临的安全性风险骤增。为了提升安全性,数据库用户现在没有 Sys Admin 权限,仅有权访问少数数据库。这带来一个问题就是数据库重启以后,TempDB 数据库被重建,非 Sys Admin 角色的数据库用户就失去了操作 TempDB 的权限,进而导致一些需要 TempDB 数据库操作的操作失败。
解决的问题有两种,一种就是将数据库用户添加到 Model 数据库,因为所有新建数据库都是复制自 Model 数据库,因此重建 TempDB 数据库就自带了需要的数据库用户。这种做法的缺点也很明显,任何新建数据库都默认自带那些数据库用户,这可能并不是我们期望的。第二种方法是我们设立一个自动任务,每次 TempDB 数据库重建,我们就自动给它添加上需要的数据库用户。这里我们介绍一下如何实现第二种方法。
我们假设为登录用户 abc 在 TempDB 数据库中创建对应用户并赋予它 TempDB 数据库的 db_owner 角色。代码如下:
1 | use TempDB |
接下来,我们利用 SQL Server Agent 设立一个自动任务来运行上面的脚本,Schedule Type 选为”Start automatically when SQL Server Agent starts”即可。