1

场景: 我正在使用 3 个环境,Dev、UAT 和 Live。每个都有自己的数据库,MyDb_Dev,MyDb_UAT,MyDb_Live。然后我的解决方案中有一个 VS2012 数据库项目,其中包含我的所有脚本。当我对位于本地的模型数据库 (MyDb_Model) 进行更改时,这很有效。

我想做什么: 我想在 SQL 2012 中使用 FileTables(我了解如何设置),但是我不知道如何编写脚本以便能够配置选项来处理我的环境。当我生成脚本时,它会将名称硬编码为 MyDb_Model 作为 FileGroup。另外,也就是说,当我尝试发布到我的开发数据库时,它抱怨数据库选项无法采用新脚本。当我在脚本中包含模型数据库的选项时,当我尝试发布到我的开发数据库时,由于名称重复,它会报错。

问题: 您能否使用 V2012 中的数据库项目编写 FileTables(带有数据库选项)以进行配置,还是我需要手动制作自己的脚本?

首选: 将 MyDb_Model 与数据库项目进行比较。作为新创建的数据库发布到 MyDb_Dev。

4

1 回答 1

1

听起来您需要项目变量来处理这个问题,其中变量包含每个环境特定的文本。然后,您将在对象中使用该变量而不是硬编码路径。下面将创建一个名为“DocumentStore”的文件表,并使用您在项目属性 - SQLCMD 变量中设置的名为“FileTableDirectoryVariable”的变量的值。将您的发布配置文件中的每个设置为使用正确的目录,您应该会很好。如果您对这些表使用不同的文件组,您应该能够使用 SQLCMD 变量以类似的方式调整 FileGroup 设置。

CREATE TABLE DocumentStore AS FileTable
    WITH ( 
          FileTable_Directory = '$(FileTableDirectoryVariable)',
          FileTable_Collate_Filename = database_default
         );
GO
于 2013-05-10T17:20:58.767 回答