익명으로 이름이 변경된 다음 스크립트를 사용하여 Windows 그룹을 SQL 2008 R2 인스턴스에 매핑하는 서버 로그인 및 데이터베이스 사용자를 추가했습니다.
USE master
go
CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS
WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
go
USE AppDb
go
CREATE USER [DOMAIN\AppUsers] FOR LOGIN
[DOMAIN\AppUsers]
go
EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers'
go
DOMAIN \ User1 계정이 앱에 로그온하면 User1이 DOMAIN \ AppUsers의 구성원이므로 User1이 dbo 스키마의 테이블을 올바르게 쿼리하지만이 앱을 통해 사용자도 테이블을 만들 수 있습니다. schema를 지정하지 않고 이러한 테이블 을 만들면 SQL Server는 다음을 수행합니다.
- 인스턴스의 SSMS \ Security \ Logins에 나열되지 않은 'DOMAIN \ User1'로그인을 사용하는 AppDb에 'DOMAIN \ User1'사용자를 만듭니다.
- AppDb에서 'DOMAIN \ User1'스키마를 만듭니다.
- 새로운 'DOMAIN \ User1'스키마를 사용하여 해당 테이블을 작성합니다.
나는이 결과로 완전히 당황했습니다. 내 질문은 다음과 같습니다.
- 추가 객체를 생성하는 대신 테이블 생성이 실패 할 것으로 예상합니다. 누군가 온라인 설명서에서이를 설명하는 부분을 알려줄 수 있습니까?
- 서버가 'DOMAIN \ AppUsers'스키마를 작성하고 스키마를 추가 할 경우 해당 스키마에 새 테이블을 추가하지 않는 이유는 무엇입니까?
- 또한 데이터베이스는 SSMS \ Security \ Logins에 표시되지 않은 로그인을 어떻게 사용합니까?
- SSMS \ Databases \ AppDb \ Security \ Users의 'DOMAIN \ User1'사용자를 보면 사용자 아이콘에 작은 빨간색 화살표가 아래쪽을 가리 킵니다. 그게 무슨 뜻이야?
우리는 단순성을 위해 SQL 인증을 선호하는 조직 내에서 Windows 인증을 사용하기 시작했습니다. 따라서 제 질문은 차이점을 모르는 것이 확실합니다. 이 코드는 Windows 인증 사용을 고려하기 오래 전에 작성되었으므로 데이터베이스 소유자 이외의 사람으로 Windows 인증을 사용하여 로그온 할 때 새 스키마 작성에 대한 이해를 향상시켜야합니다.
당신이 말할 수없는 경우, 나는 SQL 인증보다 Windows 인증의 사용을 추진하고 있습니다. 이를 잘 이해하지 못하면 SQL 인증으로 되돌아갑니다.