2009-12-30 24 views
6

¿Hay un buen tutorial para Crear una base de datos usando msbuild?usando msbuild para crear una base de datos sql

jean paul boodhoo lo hace usando nant en this mensaje. que establece las propiedades para ser utilizados en un archivo de Nant acumulación

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

continuación, puede crear la base de datos utilizando la línea de comandos como esto ..

c:\> build builddb 

me instalado el paquete de MSBuild Extension pero podía no encontrar dónde ingresar la cadena de conexión para conectarse a la base de datos

Gracias

RESUELVE

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

y Constants.proj se parece a esto

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

entonces en el símbolo del sistema de ejecución vs

msbuild db.targets/t: QueryDb

el comando que se ejecuta es este "C: \ Archivos de programa \ Microsoft SQL Server \ 90 \ Tools \ Binn \ osql.exe" -U someuser -P somepassword -d NorthwindTest -S (local) \ SQLEXPRESS -Q "SELECT * FROM UserProfile"

Gracias Sayed

Respuesta

3

Si se siente cómodo con el enfoque seguido en ese puesto, entonces puede simplemente sigue eso desde MSBuild también. Por ejemplo, crea el archivo constants.proj (puedes ponerle el nombre que quieras) y db.targets (también llámalo como quieras). Y luego los contendría algo como:

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> 

y luego en db.targets usted acaba de construir la línea de comandos con esas propiedades y utilizar la tarea Exec para ejecutarlo, como el seguimiento.

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

el paquete de MSBuild Extension contiene tareas (es decir, MSBuild.ExtensionPack.Sql2005 y MSBuild.ExtensionPack.Sql2008) para manipular bases de datos SQL y el siguiente ejemplo:

<!-- 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"/> 
Cuestiones relacionadas