connexions serveur Gestion et les utilisateurs de la base de données entre les développeurs postes de travail et d'autres environnements de déploiement à l'aide Visual Studio Team System Database EditionVisual Studio 2008 Database Edition
Bonjour les gens,
Regarder upgarding de « Visual Studio Team System 2008 Edition de base de données ' à Visual Studio Team System 2008 Database Edition GDR R2. Le paramétrage dans vstsdb est généralement faible et nous avons dû appliquer des solutions de contournement pour que les projets DB se déploient localement sur chaque poste de travail développeur pour qu'ils fonctionnent sur la base de données d'application lorsqu'ils le déployaient localement conformément au principe sandbox. Fondamentalement, au début, quand j'ai importé la base de données d'application en utilisant le type poject de l'assistant vstsdb import 2005, j'ai simplement supprimé les scripts utilisateur générés et ajouté un script de pré-déploiement de logins piloté par des variables de projet, le les variables SQLCMD ne peuvent être utilisées dans cet endroit spécial script :(...
Il portait à la fois les connexions et les utilisateurs de la base de données, puis les reliée.
ressemble à ça ..
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
Question:
Comment pourrait-on réaliser ce genre de fonctionnalité en utilisant l'édition GDR, je vois qu'il supporte le concept de liaison de projets dans une hiérarchie de références. Et vous avez deux types de projet, un projet de base de données et un serveur. Mais encore faut-il créer un script comme celui-ci pour obtenir la même capacité dynamique à déployer sur n'importe quelle machine en mode dev?
La création d'un type de projet serveur ajoute simplement des objets serveur en plus de tous les objets (scripts) du type de projet Base de données.
La documentation parle de structures de projet composites ... Mais je ne vois toujours pas de solution évidente.
Plus d'informations ici; http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/45f1ff05-18b8-4d94-bbc3-c92894e636db –