2010-08-04 2 views
5

MS SQL Server 데이터베이스를 사용하고 O/R 매퍼와 함께 사용할 뷰를 많이 사용합니다. 약간의 짜증 내가 원하는 것입니다에스키마 바인딩과 업데이트를 자주 사용할 때 db 스키마 업데이트를 처리하는 방법

  • (서버에 배포하고 소스 제어 시스템에 넣어)

을하지만,이 문제에 실행되는 스크립트와

  • 바인딩 업데이트 사용 스키마이 언제든지 예를 들어 싶다. 테이블에 열을 추가하려면 먼저 해당 테이블을 참조하는 모든 뷰를 삭제하고 테이블을 업데이트 한 다음 뷰를 다시 작성해야합니다. 이것은 내 업데이트 스크립트를 더 오랜 시간 동안 만들어 주며 소스 제어 시스템에서 diff 파일을 찾으면 실제 관련 변경 사항이 무엇인지 알기가 더 어렵습니다.

    더 나은 방법이 있나요?

    간단하고 소스 제어가 가능한 SQL 업데이트를 사용할 수 있어야합니다. SQL Server Management Studio에 포함 된 코드 생성기가 유용 할 수 있지만 일부 인덱스 또는 (기본) 제약 조건의 이름을 지정하지 않는 코드를 만드는 경향이 있다는 점에서 SQL Server Management Studio에 문제가있었습니다. 하지만 모든 제약 조건의 이름 등 다른 시스템에서 스크립트를 실행할 때 동일한 제약 조건을 갖고 싶습니다. 나중에 이러한 제약 조건을 업데이트 할 때 루프를 건너 뛰지 않아도됩니다.

    그래서 더 똑똑한 SQL 코드 생성기가 해결책일까요?

    내 워크 플로우는 이제 ". cannot ALTER 'XXX' because it is being referenced by object 'YYY'"

    • 유형의 쿼리 편집기에서 alter table
    • 체크 내가 같은 오류 문을 얻는 경우
    • 스크립트에
    • 사용 SQL 서버 Managment를 스튜디오 나 참조 된 개체에 대한 create 코드
    • 는 ALTER 문 앞에 drop 문을 삽입하고
    • 확인 후 문을 만들 drop 문이 오류를 생성하면 반복

    이것은 나를 귀찮게하지만 아마도 스키마 바인딩과 스크립트 업데이트를 계속 사용하려면 간단히 살 필요가 있습니다 ...

  • 답변

    2

    적어도 " 몇 가지 동적 관리 기능 및 시스템 뷰를 쿼리하여 종속성을 찾을 수 있습니다. This article은이를 수행하는 방법에 대한 적절한 설명을 제공합니다. 그 이상으로, 나는 네가 옳다고 생각한다. 너는 케이크를 먹을 수없고 스키마 바인딩으로 먹을 수 없다.

    뷰를 삭제/생성하면 해당 개체에 부여 된 사용 권한이 모두 손실되므로 해당 사용 권한도 스크립트에 포함되어야합니다.

    +1

    오. 나는 그걸로 살거 같아. 이상적으로 내가 원하는 것은 : a) 테이블 업데이트가 뷰에 실제로 영향을 미치지 않으면 오류 메시지가 표시되지 않습니다. (예 : 새 열을 추가하면이 테이블의 읽기 전용보기에 영향을 미치지 않음) b) 테이블 업데이트가 뷰를 중단시키는 경우의 오류 메시지 (예 :보기에서 사용되는 열 삭제) 하지만 MSSQL 그냥 그럴리가 (아마도 좋은 이유 ...) 작동하지 않는 것 같아요 사용 권한 주셔서 감사! –

    관련 문제