두 SQL Server 데이터베이스 사용자 간의 보안 차이점 확인

sqlbulkcopy sql-server sql-server-2012 ssms tsql

문제

우리는 SQL Server 2012 / .Net Framework 4.5.1을 실행 중입니다.

우리는 다음을 수행하는 응용 프로그램을 가지고 있습니다 :

  1. .Net의 SqlBulkCopy 인스턴스를 사용하여 원본 데이터베이스에서 모든 테이블 데이터를 추출합니다.
  2. 일반 SQL 문을 사용하여 대상 데이터베이스의 모든 데이터를 삭제하십시오.
  3. .Net의 SqlBulkCopy 인스턴스를 사용하여 원본 데이터베이스의 데이터를 대상 데이터베이스에 배포합니다.

세 번째 단계는 SQL 연결이 내 Active Directory 계정을 사용하지만이 목적으로 생성 된 SQL Server 계정을 사용할 때 다음 오류 메시지와 함께 실패하면 성공합니다 . "[SchemaName]. [TableName]"개체를 찾을 수 없습니다. 존재하지 않거나 권한이 없습니다.

흥미롭게도이 프로세스는 약 12 ​​개의 테이블을 통해 실행되기 전에이 오류를 발생시킵니다. 수동 검증은 a) 표가 표적에 존재하는지, b) 사용자가 표에서 선택할 수 있는지, c) 문제가있는 사용자가 표준 INSERT INTO [SchemaName]. [TableName] ([ 열]) VALUES ([값]) 형식. BCP는 해당 사용자에 대해서도 작동하지만 .Net 응용 프로그램에서 SqlBulkCopy를 사용하면 동일한 사용자가 실패합니다.

우리 DBA (꽤 숙련 된 사람, 지금까지 내가 말할 수있는 한)는 두 명의 사용자간에 대상 데이터베이스에 대한 데이터베이스 사용 권한이 동일하지만 실제로는 그렇지 않다고 제안하는 것으로 보입니다.

문제를 살펴보면 사용자는 db_owner 또는 db_ddladmin 역할을 가져야 함을 알 수 있습니다. 사용자는 실제로 둘 다에 속합니다.

어쨌든, 지역 문제를 해결하는 것은 부차적 인 문제입니다. AD 계정으로 필요한 것을 처리 할 수 ​​있기 때문입니다. 두 사람 사이의 사용 권한 차이를 비교할 수있는 구운 방법이 있는지 여부를 정말로 알고 싶습니다. 그렇지 않다면 T-SQL 쿼리로 수행 할 수 있습니까?

고마워, 얘들 아!

인기 답변

여기에 내 사용 권한 스크립트가 있습니다. Visual Studio, Red Gate 등의 스키마 비교 제품을 사용하지 않는 한 일반적으로 모두가 사용하는 접근 방식입니다. http://www.csvreader.com/posts/permissions_list.php

SqlBulkCopy를 사용하여 대상 테이블에 스키마를 지정하고 있습니까? 사용자 소유의 스키마 인스턴스를 실행하고있을 가능성이 있습니까?

SqlBulkCopy는 대상 테이블에서 선택 및 삽입 만하면된다는 것도 내 경험이었습니다. BCP에는 설명한 에스컬레이션 된 사용 권한이 필요하며 이는 SqlBulkCopy의 또 다른 이점입니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.