2009-04-24 3 views
0

개발자 워크 스테이션과비주얼 스튜디오 2008 2008

안녕하세요 사람들 비주얼 스튜디오 팀 시스템 데이터베이스 에디션을 사용하여 다른 배포 환경 사이의 관리 서버 로그인 및 데이터베이스 사용자,

이 에서 upgarding 보면 '비주얼 스튜디오 팀 시스템 데이터베이스 에디션 데이터베이스 에디션 ' to Visual Studio Team System 2008 Database Edition GDR R2.

vstsdb의 매개 변수는 일반적으로 약하며 DB 프로젝트를 샌드 박스 원칙에 따라 로컬로 배포 할 때 응용 프로그램 데이터베이스에서 작업 할 수 있도록 각 개발자 워크 스테이션에 로컬로 배포 할 수있는 해결 방법을 적용해야했습니다. 기본적으로, 처음에는 vstsdb import 2005 wizard poject 유형을 사용하여 응용 프로그램 데이터베이스를 가져 왔을 때 간단히 생성 된 사용자 스크립트를 제거하고 프로젝트 변수에 의해 구동 된 로그인 사전 배포 스크립트를 추가해야했습니다. SQLCMD 변수 만

그것은의 로그인 및 데이터베이스 사용자 모두 처리

다음 그들을 연결 ...이 특별한 스크립트 위치 :(내에서 사용할 수 있습니다.

이런 식으로 뭔가를 보았다 ..

BEGIN TRY 
    BEGIN TRANSACTION 

     IF UPPER('$(DeployToDev)') = 'FALSE' 
     BEGIN 
      -- SMRBtsService 
      IF EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'$(DomainAppUserAccount)') 
      DROP LOGIN [$(DomainAppUserAccount)] 
      CREATE LOGIN [$(DomainAppUserAccount)] FROM WINDOWS 

      IF EXISTS (SELECT * FROM sys.database_principals WHERE NAME = 'SMRBtsService') 
      DROP USER [SMRBtsService] 
      CREATE USER [SMRBTSService] FOR LOGIN [$(DomainAppUserAccount)] WITH DEFAULT_SCHEMA=[dbo] 

      -- WebUser 
      IF EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'$(DomainWebUserAccount)') 
      DROP LOGIN [$(DomainWebUserAccount)] 
      CREATE LOGIN [$(DomainWebUserAccount)] FROM WINDOWS 

      IF EXISTS (SELECT * FROM sys.database_principals WHERE NAME = 'WebUser') 
      DROP USER [WebUser] 
      CREATE USER [WebUser] FOR LOGIN [$(DomainWebUserAccount)] WITH DEFAULT_SCHEMA=[dbo] 


     END 
     ELSE IF UPPER('$(DeployToDev)') = 'TRUE' 
     BEGIN 
      -- BTSSERVICE 
      IF EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'$(COMPUTERNAME)\BTSSERVICE') 
      DROP LOGIN [$(COMPUTERNAME)\BTSSERVICE] 
      CREATE LOGIN [$(COMPUTERNAME)\BTSSERVICE] FROM WINDOWS 

      IF EXISTS (SELECT * FROM sys.database_principals WHERE NAME = 'SMRBtsService') 
      DROP USER [SMRBtsService] 
      CREATE USER [SMRBTSService] FOR LOGIN [$(COMPUTERNAME)\BTSSERVICE] WITH DEFAULT_SCHEMA=[dbo] 

      -- WebUser 
      IF EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'$(COMPUTERNAME)\WebUser') 
      DROP LOGIN [$(COMPUTERNAME)\WebUser] 
      CREATE LOGIN [$(COMPUTERNAME)\WebUser] FROM WINDOWS 

      IF EXISTS (SELECT * FROM sys.database_principals WHERE NAME = 'WebUser') 
      DROP USER [WebUser] 
      CREATE USER [WebUser] FOR LOGIN [$(COMPUTERNAME)\WebUser] WITH DEFAULT_SCHEMA=[dbo] 
     END 

    COMMIT TRANSACTION 
END TRY 
BEGIN CATCH 

    IF (XACT_STATE()) <> 0 
     ROLLBACK TRANSACTION 

    DECLARE @ErrorMessage NVARCHAR(4000), 
     @ErrorNumber INT, 
     @ErrorSeverity INT, 
     @ErrorState INT, 
     @ErrorLine INT, 
     @ErrorProcedure NVARCHAR(200) ; 


    SELECT @ErrorNumber = ERROR_NUMBER(), @ErrorSeverity = 20, 
      @ErrorState = ERROR_STATE(), @ErrorLine = ERROR_LINE(), 
      @ErrorProcedure = ISNULL(ERROR_PROCEDURE(), '-') ; 


    SELECT @ErrorMessage = N'Error %d, Level %d, State %d, Procedure %s, Line %d, ' + 
      'Message: ' + ERROR_MESSAGE() ; 

    RAISERROR (@ErrorMessage, @ErrorSeverity, 1, @ErrorNumber, -- parameter: original error number. 
     @ErrorSeverity, -- parameter: 20, we want to stop the entire deploy process. 
     @ErrorState, -- parameter: original error state. 
     @ErrorProcedure, -- parameter: original error procedure name. 
     @ErrorLine-- parameter: original error line number. 
      ) ; 


END CATCH 

질문 :

GDR 버전을 사용하여 이러한 종류의 기능을 구현하는 방법은 참조 계층 구조에서 프로젝트를 연결하는 개념을 지원합니다. 그리고 두 가지 프로젝트 유형 인 데이터베이스와 서버 프로젝트가 있습니다. 그러나 dev 모드의 모든 컴퓨터에 배포 할 수있는 동일한 동적 기능을 얻기 위해 이와 같은 스크립트를 만들어야합니다.

서버 프로젝트 유형을 작성하면 데이터베이스 프로젝트 유형의 모든 오브젝트 (스크립트) 외에 서버 오브젝트가 추가됩니다.

복합 프로젝트 구조에 관한 문서 ... 그러나 여전히 확실한 해결책은 없습니다.

+0

자세한 내용은 여기를 참조하십시오. http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/45f1ff05-18b8-4d94-bbc3-c92894e636db –

답변

1

VSDBCMD, 스키마 비교 및 ​​MSBuild 배포로 인해 사용자와 로그인 및 다른 서버를 대상으로하는 것과 관련하여 상당한 문제가 발생했습니다.

강하게 RC2를 설치하는 것이 좋습니다!

설치 지침을 따르십시오 (매우 중요합니다)!

희망이 도움이 ... 알려주세요!

+0

의견을 보내 주셔서 감사합니다. GDR에서이 문제에 대한 답변을 찾을 수 없습니다. 다행히 MS는 제품이 여러 가지 측면에서 실패한 팀 작업을 위해이 주소 지정을 필요로한다는 것을 알게되기를 바랍니다. 제품이 그런 방식으로 작동하는 방식을 이해하는 것은 단순함을 손상시키고 다른 사람들을 소외시킵니다. –