【问题标题】:VisualStudio SQL database project sqlcmdvars TFS deployment override custom File path?Visual Studio SQL 数据库项目 sqlcmd 汽车 TFS 部署覆盖自定义文件路径?
【发布时间】:2011-12-09 14:38:21
【问题描述】:

我在 VisualStudio 2010 中有一个 SQL 数据库项目,它使用 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>

但我不确定如何告诉数据库在 SchemaObjects\Database Level Objects\Storage\BlobStore.sqlfile.sql 声明的内容上使用它:

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

如何使用 sqlcmdvars 中的新条目来覆盖新 FileStream 文件的路径?

【问题讨论】:

    标签: sql-server visual-studio-2010 tsql tfs


    【解决方案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 也会这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多