en utilisant msbuild pour créer une base de données SQL
-
22-09-2019 - |
Question
Y at-il un bon tutoriel pour la création d'une base de données en utilisant msbuild ?
jean paul Boodhoo fait à l'aide de Nant dans ce poste . il définit les propriétés à utiliser dans un fichier de construction nante
<properties>
<property name="sqlToolsFolder" value="C:\Program Files\Microsoft SQL Server\90\Tools\Binn"/>
<property name="osql.ConnectionString" value="-E"/>
<property name="initial.catalog" value="Northwind"/>
<property name="config.ConnectionString" value="data source=(local);Integrated Security=SSPI;Initial Catalog=${initial.catalog}"/>
<property name="database.path" value="C:\root\development\databases" />
<property name="osql.exe" value="${sqlToolsFolder}\osql.exe" />
</properties>
peut alors créer la base de données en utilisant la ligne de commande comme ça ..
c:\> build builddb
J'ai installé le pack d'extension MSBuild, mais je ne pouvais pas trouver où entrer dans la chaîne de connexion pour se connecter à la base de données
Merci
RÉSOLU
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="constants.proj"/>
<Target Name="QueryDb">
<PropertyGroup>
<_Command>-Q "SELECT * FROM Users"</_Command>
<_Command2>-i test.sql</_Command2>
</PropertyGroup>
<Exec Command="$(sqlcmd) $(_Command)" /><!---->
</Target>
</Project>
et Constants.proj ressemble à ceci
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<sqlToolsFolder>C:\Program Files\Microsoft SQL Server\90\Tools\Binn</sqlToolsFolder>
<initialCatalog>NorthwindTest</initialCatalog>
<serverInstance>(local)\SQLEXPRESS</serverInstance>
<configConnectionString>data source=$(serverInstance);Integrated Security=SSPI;Initial Catalog=$(initialCatalog)</configConnectionString>
<osqlExe>"$(sqlToolsFolder)\osql.exe"</osqlExe>
<sqlcmd>$(osqlExe) -U someuser -P somepassword -d $(initialCatalog) -S (local)\SQLEXPRESS</sqlcmd>
<!--<sqlcmd>$(osqlExe) -E -d $(initialCatalog) -S (local)\SQLEXPRESS</sqlcmd>-->
</PropertyGroup>
</Project>
puis au vs promptrun de commande
msbuild db.targets / t: QueryDb
la commande qui fonctionne est la suivante "C: \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ Binn \ osql.exe" -U someuser -P unMotdepasse -d NorthwindTest -S (local) \ SQLEXPRESS -Q "SELECT * FROM UserProfile"
Merci Sayed
La solution
Si vous êtes à l'aise avec l'approche suivie dans ce poste, vous pouvez simplement suivre ce MSBuild ainsi. Par exemple créer le fichier constants.proj (vous pouvez nommer ce que vous voulez) et db.targets (nom aussi ce que vous voulez). Et puis ceux qui contiendrait quelque chose comme:
constants.proj
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<sqlToolsFolder>C:\Program Files\Microsoft SQL Server\90\Tools\Binn</sqlToolsFolder>
<osqlConnectionString>-E</osqlConnectionString>
<initialCatalog>Northwind</initialCatalog>
<configConnectionString>data source=(local);Integrated Security=SSPI;Initial Catalog=$(initialCatalog)</configConnectionString>
<databasePath>C:\root\development\databases</databasePath>
<osqlExe>$(sqlToolsFolder)\osql.exe</osqlExe>
</PropertyGroup>
</Project>
Et puis à db.targets vous simplement construire la ligne de commande avec les propriétés et utilisez la balise la tâche Exec pour l'exécuter, comme ce qui suit.
db.targets
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="constants.targets"/>
<Target Name="CreateDb">
<PropertyGroup>
<_Command> ... FILL IN HERE ... </_Command>
</PropertyGroup>
<Exec Command="$(_Command)" />
</Target>
</Project>
Autres conseils
Le pack d'extension MSBuild contient des tâches (à savoir MSBuild.ExtensionPack.Sql2005
et MSBuild.ExtensionPack.Sql2008
) pour manipuler des bases de données SQL et l'exemple suivant:
<!-- Create a database -->
<MSBuild.ExtensionPack.Sql2005.Database TaskAction="Create" DatabaseItem="ADatabase2" MachineName="MyServer\SQL2005Instance"/>
<!-- Create the database again, using Force to delete the existing database -->
<MSBuild.ExtensionPack.Sql2005.Database TaskAction="Create" DatabaseItem="ADatabase2" Force="true" Collation="Latin1_General_CI_AI" MachineName="MyServer\SQL2005Instance"/>