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


12

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

ここに画像の説明を入力してください

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

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

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


3
今後のプロジェクトで役立つと思われる「スクリプトを生成」できます。画面上部。
レーサーSQL

1
@RafaelPiccinelliああ、それはとても役に立ちます!そこまで気づかなかった!ありがとうございました!
eddie_cat 2015年

私はコードが本当に苦手です、これは私にたくさんの助けになります。
レーサーSQL

回答:


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

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

ここに画像の説明を入力してください


3

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
ドキュメントからThis feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use ALTER ROLE instead.
アーロンバートランド

では、msdbでこのユーザーを操作するたびに、デフォルトのデータベースを変更する必要がありますか?上のウィンドウでは、一度に複数のデータベースをユーザーに関連付けることができるようです...それは間違っていますか?
eddie_cat 2015年

@eddie_catいいえ、このユーザーがデフォルトで常に特定のデータベースに接続することを望まない限り、デフォルトのデータベースを変更する理由はありません。
アーロンバートランド

ログイン用のユーザーを作成するには、正しい構文は次のとおりです。------------------------------------------- ------------------------------ USE [DatabaseName] GO CREATE USER [UserName] FOR LOGIN [LoginName] GO
Kundan Dasange
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.