Visual Studio 2010 にデータベース プロジェクトがあり、デプロイ後のスクリプトで 2 つのファイルからデータベースにバイナリ データをインポートしたいと考えています。そのために、デプロイ後のスクリプト ファイルから参照されるファイルに、次のようなコードがあります。
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)
ても、エラー メッセージの変数名以外は何も変更されませんでした。エラーは、展開自体ではなく、展開の検証段階で発生します。
配置後のスクリプトで、プロジェクトのルート ディレクトリに関連するファイルを参照し、それらのファイルの内容をデータベース配置に含める正しい方法は何ですか?