のVisual Studio Team Systemのデータベース・エディションにのVisual Studio 2008のデータベース版
こんにちは人、 「のVisual Studio Team Systemの2008年からupgardingを見る
を使用する開発者のワークステーションと他のデプロイメント環境間のサーバーのログインおよびデータベースユーザーを管理しますデータベース版 ' 〜 Visual Studio Team System 2008 Database Edition GDR R2です。
vstsdbのパラメタリゼーションは一般的に脆弱で、DBプロジェクトを各開発者ワークステーションにローカルに展開して、サンドボックスの原則に準拠してローカルに展開したときにアプリケーションデータベースで作業するための回避策を適用する必要がありました。 基本的には、始めに、vstsdb import 2005ウィザードの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版を使用してこのような機能を実現するには、参照階層内でプロジェクトをリンクするという概念がサポートされています。また、2つのプロジェクトタイプ、データベースプロジェクトとサーバープロジェクトがあります。しかし、それでもdevモードで任意のマシンにデプロイするのと同じダイナミックな能力を達成するには、このようなスクリプトを作成する必要がありますか?
サーバープロジェクトタイプを作成すると、データベースプロジェクトタイプのすべてのオブジェクト(スクリプト)に加えてサーバーオブジェクトが追加されます。
複合プロジェクト構造についてのドキュメント...しかし、私には明らかな解決策はありません。
詳細情報はここにあります。 http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/45f1ff05-18b8-4d94-bbc3-c92894e636db –