SSMS가 아닌 T-SQL을 사용하여 로그인을 데이터베이스에 매핑하는 방법


12

코드에 모든 권한과 모든 것을 할당 해야하는 프로그램을 작성 중입니다. 나는이 부분에 갇혀있다 :

여기에 이미지 설명을 입력하십시오

msdb 데이터베이스의 "Map"아래에있는 작은 상자를 클릭하고 해당 사용자를 SqlAgentUser 역할에 할당하는 것과 같습니다. SQL Server 에이전트 작업을 추가 / 편집 할 수있는 사용자가 필요합니다. SSMS를 사용하여 설정을 올바르게 얻을 수는 있지만 원시 SQL에서 설정을 수행하는 방법을 알 수는 없습니다.

ALTER LOGIN을 살펴 보았지만 필요한 작업을 수행하는 것은 보이지 않습니다. Google에 대한 올바른 용어를 모르는 것 같습니다. 나는 보통 이런 종류의 일을하지 않습니다.

어떤 도움이라도 대단히 감사합니다!


3
향후 프로젝트에서 도움이 될 것으로 생각되는 "스크립트 생성"을 할 수 있습니다. 화면 상단에
Racer SQL

1
@RafaelPiccinelli 아 정말 도움이됩니다! 나는 심지어 거기까지 그것을 알아 차리지 못했습니다! 감사합니다!
eddie_cat

나는 코드가 정말 나쁘다. 이것은 나에게 많은 도움이된다.
Racer 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.
Aaron Bertrand

msdb에서이 사용자로 작업을 수행 할 때마다 기본 데이터베이스를 변경해야합니까? 위의 창에서 한 번에 하나 이상의 사용자와 연결된 데이터베이스를 둘 이상 가질 수있는 것 같습니다.
eddie_cat

@eddie_cat 아니요,이 경우 사용자가 기본적으로 항상 특정 데이터베이스에 연결하지 않으려는 경우 기본 데이터베이스를 변경할 이유가 없습니다.
Aaron Bertrand

로그인 할 사용자를 작성하려면 올바른 구문은 다음과 같습니다. ------------------------------------------- ------------------------------ 사용 [데이터베이스 이름] GO 로그인 사용자 [사용자 이름] 로그인 [로그인 이름] GO
Kundan Dasange
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.