2009-10-20 2 views
0

SQL 데이터베이스와 우리의 응용 프로그램을 하나의 PC에 설치하고 있습니다. Vista에서는 관리자 계정으로 설치해야하지만 일반 사용자 계정은 프로그램을 실행할 수 있지만 필요한 데이터베이스는 액세스 할 수 없습니다.SQL은 PC의 모든 사용자에게 읽기/쓰기 권한을 할당합니다.

내가 필요한 것은 PC의 모든 NT 로그인이 데이터베이스에 액세스 할 수있게하는 간단한 방법입니다.

나는 그것을 해결할 수 있다고 생각했다 : SSMS에서 수동으로 db_datareader/writer 역할을 BUILTIN \ Users에 할당 할 수 있으며 완벽하게 작동한다.

USE [OurDatabase] 
GO 
EXEC sp_addrolemember N'db_datawriter', N'BUILTIN\Users' 
GO 
EXEC sp_addrolemember N'db_datareader', N'BUILTIN\Users' 
GO 

사용자가 역할을 할당받을,하지만 그들은 여전히 ​​데이터베이스에 액세스 할 수 없습니다 내 설치 프로그램 다음을 실행하면

그러나, 그것은 작동하지 않습니다. SSMSE에서 볼 수있는 유일한 차이점은 후자의 경우 새로운 "BUILTIN \ Users"스키마에 대한 소유권도 확보된다는 것입니다.이 스키마는 상황을 망칠 수도 있습니다. 분명히 SSMS는 약간 다른 작업을 수행합니다 ...

누구나 프로그래밍 방식으로이 작업을 수행 할 수있는 방법을 제안 할 수 있습니까?

답변

2

OurDatabase에서 무엇 사용자이 로그인에 매핑됩니까? 프로그래밍 방식과 SSMS 방식의 차이점이 있습니까? 일 때 그룹 로그인에 매핑 된 사용자의 기본 스키마는 무엇입니까?

+0

SSMS에서 "새 사용자"대화 상자의 변경 내용을 스크립팅하도록 요청하면 내 질문에 SQL 스크립트가 생성되므로 프로그래밍 방식으로 어떤 작업을하는지 볼 수 없습니다. 모든 경우에 기본 스키마는 비어있는 (그리고 편집 할 수없는) 것처럼 보입니다. SSMS에서 볼 수있는 유일한 차이점은 프로그래밍 방식으로 추가 된 사용자가 새로운 "BUILTIN \ Users"스키마를 소유한다는 것입니다.이 스키마는 마술처럼 나타났습니다. 따라서 더 나은 기본 스키마를 사용할 수있는 방법을 찾아야 할 것입니다. ? –

+0

솔루션에 대한 전체 설명은 내 대답을 참조하십시오. 그러나 Aaron 's을 받아들이면 해결책을 찾았습니다. –

0

vista에서만 관리자로 실행되도록 응용 프로그램을 설정하는 방법은 무엇입니까?

+0

합니다. 응용 프로그램은 승격되지 않은 사용자로 실행되며, 관리자가 컴퓨터로 가서 사용자가 프로그램을 실행하고 싶을 때마다 암호를 입력하지 않아도되도록하고 싶지 않습니다! –

0

아, 사용자가 없으면 SSMS도 데이터베이스에서 사용자 만들기 [BUILTIN \ 사용자] FOR LOGIN [BUILTIN \ 사용자] 을 수행하는 것으로 보입니다.

수행 할 작업을 시도하는 동안 사용 권한을 여러 번 켜고 끄는 중이었고 이후에 시도 할 때 사용자가 이미 있으므로 SSMS는 CREATE 명령을 사용하지 않았습니다. 그래서 내가 마침내 내가해야 할 일을 알아 냈을 때, 불완전한 스크립트가 필요했습니다.

이 명령의 효과가 사용자 속성에는 나타나지 않기 때문에 이것은 분명하지 않았습니다. SSMS의 Server Security \ Logins 섹션에있는 User Mapping에 나타납니다. 아론

감사 (로그인의 언급은 나를 보안 \ 로그인 페이지보고했고 나는 거기 매핑의 차이 발견) 특별히 내가 피하기 위해 노력하고있어 무슨

관련 문제