SQL Server의 컨텍스트에서 작업을 수행하는 데 사용되는 사용자 계정을 어떻게 알 수 있나요?

SQL Server의 컨텍스트에서 작업을 수행하는 데 사용되는 사용자 계정을 어떻게 알 수 있나요?

예를 들어 SQL Server 2008을 설치할 때 데이터베이스 엔진을 실행할 계정을 선택해야 했습니다.

SQL Server Management Studio를 사용하여 2005 데이터베이스 파일을 첨부하려고 했을 때 데이터베이스 업그레이드를 방해하는 권한 오류가 발생했습니다. 데이터베이스 파일을 확인한 결과 "SQLServerMSSQLUser$ComputerName$MSSQLSERVER" 계정에 해당 파일에 대한 모든 권한이 있습니다.

그래서 SQL Server Management Studio가 데이터베이스 파일을 업그레이드할 수 있는 쓰기 권한이 없는 내 사용자 이름으로 실행되고 있다는 것을 알았습니다. 그래서 내 사용자 이름에 대한 전체 권한을 추가한 후 제대로 작동했습니다.

이 사건이 제가 이런 질문을 하게 된 계기가 되었습니다. 어떤 계정에서 작업이 실행되고 있는지 어떻게 알 수 있나요? 나는 데이터베이스 엔진이 데이터베이스 연결을 처리할 것이라고 생각했지만 분명히 그렇지 않았습니다!

게다가 데이터베이스가 연결되면 보안 목록에서 내 사용자 이름이 제거된 것 같습니다! 따라서 데이터베이스를 분리하면 데이터베이스를 다시 연결하기 전에 파일에 대한 권한을 다시 한 번 재설정해야 한다고 생각합니다.

답변1

SSMS가 이러한 혼란을 일으키는 것 같습니다. 내 생각에는 대화 상자에서 파일을 선택해야 한다는 것은 SSMS가 실행 중인 계정에도 파일에 대한 권한이 필요하다는 것을 의미합니다.

서비스 계정에 파일에 대한 권한이 있으면 t-sql을 사용하여 데이터베이스를 연결할 수 있습니다.

사용해 보세요sp_ 첨부 _dbsa로 로그인하거나 다음을 사용해야 합니다.사용자 설정 또는데이터베이스 생성... 부착용

만약 당신이 정말로~ 해야 하다SSMS를 사용하고 T-SQL에 대한 생각을 하면 SQL Server 서비스를 실행하기 위한 사용자 계정을 만든 다음 이 계정을 사용하여 SSMS를 시작하고 싶습니다.

답변2

실행 파일의 이름을 알고 있는 경우 작업 관리자의 프로세스 탭에 해당 파일을 실행 중인 사용자 이름이 표시됩니다.

답변3

나는 여기서 답을 찾았습니다.
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_22785783.html

관련 SQL Server 설명서는 다음과 같습니다.
http://msdn2.microsoft.com/en-us/library/ms189128.aspx
"데이터베이스를 분리하거나 연결할 때 데이터베이스 엔진은 해당 계정에 데이터베이스 및 로그 파일에 액세스할 수 있는 권한이 있는지 확인하기 위해 작업을 수행하는 연결의 Windows 계정을 가장하려고 합니다. SQL Server 로그인을 사용하는 혼합 보안 계정의 경우 가장이 실패할 수 있습니다."

또한 "파일 액세스 권한은 생성, 연결, 분리, 새 파일 추가를 위한 수정, 백업 또는 복원과 같은 데이터베이스 작업 중에 설정됩니다."라고 명시되어 있습니다.

당연히 RTFM이 필요합니다. 하하.

관련 정보