如何使用 T-SQL(而非 SSMS)将登录名映射到数据库

edd*_*cat 15 security sql-server t-sql ddl logins

我正在编写一个程序,需要我分配所有权限和代码中的所有内容。我被困在这部分:

在此处输入图片说明

我只想为 msdb 数据库单击“映射”下的小框并将该用户分配给 SqlAgentUser 角色。我需要一个能够添加/编辑 SQL Server 代理作业的用户。我可以使用 SSMS 获得正确的设置,但我一生都无法弄清楚如何在原始 SQL 中进行设置。

我已经查看了ALTER LOGIN,但没有看到任何可以满足我需要的东西。我怀疑我只是不知道 Google 的正确术语。我一般不会做这种事。

任何帮助深表感谢!

Aar*_*and 20

USE msdb;
GO
CREATE USER shims FROM LOGIN shims;
GO
ALTER ROLE SqlAgentUserRole ADD MEMBER shims;
GO
Run Code Online (Sandbox Code Playgroud)

此外,为了将来参考,任何时候您知道如何在 UI 中而不是在脚本中执行某些操作时,这就是Script大多数对话框中的选项的用途 - 它会向您显示 SSMS 将执行的脚本:

在此处输入图片说明


KAS*_*DBA 5

如果要将当前\默认数据库更改为不同的数据库,请尝试:

alter login <loginname> with default_database = <dbname>;
Run Code Online (Sandbox Code Playgroud)

现在,为上面创建的登录创建一个用户

 use <dbname>;
 create user <username> from login <loginname>;
Run Code Online (Sandbox Code Playgroud)

现在您可以为上述创建用户分配角色以进行登录,如下所示:

use <dbname>
exec sp_addrolemember 'db_owner', '<username>';
Run Code Online (Sandbox Code Playgroud)

  • [来自文档](https://msdn.microsoft.com/en-us/library/ms187750(v=sql.110).aspx):`此功能将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。改用 ALTER ROLE。` (4认同)