0

如果我创建一个包含所有 sql 对象的 .sqlproj 文件,为什么需要将我的 mdf、ldf 文件放入 VS Team Services 源存储库?.mdf 不包含所有数据吗?如果这是真的,那么我可能不想将所有数据存储在我的仓库中?如果我需要重新创建数据库,我总是可以将数据库发布到 localdb 吗?这里有哪些最佳实践?

4

1 回答 1

0

您不会对实际的 .MDF 和 .LDF 文件进行源代码控制;它们包含您的实际数据。

但是,有些用例需要控制.MDF 和 .LDF 文件在磁​​盘上的位置。在这种情况下,在 .sqlproj 文件中包含定义 MDF/LDF 文件位置的文件组文件可能是有意义的。

例如,假设您有一个大的 D: 驱动器希望存储数据,以及一个由 SSD 组成的高速 E: 驱动器希望存储索引。从您的 .sqlproj 存储文件夹中,您可以:

  • 添加 New Item > FileGroup,并创建一个名为 Data 的文件组
  • 添加 New Item > FileGroup,并创建一个名为 Index 的文件组
  • 添加新项目 > 文件组文件,并创建一个名为 $(DatabaseName).Data.ldf 的文件
  • 添加新项目 > 文件组文件,并创建一个名为 $(DatabaseName).Indexes.ldf 的文件

然后,您可以修改表以包含 ON {FileGroup} 子句,如下所示:

CREATE TABLE [dbo].[MyTable] (
  MyTableID INT IDENTITY(1,1) NOT NULL,
  OtherIndexField NVARCHAR(50) NULL,
  ...
  CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED ([MyTableID] ASC) 
) ON [Data];

CREATE NONCLUSTERED INDEX [IX_MyTableByOtherIndexField]
    ON [dbo].[MyTable]([OtherIndexField] ASC)
    ON [Index];
于 2014-07-27T14:36:11.930 回答