web-dev-qa-db-ja.com

T-SQL(SSMSではない)を使用してデータベースにログインをマップする方法

すべてのアクセス許可とすべてをコードに割り当てる必要があるプログラムを書いています。私はこの部分で立ち往生しています:

enter image description here

Msdbデータベースの[マップ]の下にある小さなボックスをクリックして、そのユーザーをSqlAgentUserロールに割り当てるのと同じことをしたいだけです。 SQL Serverエージェントジョブを追加/編集できるユーザーが必要です。私はSSMSを使用して設定を正しく取得できますが、生のSQLでそれを行う方法を理解することができません。

私は ALTER LOGIN を調べましたが、必要なことを何も見ていません。私は、Googleに対する正しい用語を知らないだけだと思います。私は通常このようなことはしません。

どんな助けでも大歓迎です!

12
eddie_cat
USE msdb;
GO
CREATE USER shims FROM LOGIN shims;
GO
ALTER ROLE SqlAgentUserRole ADD MEMBER shims;
GO

また、今後の参考のために、UIでスクリプトではなく何かを行う方法を知っているときはいつでも、これがほとんどのダイアログのScriptオプションの目的です。これにより、SSMSが実行したスクリプトが表示されます。 :

enter image description here

18
Aaron Bertrand

Current\defaultデータベースを別のデータベースに変更する場合は、次のことを試してください。

alter login <loginname> with default_database = <dbname>;

次に、上記のログイン用のユーザーを作成します

 use <dbname>;
 create user <username> from login <loginname>;

そして、以下のように、ログイン用の上記の作成ユーザーにロールを割り当てることができます。

use <dbname>
exec sp_addrolemember 'db_owner', '<username>';
3
KASQLDBA