Сценарии файловых таблиц

Сценарий: у меня есть 3 среды, которые я использую: Dev, UAT и Live. Каждый из которых имеет свою собственную базу данных, MyDb_Dev, MyDb_UAT, MyDb_Live. Затем у меня есть проект базы данных VS2012 в моем решении, который содержит все мои сценарии. Это хорошо работает, когда я вношу изменения в базу данных моей модели (MyDb_Model), которая находится локально.

Что я хочу сделать: я хочу использовать таблицы FileTable в SQL 2012 (которую я знаю, как настроить), однако я не знаю, как написать для них сценарий, чтобы иметь возможность настроить параметры для обрабатывать мою среду. Когда я генерирую сценарии, имя MyDb_Model будет жестко закодировано как FileGroup. Кроме того, когда я пытаюсь опубликовать свою базу данных Dev, она жалуется на то, что параметры базы данных не могут принимать новые сценарии. Когда я включаю в сценарий параметры базы данных Model, он будет жаловаться при попытке опубликовать в моей базе данных Dev из-за дублирования имен.

Вопрос. Можете ли вы создать сценарии для таблиц FileTable (с параметрами базы данных), используя проект базы данных в V2012, чтобы их можно было настраивать, или мне нужно вручную создавать собственные сценарии?

Предпочтительно: сравнение MyDb_Model с проектом базы данных. Опубликовать в MyDb_Dev как только что созданную базу данных.


person Willem Toerien    schedule 17.03.2013    source источник


Ответы (1)


Похоже, вы захотите, чтобы переменные проекта обрабатывали это, где переменная содержит текст для каждой среды. Затем вы будете использовать эту переменную в своих объектах вместо жестко запрограммированных путей. Следующее создаст FileTable с именем «DocumentStore» и использует значение для переменной с именем «FileTableDirectoryVariable», которую вы настроили в свойствах проекта — переменные SQLCMD. Настройте каждый из них в ваших профилях публикации на использование правильного каталога, и все будет хорошо. Если вы используете разные файловые группы для этих таблиц, вы должны иметь возможность настроить параметр FileGroup аналогичным образом, используя переменную SQLCMD.

CREATE TABLE DocumentStore AS FileTable
    WITH ( 
          FileTable_Directory = '$(FileTableDirectoryVariable)',
          FileTable_Collate_Filename = database_default
         );
GO
person Peter Schott    schedule 10.05.2013