Проект базы данных SQL в VisualStudio sqlcmdvars развертывание TFS переопределить пользовательский путь?


У меня есть проект базы данных SQL в VisualStudio 2010 в системе управления версиями с TFS 2010 с несколькими ветвями, которые развертываются на разных серверах в зависимости от профиля конфигурации.

Использование файла sqlcmdvars с профилем конфигурации, добавленным в имя файла (Debug.sqlcmdvars и др..) для каждого профиля конфигурации позволяет указать уникальный путь к файлу для конкретной среды развертывания с помощью зарезервированных имен Path1 и Path2 для файла mdf и журнала файл.

<?xml version="1.0" encoding="utf-8"?>
<SqlCommandVariables xmlns="urn:Microsoft.VisualStudio.Data.Schema.Package.SqlCmdVars">
  <Version>1.0</Version>
  <Properties>
    <Property>
      <PropertyName>Path1</PropertyName>
      <PropertyValue>C:SQLSERVER LOG$(DatabaseName)</PropertyValue>
    </Property>
    <Property>
      <PropertyName>Path2</PropertyName>
      <PropertyValue>C:SQLSERVER DATA$(DatabaseName)</PropertyValue>
    </Property>
  </Properties>
</SqlCommandVariables>

Теперь я пытаюсь добавить пользовательский файл FileStream с соответствующей файловой группой FileStream

Введите описание изображения здесь

Я добавил дополнительную запись в файлы sqlcmdvars:

<Property>
  <PropertyName>PathBlobStream</PropertyName>
  <PropertyValue>C:SQLSERVER DATA$(DatabaseName)BlobStream</PropertyValue>
</Property>

Но я не уверен, как сказать базе данных, чтобы использовать это над тем, что SchemaObjectsDatabase Level ObjectsStorageBlobStore.sqlfile.sql объявил:

ALTER DATABASE [$(DatabaseName)]
    ADD FILE (NAME = [BlobStore], FILENAME = 'C:SQLSERVER DATA####BlobStream') TO FILEGROUP [BlobStreamFileGroup];

Как использовать новую запись в sqlcmdvars для переопределения пути к новому файлу FileStream?

1 4

1 ответ:

Лучший способ, который я нашел, это добавить дополнительные записи в файл dbproj, чтобы использовать другой файл схемы в зависимости от профиля конфигурации:

  <ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
    <Build Include="Schema Objects\Database Level Objects\Storage\Files\BlobStore.sqlfile.sql">
      <SubType>Code</SubType>
    </Build>
  </ItemGroup>
  <ItemGroup Condition=" '$(Configuration)' == 'Internal' ">
    <Build Include="Schema Objects\Database Level Objects\Storage\Files\BlobStore.sqlfile.Internal.sql">
      <SubType>Code</SubType>
    </Build>
  </ItemGroup>

Ключом было копирование/вставка исходного файла схемы и добавление имени профиля конфигурации в имя файла. Это сохраняет отладочный вариант с исходным именем файла, так что любые будущие сравнения схемы будут игнорироваться дополнительными вариантами. Вы хотите включить дополнительные файлы схемы в систему управления версиями, но если следовать за сюитой к записям выше, они не будут отображаться в проекте. Я проверил, что MSBuild обрабатывает это правильно. Я скрещиваю пальцы, что TFS сделает то же самое.