개발자 워크 스테이션과비주얼 스튜디오 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 모드의 모든 컴퓨터에 배포 할 수있는 동일한 동적 기능을 얻기 위해 이와 같은 스크립트를 만들어야합니다.
서버 프로젝트 유형을 작성하면 데이터베이스 프로젝트 유형의 모든 오브젝트 (스크립트) 외에 서버 오브젝트가 추가됩니다.
복합 프로젝트 구조에 관한 문서 ... 그러나 여전히 확실한 해결책은 없습니다.
자세한 내용은 여기를 참조하십시오. http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/45f1ff05-18b8-4d94-bbc3-c92894e636db –