2017-03-15 9 views
0

오랜 시간 독자, 처음으로 asker!DACPAC에 포함 된 SQL 게시 스크립트가 아닌

저는 데이터베이스 코드에 대해 DACPAC을 배포하는 데있어 새로운 "DevOps"세계에서 한 번의 클릭만으로 완료해야하는 문제에 대해 두뇌를 집중 시켰습니다. 이것은 MSI 작성 내에서 가능해야하지만, 나는 그 기능을 추가하는 것을 얼굴이 파란다. 그래서 나는 그 일을 제어 할 수 있기 때문에 DACPAC에 유지할 것이다.

SQL이 아닌 게시 ​​/ 사전 배포 스크립트를 실행하는 방법을 알고있는 사람은 누구입니까? PowerShell 이상적이지만 처음에는 폴더 구조를 만들고 일부 파일을 이동해야합니다.

xp_cmdshell은 보안상의 이유로 문제가되지 않습니다.

나는 배치 후 자동으로 powershell을 실행 한 다음 SQL Server 작업을 작성하여 자동 삭제할 것을 고려했지만 너무 로비가 깔끔해 보인다.

모든 조언을 주시면 감사하겠습니다.

EDIT : SQLCMD 모드 지원

:! [지령

예컨대

:! MKDIR C : \ 테스트

불행하게도 비주얼 스튜디오 그래서 다시 드로잉 보드에 SQLCMD의 수준을 지원하지 않습니다.

답변

0

나는 당신이 dacpac을 가지고있는 대신에 우리가 일반적으로하는 일을 dacpac을 배치하고 x를 수행하는 powershell 스크립트를 사용하는 대신에 약간 잘못된 방법으로보고있을 것이라고 생각한다.

일반적으로 배포 과정에서 우리가 비교하기 전에 약간의 SQL을 실행하려면 사전 배포 전 스크립트를 포함 할 필요가있다 그래서 프로세스가 PowerShell 스크립트를하는 것입니다됩니까입니다 :

  • 미리 미리 배포 스크립트에 대한 확인과
  • 당신이 다음 dacpac를 배포 스크립트에서 다른 일을 할 것입니다 귀하의 경우에는 DacServices .NET 라이브러리

을 sqlpackage 전화 또는 사용하여 어느 dacpac를 배포합니다 실행합니다.

어느 쪽이든 당신은 항상 당신이 의미가

희망 (암호 또는 환경 특정 일을 그들은 매개 변수 등이 될 것입니다 경우) 사용하는 매개 변수를 제어 소스 원하는대로 스크립트가 배포를 수행 할 것입니다, 당신이 언급 한 점은 한 번의 클릭으로 수행해야한다는 것입니다 - 이것은 DBA를 의미하거나 사람이 개발 운영 :

에드

+0

어이가 답장을 보내 주셔서 감사합니다 에드되지 후 배포 할 dacpac를 클릭 한 경우 예, 전적으로 동의합니다. 전 PowerShell을 사용하는 사람입니다. 그래서 이상적인 방법은 임시 스크립트를 추가로 배포하는 것입니다.불행하게도 저는 많은 대형 컨설턴트가 과다 지불 한 컨설턴트가 주위에 춤을 추는 단어를 던져 버렸고, 허용하지 않는 경로를 따라갔습니다 (MSI에서이를 포장하고있는) 매우 큰 조직에서 일합니다. 필자는 2 주전에 제 통지서를 넘겨주었습니다. 그 이유는 저를 초조하게 만들었 기 때문에, 저는 이제 무엇보다도 요점을 증명할 수있는 해결책을 제시하려고합니다. – Ollie

+0

Visual Studio에서 내 수정 사항이 작동하지 않으면 SQLCMD 모드에 대한 설명서를 찾았으며 다음 명령을 사용하여 실행할 수 있습니다 !! !! mkdir C : \ Test 그러나 Visual Studio는 모든 SQLCMD 기능을 지원하지 않습니다. 미래! – Ollie

+0

msi가 끝난 후에 실행할 작업을 추가 할 수 없습니까? MSI에는 MoveFileAction이 있습니다. 진짜 못생긴/해키를 얻을 수 있다면 빌드 실행기, 배포 스크립트가 실행될 때 호출되는 sqlpackage와 관련된 특정 위치에 놓여 야하는 .net dll을 작성할 수 있습니다. 그러면 원하는대로 할 수 있습니다. 배포 전, 도중 또는 후에 배포 할 수 있습니다. 솔직하게 말하면, 몇 주 후에 떠나면 각기 다른 접근법과 이점을 문서화하고 다음 사람이 논쟁/외침 할 수 있도록 남겨 두십시오 :) 어쨌든 그들은 그것을 바꿀 것입니다. –