2009-06-02 3 views
0

여러 db를 사용하는 winform 앱을 배포해야합니다. 로컬로 상호 작용할 때 내 앱과 함께 배포해야합니다.SQL을 배포하고 DB를 첨부하는 방법 : ClickOnce?

ClickOnce를 사용할 수 있습니까? 아니면 다른 접근 방식을 고려해야합니까? ClickOnce에 대한 몇 가지 예제를 발견했지만 모두 DB가 솔루션에 포함되어 있다고 가정했습니다. 여기서는 그렇지 않습니다.

이 앱은 웹 앱으로 사용되었으며 DB와 DAL은이를 반영합니다. 나는 또한 중앙 DB에 병합 복제를 사용하고있다.

DB를 만드는 스크립트를 작성하고 설치하는 동안 스크립트를 실행 한 다음 병합 복제를 해제하여 테이블을 채우는 것이 가장 좋습니다. DB에는 100여 가지의 sproc가 포함되어있어 Merge Repl로는 훌륭하게 작동하지 않으므로 처음 설치시에도 포함시킬 수 있어야합니다.

그렇지 않으면 설치하는 동안 sprocs가 포함될 DB를 연결하는 방법을 알아낼 수 있다고 생각했지만 그 방법도 알지 못합니다.

나는 4 개의 별도의 SQL DB가있는이 응용 프로그램을 배포하는 방법에 대한 모든 제안에 열려 있습니다.

감사합니다.

답변

2

로컬로 SQL Express를 사용하는 경우 데이터베이스를 연결 문자열의 일부로 연결할 수 있지만 복제에 도움이 될지 모르겠습니다. 데이터베이스를 로컬에 연결하고 데이터베이스의 버전 번호가 들어있는 리비전 테이블을 넣을 수도 있습니다. 그런 다음 데이터베이스 개정판을 확인하고 SQL 스크립트를 실행하여 데이터베이스를 최신 개정판으로 업그레이드하도록 응용 프로그램을 작성할 수 있습니다. 이것이 DotNetNuke가 롤링 업그레이드를 수행하는 방법입니다. 각 릴리스에 대해 버전 별 .SQL 파일을 유지 관리하고 클릭 한번 배포 파일에 포함시킵니다. 이렇게하면 누락 된 개정판을 롤 포워드하여 데이터베이스의 최종 개정판으로 이동할 수 있습니다. 가 적용되는

Check the database version in Revision Table 
    If less than current version 
     Load SQL file list from path 
      Foreach file with revision > current Revision 
       Execute TSQL Scripts 

각 TSQL 스크립트가 데이터베이스에 개정 번호를 업데이트합니다


는 사이비 코드에서는 뭔가처럼 될 것입니다. 이 작업을 수행하려면 상당한 시간이 필요하지만 롤링 중이면 문제를 해결하는 데 효과적입니다.

+0

나는 완전히 이해하고 있는지 확신 할 수 없다. 나는 병합 담당자가 모든 DB 변경 사항을 전파 할 것이라는 인상 아래에있었습니다. 당신은 다른 것을 천천히 듣고 있습니까? –

+0

그런 식으로 설정하면 확실히 그렇게 할 수는 있지만 설치를 수행 한 다음 복제를 실행하여 테이블을 채우고 모든 개체를 완전히 복제하지 않고 sprocs의 문제점을 데이터베이스 및 SQL 파일의 증분 버전을 사용하여 개정판에서 개정판으로의 변경 사항을 배치하여 해결할 수 있습니다. 반드시 올바른 해결책은 아니지만 어떻게 문제를 해결할 수 있는지에 대한 아이디어입니다. –

관련 문제