2014-12-01 5 views
3

SSDT 데이터베이스 프로젝트로 데이터베이스를 만들고 dacpac으로 배포하고 있습니다. .NET 어셈블리는 다음과 같은 오류 메시지와 함께 실패 프로젝트의 일부 및 배포 설치 중입니다 :dacpac으로 신뢰를 켭니다

어셈블리 'XYZ'에 대한 어셈블리를 만들 조립 'XYZ'가 PERMISSION_SET 승인되지 않았기 때문에 = 안전하지 않은 실패했습니다. 데이터베이스 소유자 (DBO)에 UNSAFE ASSEMBLY 권한이 있고 데이터베이스에 에 TRUSTWORTHY 데이터베이스 속성이있는 경우 어셈블리가 허가됩니다. 또는 어셈블리에 에 해당하는 로그인이있는 인증서 또는 비대칭 키와 함께 서명 된 경우 UNSAFE ASSEMBLY 권한.

dbo는 'sa'입니다. 필자는 프로젝트 속성으로 이동하여 기타 탭에서 "신뢰할 수 있음"을 선택했습니다. 그러나, 나는 여전히 오류가 나는

select name, is_trustworthy_on from sys.databases 

을 실행할 때 나는 is_trustworthy_on이는이 설정이 적용되지 않습니다 보인다 0 인 것을 알 수있다. 검색 후, 나는 다음과 같은 발견 : 같은 신뢰할 수 DB_CHAINING 및 HONOR_BROKER_PRIORITY와 같은

일부 데이터베이스 옵션을 배포 과정의 일환으로 조정할 수 없습니다. http://msdn.microsoft.com/en-us/library/ee210569.aspx

단어 조정이 의미 에서

나에게을 변경했습니다. 이것은 새로운 데이터베이스입니다. 그러나 새 데이터베이스에도 해당되는 경우 대화 상자에 설정이있는 이유는 무엇입니까? 사전 배포의 일환으로이 스크립트를 작성해야합니까?

+0

나는 그것이 정말로 당신의 질문에 대답하지 않는다는 것을 알고 있지만 데이터베이스를 신뢰할 만하게 만드는 대신 어셈블리에 서명을 시도 할 수 있습니다. – Mansfield

+0

가능하지만 이상적이지 않습니다. 나는 그대로있는 상태를 자동화하기 위해 계약을 맺고 있습니다. – Swoogan

답변

3

"기타"탭의 "신뢰할 수있는"확인란을 이미 선택 했으므로 "데이터베이스 속성 배포"옵션을 선택했는지 (또는 true로 설정했는지) 확인하면됩니다. 이 옵션은 게시 방법에 따라 다른 위치에 있습니다. 일부 장소는 다음과 같습니다

  • 은 "빌드"메뉴로 이동하고 선택 "{프로젝트 이름} 게시 ..."
    • "데이터베이스를 게시"마법사가 나타납니다.온
    • 클릭 "고급 ..."버튼을
    • 최고 체크 상자가 SqlPackage.exe를 사용


  • "데이터베이스 특성을 배포"입니다 :
    • 프로필 파일을 통한 전달 : <ScriptDatabaseOptions>True</ScriptDatabaseOptions>
    • 명령 줄을 통해 전달 : /p:ScriptDatabaseOptions = True


  • 를 사용 MSDeploy을 dbSqlPackage 공급자 :
    • 옵션은 다음과 같습니다 ScriptDatabaseOptions=True
+1

남자를 떠날 방법은 서스펜스입니다! ;) – Swoogan

+0

@Swoogan 죄송합니다. 몇 군데 먼저 확인해야합니다.) –

+1

대단히 고마워요. 화물 컬트 프로그래밍./p : ScriptDatabaseOptions = False가있는 다른 배포 스크립트를 복사했습니다. 나는 그것이 무엇을했는지 분명히 알지 못했다. – Swoogan

0

당신은 sysadmin이어야한다고 말하는 메시지가 나타 납니까 ?? 배포를 수행하는 사용자는 sysadmin 그룹에 있어야합니다. 래핑 일부 설정이 있습니다.. IS_SRVROLEMEMBER (N'sysadmin ') = 1 시작하면

IF 존재 은 ([주] [DBO] SYSDATABASES] WHERE [이름] = FROM 1 를 선택 N '$ (DatabaseName)') BEGIN EXECUTE sp_executesql N'ALTER 데이터베이스 [$ (DatabaseName)] SET TRUSTWORTHY ON WITH ROLLBACK IMMEDIATE '; END END ELSE BEGIN PRINT N '데이터베이스 설정을 수정할 수 없습니다. 이 설정을 적용하려면 시스템 관리자 여야합니다. '; END

+0

배포에 사용되는 로그인은 sysadmin 역할의 일부입니다. 그러나 스크립트를 생성하고 신뢰할 수있는 검색을 수행 할 때 어떤 결과도 얻지 못합니다. 그걸 어떻게 만들었습니까? – Swoogan