显式定义其他文件组时,PRIMARY文件组的SSDT / LocalDB数据和日志文件位置

时间:2017-10-16 17:11:33

标签: sql-server sql-server-data-tools localdb

当SQL Server数据库项目(*.sqlproj)包含至少一个显式定义的文件组时,我注意到SQL Server数据工具(使用14.0.61707测试)的问题行为:即,默认PRIMARY文件组的{{ 1}}文件以及.mdf文件(事务日志) not 放置在.ldf的预期实例特定位置,而是放在{{1} (例如,%USERPROFILE%\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\{instance name})直接。

相比之下,包含 PRIMARY文件组的SQL Server数据库项目 - 即没有明确定义文件组或文件 - 将其.mdf和.ldf文件放在正确的实例中 - 上面的具体位置(%USERPROFILE%)。

当切换数据库以定位不同的实例(例如,从C:\Users\fbar...\Instances\{instance name})时,此行为会导致问题,因为之前写入Projects的数据文件正在阻碍新数据文件尝试写入新实例。这会导致如下错误:

ProjectsV12

这在我们的CI服务器上尤其成问题,其中文件是在用户无法直接访问的位置创建的,并且需要管理员清理它们。

我提出的唯一解决方案是在项目中添加一个新的“文件组文件”项,为PRIMARY文件组定义一个文件,如下所示:

%USERPROFILE%

这似乎会导致在所需的特定于实例的位置创建PRIMARY的Deploy error SQL72014: .Net SqlClient Data Provider: Msg 5170, Level 16, State 4, Line 1 Cannot create file 'C:\Users\fbar\Testing.mdf' because it already exists. Change the file path or the file name, and retry the operation. ALTER DATABASE [$(DatabaseName)] ADD FILE ( NAME = [PRIMARY], FILENAME = '$(DefaultDataPath)$(DefaultFilePrefix)_PRIMARY.mdf' ) TO FILEGROUP [PRIMARY]

那么,这是SSDT中的一个错误吗?还有另外一种方法吗?

0 个答案:

没有答案