是否有使用 msbuild 创建数据库的好教程?
jean paul boodhoo在this帖子中使用了nant。 他设置要在nant构建文件中使用的属性
<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>
然后可以使用命令行创建数据库,就像这样..
c:\> build builddb
我安装了MSBuild扩展包但我找不到输入连接字符串的位置来连接数据库
由于
分辨
<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>
和Constants.proj看起来像这样
<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>
然后在vs命令提示符下运行
msbuild db.targets / t:QueryDb
运行的命令就是这个 “C:\ Program Files \ Microsoft SQL Server \ 90 \ Tools \ Binn \ osql.exe”-U someuser -P somepassword -d NorthwindTest -S(local)\ SQLEXPRESS -Q“SELECT * FROM UserProfile”
谢谢 Sayed的
答案 0 :(得分:3)
MSBuild扩展包包含操作SQL数据库的任务(即MSBuild.ExtensionPack.Sql2005
和MSBuild.ExtensionPack.Sql2008
)以及以下示例:
<!-- 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"/>
答案 1 :(得分:3)
如果您对该帖子中所遵循的方法感到满意,那么您也可以从MSBuild中进行操作。例如,创建文件constants.proj(您可以随意命名)和db.targets(也可以根据需要命名)。然后这些将包含类似的内容:
<强> 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>
然后在db.targets中,您只需使用这些属性构建命令行,并使用Exec任务执行它,如下所示。
<强> 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>