SQL Server 数据库项目未正确处理新脚本文件的创建

Posted

技术标签:

【中文标题】SQL Server 数据库项目未正确处理新脚本文件的创建【英文标题】:SQL Server Database Project not handling new script file creation correctly 【发布时间】:2016-09-28 11:27:22 【问题描述】:

在 Visual Studio 中使用 SQL Server 数据库项目时,如果数据库中有超过 1000 个存储过程,则在导入时,Visual Studio 会将这些过程拆分到单独的目录中。

当您尝试在此类导入后通过“架构比较”功能将任何新存储过程同步到项目中时,Visual Studio 会忘记这种拆分文件夹结构,并将所有新脚本直接放入“存储过程”文件夹中。这意味着脚本化的新存储过程不适合现有结构,这迫使用户要么使用这种分离的结构,要么手动更新项目引用并将文件复制回 Visual Studio 创建的初始结构。

步骤

    创建一个新的 SQL 项目。 在解决方案资源管理器中右键单击项目 > 选择“导入”>“数据库”。 将项目绑定到一个 SQL2008 数据库,该数据库存储了 1000 多个 程序。为“每个文件夹的最大文件数”选择 1000。 允许 VS 编写所有存储过程的脚本。它会自动 分成1000个批次并创建一个新文件夹'Proc1','Proc2' 必要时为每批。 通过右键单击 SQL 项目打开新的比较 > 选择“架构比较”。 通过将 SQL 项目与您的项目进行比较来验证已正确同步的数据库 原始数据库。应该没有待处理的更改。 在已同步的数据库中创建一个新的存储过程。 再次运行比较,现在应该会显示新的存储过程 在“添加”类型下。 单击“更新”并允许 VS 为新过程创建脚本。 不是将新脚本放置在原来的 1000 分隔文件夹结构中,而是将新脚本直接放置在“存储过程”文件夹中。

【问题讨论】:

【参考方案1】:

这是一个有趣的场景。这些天我会检查一下。

这是我的 2 美分。在将所有数据库对象初始加载到数据库项目中后,我(或开发团队)停止通过 SSMS 将新 SP 或任何对象直接添加到数据库的做法。相反,我将它们添加到数据库项目并部署到我需要它们去的所有服务器。从那时起,数据库项目就像真正的代码源一样。最重要的是,您可以利用 TFS 分支功能来保留数据库项目的 QA 版本和 Prod 版本。我还尝试为文件夹命名有意义的名称,以便对 Stored Proc 文件夹下的 SP 进行分类,这有助于我以后的代码维护。

【讨论】:

以上是关于SQL Server 数据库项目未正确处理新脚本文件的创建的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid不正确数据库日志文 件丢失

未找到或无法访问服务器。请验证实例名称是不是正确并且 SQL Server 已配置为允许远程连接。 (provider: 命

视图定义未在 SQL Server 中更新

未找到或无法访问服务器。请验证实例名称是不是正确并且 SQL Server 已配置为允许远程连接。 (provider: 命

SQL Server 数据库项目中的更改表脚本

将数据从 Access 导入 SQL Server 的正确方法?