1

SQL Server 2012가 설치된 Windows 서버 2012에서 MSBuild를 사용하여 dbdeploy 구성 요소를 실행하려고합니다. 나는 다음과 같은 오류가 발생하고있는 MSBuild에서 스크립트를 실행에SQL Server 2012가 설치된 Windows Server 2012에서 msbuild를 사용하여 dbdeploy 구성 요소를 실행할 수 없습니다.

: 위의 스크립트 내 데브 상자에 또한 SQL 서버 2008 R2는 상자 (윈도우 서버 2008 R2)에 벌금을하고있다

"E:\TestDeployment\Test.proj" (UpgradeDatabase target) (1) ->(dbDeploy target) -> 
    E:\TestDeployment\Test.proj(212,5): error : Unexpected System.IO.FileNotFoundException 
error executing SQL command: -- BEGINNING TRANSACTION\r 
E:\TestDeployment\Test.proj(212,5): error : PRINT 'Beginning transaction'\r 
E:\TestDeployment\Test.proj(212,5): error : BEGIN TRANSACTION \r 
E:\TestDeployment\Test.proj(212,5): error : GO\r 
E:\TestDeployment\Test.proj(212,5): error : \r 
E:\TestDeployment\Test.proj(212,5): error : -- Drop Table ChangeLog\r 
E:\TestDeployment\Test.proj(212,5): error : Print 'Checking for Table ChangeLog'\r 
E:\TestDeployment\Test.proj(212,5): error : IF (NOT EXISTS(SELECT * FROM sys.objects WHER 
E [object_id] = OBJECT_ID(N'[dbo].ChangeLog') AND [type]='U'))\r 
E:\TestDeployment\Test.proj(212,5): error : BEGIN\r 
E:\TestDeployment\Test.proj(212,5): error :   CREATE TABLE dbo.ChangeLog \r 
E:\TestDeployment\Test.proj(212,5): error :   (\r 
E:\TestDeployment\Test.proj(212,5): error :     change_number INTEGER NOT NUL 
,\r 
E:\TestDeployment\Test.proj(212,5): error :     delta_set VARCHAR(10) NOT NUL 
,\r 
E:\TestDeployment\Test.proj(212,5): error :     start_dt DATETIME NOT NULL,\r 
E:\TestDeployment\Test.proj(212,5): error :     complete_dt DATETIME NULL,\r 
E:\TestDeployment\Test.proj(212,5): error :     applied_by VARCHAR(100) NOT N 
LL,\r 
E:\TestDeployment\Test.proj(212,5): error :     description VARCHAR(500) NOT 
ULL\r 
E:\TestDeployment\Test.proj(212,5): error :  )\r 
E:\TestDeployment\Test.proj(212,5): error : \r 
E:\TestDeployment\Test.proj(212,5): error :   IF @@ERROR<>0 OR @@TRANCOUNT=0 BEGIN 
IF @@TRANCOUNT>0 ROLLBACK SET NOEXEC ON END\r 
E:\TestDeployment\Test.proj(212,5): error :     \r 
E:\TestDeployment\Test.proj(212,5): error :   ALTER TABLE ChangeLog ADD CONSTRAINT 
PK_ChangeLog PRIMARY KEY (change_number, delta_set)\r 
E:\TestDeployment\Test.proj(212,5): error :   IF @@ERROR<>0 OR @@TRANCOUNT=0 BEGIN 
IF @@TRANCOUNT>0 ROLLBACK SET NOEXEC ON END\r 
E:\TestDeployment\Test.proj(212,5): error : END\r 
E:\TestDeployment\Test.proj(212,5): error : GO\r 
E:\TestDeployment\Test.proj(212,5): error : IF @@ERROR<>0 OR @@TRANCOUNT=0 BEGIN IF @@TRA 
NCOUNT>0 ROLLBACK SET NOEXEC ON END\r 
E:\TestDeployment\Test.proj(212,5): error : GO\r 
E:\TestDeployment\Test.proj(212,5): error : \r 
E:\TestDeployment\Test.proj(212,5): error : UPDATE dbo.ChangeLog SET complete_dt = getdat 
e() WHERE complete_dt IS NULL\r 
E:\TestDeployment\Test.proj(212,5): error : GO\r 
E:\TestDeployment\Test.proj(212,5): error : \r 
E:\TestDeployment\Test.proj(212,5): error : IF @@ERROR<>0 OR @@TRANCOUNT=0 BEGIN IF @@TRA 
NCOUNT>0 ROLLBACK SET NOEXEC ON END\r 
E:\TestDeployment\Test.proj(212,5): error : GO\r 
E:\TestDeployment\Test.proj(212,5): error : \r 
E:\TestDeployment\Test.proj(212,5): error : -- COMMITTING TRANSACTION\r 
E:\TestDeployment\Test.proj(212,5): error : IF @@TRANCOUNT>0\r 
E:\TestDeployment\Test.proj(212,5): error : BEGIN\r 
E:\TestDeployment\Test.proj(212,5): error :   PRINT 'Committing transaction'\r 
E:\TestDeployment\Test.proj(212,5): error :   COMMIT TRANSACTION \r 
E:\TestDeployment\Test.proj(212,5): error : END\r 
E:\TestDeployment\Test.proj(212,5): error : GO\r 
E:\TestDeployment\Test.proj(212,5): error : \r 
E:\TestDeployment\Test.proj(212,5): error : SET NOEXEC OFF\r 
E:\TestDeployment\Test.proj(212,5): error : GO\r 
E:\TestDeployment\Test.proj(212,5): error : 
E:\TestDeployment\Test.proj(212,5): error : Could not load file or assembly 'Microsoft.SqlServer.BatchParser, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified. 

