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.