데이터베이스 프로젝트로 가져오기

가져오기를 사용하여 프로젝트를 라이브 데이터베이스 또는 .dacpac의 새 개체로 채우거나 프로젝트의 기존 개체를 스크립트의 새 정의로 업데이트할 수 있습니다. 아래에 설명된 이러한 세 경로 간에는 몇 가지 주의할 동작 차이점이 있습니다.

가져오기 메뉴

SSDT Import Menu

이 주제의 구역

가져오기 소스: 데이터베이스 또는 데이터 계층 애플리케이션(*.dacpac)

가져오기 원본: 스크립트(*.sql)

암호화된 개체 가져오기

가져오기 소스: 데이터베이스 또는 데이터 계층 애플리케이션(*.dacpac)

데이터베이스 또는 .dacpac 파일에서 스키마를 가져오는 기능은 프로젝트에 이미 정의된 스키마 개체가 없는 경우에만 사용할 수 있습니다. 여기에는 RefactorLog 또는 배포 전/배포 후 스크립트가 포함되지 않습니다.

가져올 때 개체 정의는 새 개체에 대한 SSDT의 조직 기본값을 사용하여 프로젝트 파일로 스크립트되며, 새 개체는 최상위 개체에 대한 새 파일, 부모 파일과 동일한 파일에 정의된 계층적 자식, 가능한 경우 인라인으로 정의된 테이블/열 제약 조건을 말합니다. 각 개체에 대한 더 많은 대상 표시 여부 및 제어를 위해 가져오기 대신 스키마 비교를 사용합니다.

가져오기 원본에 배포 전 및 배포 후 스크립트, RefactorLog 또는 SQLCMD 변수 정의가 포함되어 있는 경우 프로젝트로 가져올 수 있습니다. 프로젝트에 이러한 아티팩트 중 하나라도 이미 포함되어 있을 경우 가져온 파일은 프로젝트의 가져오기 시 무시됨 폴더에 추가됩니다.

가져오기 폴더에서 무시됨

SSDT Ignored on Import Folder

가져오기 원본: 스크립트(*.sql)

프로젝트에 아직 없는 가져오기 원본의 모든 개체가 추가되고, 프로젝트에 이미 있는 가져오기 원본의 모든 개체가 프로젝트의 개체 정의를 덮어쓰게 됩니다.

참고 항목

이 경로에는 향후 릴리스에서 수정될 두 가지 알려진 버그가 있습니다.

  • 테이블/열 제약 조건이 프로젝트의 테이블 정의에 있는 CREATE TABLE 문 외부에서 정의되는 경우, 가져오기는 제약 조건이 인라인이 되도록 테이블 정의를 덮어씁니다. 하지만 인라인이 아닌 제약 조건은 그대로 두기 때문에 프로젝트에 중복되는 제약 조건이 생깁니다.
  • 프로젝트에 이미 있는 원본 스크립트의 마스터 키 또는 데이터베이스 암호화 키는 가져올 때 중복됩니다. 프로젝트를 빌드하기 위해 중복 항목을 제거합니다.

스크립트에서 가져오기 프로세스는 배포 전/후 스크립트, SQLCMD 변수 또는 RefactorLog 파일을 이해하지 않습니다. 가져오기 시 검색된 이러한 구문과 지원되지 않는 다른 구문은 프로젝트의 Scripts 폴더에 있는 ScriptsIgnoredOnImport.sql 파일에 배치됩니다.

암호화된 개체 가져오기

암호화된 개체를 데이터베이스 프로젝트로 가져올 때 서버에서 개체 정의의 전체 본문을 항상 검색할 수는 없습니다. 그렇기 때문에 이러한 클래스의 개체를 처리할 때는 가져오기 동작이 다를 수 있습니다.

전체 본문 정의를 검색할 수 없는 경우 더미 본문과 함께 개체 머리글/바닥글이 스크립트됩니다. 원본이 라이브 데이터베이스이거나 데이터베이스에서 추출한 .dacpac일 때 가져오기를 실행하거나 스키마 비교를 사용하면 이러한 동작이 나타날 수 있습니다.

더미 본문이 포함된 스크립트

Script with a Dummy Body

전체 개체 정의를 사용할 수 있고 검색할 수 있는 경우 가져오기 및 스키마 비교는 그것을 전체적으로 프로젝트에 가져옵니다. 이 문제는 스크립트, 데이터베이스 프로젝트에서 빌드된 .dacpac 또는 다른 데이터베이스 프로젝트에서 프로젝트를 업데이트할 때 발생합니다.