4

J'utilise VSTS Database Edition GDR Version 9.1.31024.02Comment personnaliser l'instruction CREATE DATABASE dans VSTS DB Edition Deploy?

J'ai un projet où nous allons créer plusieurs bases de données avec un schéma identique, à la volée, lorsque des clients sont ajoutés au système. C'est une DB par client. Je pensais que je devrais être capable d'utiliser le script de déploiement pour le faire. Malheureusement, je reçois toujours les noms de fichiers complets spécifiés dans l'instruction CREATE DATABASE. Par exemple:

CREATE DATABASE [$(DatabaseName)] 
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)targetDBName.mdf') 
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)targetDBName_log.ldf') 
GO 

Je m'y attendais quelque chose de plus comme celui-ci

CREATE DATABASE [$(DatabaseName)] 
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)$(DatabaseName).mdf') 
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)$(DatabaseName)_log.ldf') 
GO 

Ou encore

CREATE DATABASE [$(DatabaseName)] 

Je ne vais pas courir ce sur une base continue afin J'aimerais le rendre aussi simple que possible, pour le prochain. Il y a un tas d'options pour le déploiement dans les propriétés du projet, mais je ne peux pas obtenir ce travail comme je le voudrais.

Quelqu'un sait comment configurer cela?

Répondre

0

Hmm, eh bien, il semble que la meilleure réponse à ce jour (compte tenu de la réponse sur whelming) est d'éditer le fichier après coup ... Toujours à la recherche

1

Nous le faisons en utilisant une base de données de modèle, que nous retour en place, copiez et restaurez lorsque de nouveaux clients sont mis en ligne. Nous n'effectuons aucune création de schéma avec des scripts mais avec une base de données vide et active.

4

Mieux vaut tard que jamais, je sais comment obtenir les noms de fichiers $(DefaultDataPath)$(DatabaseName) de votre deuxième exemple. Le code SQL que vous affichez dans votre premier extrait de code suggère que vous n'avez pas de scripts pour créer les fichiers de base de données dans votre projet VSTS: DB, peut-être en les excluant délibérément des comparaisons de schéma que vous avez effectuées. Je l'ai trouvé un peu contre-intuitif, mais la solution est de laisser VSTS: DB script les MDF et LDF dans votre environnement de développement, puis modifier ces scripts pour utiliser les variables SQLCMD.

Dans votre projet de base de données, accédez au dossier Objets de schéma> Objets de niveau base de données> Stockage> Fichiers. Là-dedans, ajoutez ces deux fichiers:

Database.sqlfile.sql

ALTER DATABASE [$(DatabaseName)] 
ADD FILE (NAME = [$(DatabaseName)], 
    FILENAME = '$(DefaultDataPath)$(DatabaseName).mdf', 
    SIZE = 2304 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB) 
    TO FILEGROUP [PRIMARY]; 

Database_log.sqlfile.sql

ALTER DATABASE [$(DatabaseName)] 
    ADD LOG FILE (NAME = [$(DatabaseName)_log], 
    FILENAME = '$(DefaultDataPath)$(DatabaseName)_log.ldf', 
    SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %); 

Le script de création de base de données complète qui VSTS: DB, ou d'ailleurs VSDBCMD.exe, génère maintenant utiliser les variables SQLCMD pour nommer les fichiers MDF et LDF, vous permettant de les spécifier sur la ligne de commande, ou dans MSBuild.

Questions connexes