2009-12-30 18 views
6

Y at-il un bon tutoriel pour la création d'une base de données en utilisant msbuild?en utilisant msbuild pour créer une base de données sql

jean paul boodhoo le fait en utilisant nant dans this. 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 comme ligne de commande ce ..

c:\> build builddb 

J'ai installé le pack d'extension MSBuild mais je n'y arrivais ne pas trouver où entrer dans la chaîne de connexion pour se connecter à la base de données

Merci

RESOLU

<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 à la commande vs promptrun

msbuild db.targets/t: QueryDb

la commande qui s'exécute est cette "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

Répondre

3

Si vous êtes à l'aise avec l'approche suivie dans ce poste, vous pouvez il suffit aussi de suivre MSBuild. Par exemple, créez le fichier constants.proj (vous pouvez le nommer comme vous voulez) et db.targets (nommez-le comme vous voulez). Et 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> 

puis à db.targets vous simplement construire la ligne de commande avec ces propriétés et d'utiliser la tâche Exec pour l'exécuter, comme le suivant.

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> 
3

le pack d'extension MSBuild contient des tâches (à savoir MSBuild.ExtensionPack.Sql2005 et MSBuild.ExtensionPack.Sql2008) pour manipuler les 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"/> 
Questions connexes