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

Était-ce utile?

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"/>
scroll top