У меня есть проект базы данных в Visual Studio 2010, где в сценарии после развертывания я хочу импортировать двоичные данные из двух файлов в базу данных.Для этого у меня есть очень похожий код в файле, указанном в файле сценария после развертывания:
INSERT INTO [dbo].[MyTable] ([Column1], [Column2])
SELECT t1.BulkColumn, t2.BulkColumn
FROM
OPENROWSET(BULK N'$(ProjectDirectory)\Scripts\Post-Deployment\TestData\t1.dat', SINGLE_BLOB) AS t1,
OPENROWSET(BULK N'$(ProjectDirectory)\Scripts\Post-Deployment\TestData\t2.dat', SINGLE_BLOB) AS t2;
Этот уже работал .Я не уверен, в какой момент он перестал работать, но теперь все, что я, похоже, получаю, это ошибка SQL01262: The variable 'ProjectDirectory' has not been defined
(по иронии судьбы, с местоположением ошибки самого сценария после развертывания, строка 0, столбец 0).Я покопался в файлах под корнем проекта и обнаружил, что это своего рода сорта, определенная в самом файле проекта, который имеет следующее в узле верхнего уровня <Project>
:
<ItemGroup>
<SqlCommandVariableOverride Include="ProjectDirectory=$(MSBuildProjectDirectory)" />
</ItemGroup>
Изменение $(ProjectDirectory)
на$(MSBuildProjectDirectory)
в приведенном выше фрагменте ничего не изменилось, кроме имени переменной в сообщении об ошибке.Ошибка возникает на этапе проверки развертывания, а не во время самого развертывания.
Как правильно в сценарии после развертывания ссылаться на файлы, относящиеся к корневому каталогу проекта, для включениясодержимое этих файлов при развертывании базы данных?