использование msbuild для создания базы данных sql

StackOverflow https://stackoverflow.com/questions/1981998

  •  22-09-2019
  •  | 
  •  

Вопрос

Есть ли хороший учебник по созданию базы данных с использованием в MSBuild?

жан Поль Бодху делает это, используя 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:База данных запросов

команда , которая выполняется, выглядит следующим образом "C:\Program Файлы \Microsoft SQL Server\90 ools\Binn\osql.exe" -U someuser -P somepassword -d NorthwindTest -S (локальный)\SQLEXPRESS -Q "ВЫБРАТЬ * ИЗ профиля пользователя"

Спасибо Сайед

Это было полезно?

Решение

Если вас устраивает подход, описанный в этом посте, то вы можете просто следовать ему и из MSBuild.Например, создайте файл constants.proj (вы можете назвать его как угодно) и db.targets (также назовите его как угодно).И тогда они содержали бы что-то вроде:

константы.проект

<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 вы бы просто создали командную строку с этими свойствами и использовали Исполнительный поставьте задачу выполнить его, как показано ниже.

бд.целевые показатели

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

Другие советы

Пакет расширения MSBuild содержит задачи (а именно MSBuild.ExtensionPack.Sql2005 и MSBuild.ExtensionPack.Sql2008) для управления базами данных SQL и следующий пример:

<!-- 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"/>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top