0

데이터베이스를 만들 수있는 권한을 사용자에게 부여했습니다. 그들은 현재 소유하고있는 데이터베이스를 만들 수 있었지만 스크립트를 실행하여 테이블을 만들 때 오류가 발생했습니다. 이 시점에서 많은 정보를 얻지 못했습니다 (죄송합니다!). 따라서 직접 진단 할 수는 없지만 데이터베이스 사용 권한이 더 많은 사람이 도움이 될 수 있습니다.왜 사용자가 스크립트를 사용하여 데이터베이스에 테이블을 만들 수 있습니까? 아마도 SP 권한 문제입니까?

나는 내장 된 내장 프로 시저를 사용하고 있다고 가정하고 있으며 일부 허가 문제입니다. 데이터베이스를 만들거나 소유 할 수 있다면 원하는대로 할 수는 있지만 액세스 할 수없는 것이 있어야한다고 생각했습니다.

조언이 있으십니까? "데이터베이스 생성"이상의 권한을 부여해야합니까? 액세스해야하는 저장 프로 시저의 공통/표준 집합이 있습니까? 그들은 "마스터"데이터베이스에 액세스해야합니까?

+0

MODEL 데이터베이스에 연결된 DATABASE 수준의 트리거를 먼저 확인합니다. – RichardTheKiwi

+0

[모델] 데이터베이스에 트리거가 없습니다. SSMS에서 [SQLServer] -> [Databases] -> [System 데이터베이스] -> [모델] -> [프로그래밍] -> [데이터베이스 트리거]가 비어 있습니다. – Triynko

답변

1

이에서 데이터베이스를 만든 후 데이터베이스

"대한 db_owner"되는 서로 다른 인 서버 수준에서 데이터베이스를 "소유"이

CREATE USER foo FOR LOGIN foo 
EXEC sp_addrolemember 'db_owner', 'foo' 

더 많은 정보를 원하시면 CREATE USER를 참조 실행

편집 : CREATE DATABASE에서 dbo 매핑에 대한 모든 소유자의 신뢰는 신뢰할 수 없습니다. 명시 적으로 사용 권한을 설정하거나 sp_changedbowner를 사용하십시오.

+0

로그인 'foo'가 데이터베이스를 만들었으므로 이미 데이터베이스에 'db_owner'역할을 가지고 있습니다. 특히 데이터베이스의 사용자 'dbo'는 'db_owner'역할을 가지며 사용자 'dbo'는 로그인 'foo'와 연결됩니다. 내가 말했듯이, 'foo'가 데이터베이스를 만들었으므로 완전히 소유하고 (서버 레벨과 db_owner 역할을 모두 갖고 있기 때문에), 테이블을 만들 수 없도록해야한다. – Triynko

+0

저는 실제로 사용자가 만들고 소유 한 데이터베이스에서 스크립트가 테이블을 만들지 못하게 할 수있는 다른 것에 대해 생각하거나 아이디어를 얻으려고합니다. – Triynko

+0

@Triynko : CREATE DATABASE *는 데이터베이스의 사용자 * 역할을 설정하지 않습니다. 따라서이 답변을주었습니다. dbo 매핑에 의존하는 것은 신뢰할 수 없습니다. 명시 적으로 사용 권한 설정 – gbn

관련 문제