설치. SQL Server 2012가 설치된 새 상자에서 테스트를 시도하면 문제가 시작되었습니다.

누구든지이 문제를 해결할 수 있습니까?

답변

0

이 문제를 더 자세히 분석 한 결과 dbDeploy 구성 요소를 업데이트해야한다는 것을 알았습니다. URL : http://dbdeploynet2.codeplex.com/에있는 DbDeploy.Net 2로 기존 프로젝트를 업데이트 한 다음 언급 된 예제를 기반으로 기존 msbuild 스크립트를 변경하고 나에게 잘 작동하기 시작했습니다. 이 구현 후에 직면 한 유일한 문제는 DedicatedAdminConnection = "True"를 사용하면 SQL 연결과 관련된 하나의 오류가 발생했습니다. 따라서 나는 DedicatedAdminConnection = "True"를 msbuild 스크립트에서 사용하지 않기를 권장합니다.

2

작동하는 시스템과 그렇지 않은 시스템 사이의 환경 변수를 점검하십시오. 여기서는 명령 프롬프트를 열고 MSBuild를 실행한다고 가정합니다.

  • C :

    나는 SQL 서버 2012 내 컴퓨터에 설치에 BatchParser.DLL을 발견했다 \ 프로그램 파일 (86) 마이크로 소프트 \ SQL 서버 \ 110 \ DTS \ BINN

  • C : \ \ Program 파일 (x 86) \ Microsoft SQL Server를 \ 클라이언트 SDK \ ODBC \ 110 개 \ 도구 BINN

그래서를 : \ 프로그램 파일 (x 86) \ Microsoft SQL Server를 \ 110 개 \ 도구 BINN

  • C는 \ 오류의 원인은 환경 변수가 누락되었다는 것입니다. var 나는 그것들 중 하나를 가리킬 것이다.

    나는 알 수있는 한, 그들은 내 PATH 변수에만 있습니다.

    해당 위치에서이 DDL을 찾을 수없는 경우이 S.O.에서 설명한대로 SMO를 설치해야합니다. 질문 :

    편집 :
    또한 C가있는 경우입니다 확인하는 마지막 일 : \의 Program Files (x86) \ Microsoft SQL Server를 \를 100 폴더에 DTS \ Binn 및/또는 Tools \ Binn 폴더가 있습니다. 내 생각은 특히 SMO의 2008 년 버전, dev에 상자가 있지만 SQL 2012 만 가지고 새로운 상자에없는 뭔가를 찾고 있는지

    Could not load file or assembly 'Microsoft.SqlServer.BatchParser, Version=10.0.0.0

    되는 오류를 기반으로한다는 것입니다. 옵션은 다음과 같습니다

    • 시도 단순히 새로운 SQL 2012 서버로 dev에 상자에서 "batchparser.dll"를 복사하고 C에 배치 : \의 Program Files (x86) \ Microsoft SQL Server를 \ (110) \ Tools \ Binn 폴더에 있습니다.
    • 새 SQL Server 2012 서버에 SMO를 포함하는 SQL Server 2008 R2 Feature Pack을 다운로드하여 설치하십시오."설치 지침"섹션을 확장하고 "Microsoft® SQL Server® 2008 R2 공유 관리 개체"로 이동하여 적절한 MSI를 가져옵니다.
  • +0

    자세한 내용은 srutzky에게 감사드립니다. 위의 내용을 확인한 결과 위에서 언급 한 구성 요소가 SQL Server 2012가 설치된 Windows 서버 2012에 있음을 확인했습니다. –

    +0

    @ santoshkumarpatro : 알았어, 네 대답을 봤어. 방금 세부 정보로 업데이트했습니다. 이 작업을 위해 추가 프로젝트가 필요하지 않은 것이 좋습니다. –