数据库和服务器项目概述
您可以通过以下方式帮助您的组织更有效地管理其数据库开发:使用 Visual Studio 高级专业版创建数据库项目或服务器项目,并对该项目进行版本控制。 这些脱机表示形式包含对象定义、设置和部署脚本,您可以使用它们来创建单个数据库(或服务器)实例或更新现有实例。
根据您的组织需要,您还可以共享项目的组成部分或创建复合项目。 有关更多信息,请参见本主题后面的共享项目的组成部分或在数据库项目中使用引用中的“使用引用编撰项目”部分。
可用的项目类型
使用 Visual Studio 2010 高级专业版可以创建数据库项目、服务器项目和数据层应用程序组件 (DAC) 项目。
数据层应用程序组件项目
DAC 是一个新概念。 它是随 SQL Server 2008 R2 引入的,它包含 SQL Server 数据库的定义,并且支持客户端-服务器或三层应用程序所使用的支持实例对象。 DAC 包括数据库对象(例如表和视图)以及实例实体(例如登录名)。 您可以使用 Visual Studio 来创建 DAC 项目、生成 DAC 数据包文件,以及将该 DAC 数据包文件发送到数据库管理员以便部署到 SQL Server 数据库引擎的实例上。 有关 DAC 项目支持的功能的列表,请参见 Features Supported in Data-tier Applications(数据层应用程序中支持的功能)。数据库项目
数据库项目包含数据库中所有对象的定义。 此外,它还包含数据库设置、生成设置和部署设置。服务器项目
服务器项目包含驻留在服务器上的对象的定义或服务器上 master 数据库中对象的定义。 此外,它还包含服务器设置、生成设置和部署设置。
项目结构
**“解决方案资源管理器”**显示按文件组织的项目。 **“解决方案资源管理器”中的每一项都与保存的文件或文件夹对应。 而“架构视图”**显示却是按对象或架构组织的项目,这样,无论数据库中的对象是否在单独的文件中定义,您都可以识别这些对象。
数据库或服务器项目可以包含以下类型的对象:
属性文件
您的数据库或服务器项目包括属性文件夹中的文件,而这些文件又包含属性值。 您可以通过修改这些值来控制项目部署方式。 例如,您可以指定数据库设置、服务器设置、SQLCMD 变量和数据库权限。 有关更多信息,请参见数据库和服务器项目中的属性文件。数据生成计划
数据生成计划包含有关您要如何为打算部署或更新的数据库生成实际且具代表性的测试数据的相关信息。 有关更多信息,请参见使用数据生成器生成数据库的测试数据。架构比较
架构比较包含您的数据库项目和另一个架构之间进行详细比较的相关信息。 您可以通过重新打开 .scmp 文件并刷新比较来将您的项目与该架构进行重新比较。 有关更多信息,请参见比较和同步数据库架构。架构对象
架构对象是在项目文件夹中存储的 .sql 文件集合中定义的。 大多数对象都是在单独的文件中定义的。 例外情况包括表中的列以及存储过程或函数的参数。 列存储在表的定义中,参数存储在存储过程或函数的定义中。 有关更多信息,请参见创建和修改数据库和服务器对象。脚本
您的项目中除了包含可以用来管理您的数据库或服务器的任何脚本之外,还包含预先部署和后期部署脚本。 有关更多信息,请参见创建和修改数据库脚本。
导入对象和设置
在创建项目之后,您可以从数据库实例或脚本导入对象和设置。 导入数据库时,将验证其对象定义,并将无法分析的语句放入 ScriptsIgnoredOnImport.sql 文件中。 如果导入的对象定义引用了不再存在的对象,则必须先解决这些错误,然后才可以生成和部署项目。 例如,您导入的存储过程可能引用了不再存在的表。 若要解决该错误,可以删除该存储过程。
在导入大型架构之后,您可能需要花费大量时间来解决此类错误。 然而,团队成员在 Visual Studio 高级专业版中更新架构时,不能在不知情的情况下引入其他同类错误。 在他们修改和保存任何对象定义时,需验证所有更改,以便团队成员可以立即修复错误,避免将这些错误部署到实时数据库中。
在解决对象定义中的警告之后,还应考虑分析数据库代码是否存在设计问题、命名问题和性能问题。 有关更多信息,请参见分析数据库代码以提高代码质量。
共享项目的组成部分
如果要在多个项目中重复使用一组文件,则可以将项目的任何部分作为一个部分项目导出。 此操作将创建一个 .files 文件,您可以将该文件包含在一个或多个其他项目中。 例如,您可能有一些可用来审核所有数据库的常见存储过程。 您可以在一个项目中定义这些存储过程、导出这些存储过程并将其包含在其他项目中。 通过采用这种方法,您就不必在多个项目中维护相同的代码了。 有关更多信息,请参见如何:导入和导出分部数据库项目。
安全注意事项
您的数据库项目和任何相关的 .dbschema 文件包含有关数据库资产的信息。 您应该按照限制访问源代码的相同方法,限制对数据库项目和 .dbschema 文件的访问。
您可以使用以下方法来控制对您的数据库项目和 .dbschema 文件的访问:
使用项目的版本控制和相应的文件系统权限
您只能向需要进行访问的那些开发人员授予对您的数据库项目的访问权限。 此外,您还可以限制对包含数据库项目文件或 .dbschema 文件的任何文件共享的权限,以防止未经授权的个人进行非法访问。通过使用部分项目对数据库项目进行分区
您可以跨多个项目划分数据库对象,然后使用版本控制权限来控制谁可以查看或更改这些项目。 有关更多信息,请参见开始大型数据库的团队开发。创建具有空过程体的 .dbschema 文件
您可以创建不包含实现的存储过程副本,并与必须调用这些过程但不必看到其实现的开发人员共享该副本的 .dbschema 文件。 有关如何引用 .dbschema 文件的更多信息,请参见在数据库项目中使用引用。
相关方案
开始数据库的团队开发
通过创建数据库对象和设置的脱机表示形式,并将该表示形式纳入版本控制,可以管理对数据库的更改。开始对引用其他数据库的数据库进行团队开发
通过创建数据库对象和设置的脱机表示形式,并将该表示形式纳入版本控制,可以管理对数据库的更改。 在该表示形式中,您可以定义跨数据库引用以支持对不同目标环境的部署。开始引用 SQLCLR 对象的数据库的团队开发
通过创建数据库对象和设置的脱机表示形式,并将该表示形式纳入版本控制,可以管理对数据库的更改。 在该表示形式中,您可以添加对 SQLCLR 程序集的引用,然后使用在该程序集中定义的对象。对引用共享服务器对象的数据库开始团队开发
通过创建数据库对象和设置的脱机表示形式,并将该表示形式纳入版本控制,可以管理对数据库的更改。 在该表示形式中,您可以对包含服务器对象定义(如登录名或密钥等)的共享服务器项目添加引用。开始大型数据库的团队开发
您可以通过跨多个项目分隔对象来管理对大型数据库所做的更改。对使用 XML 架构集合的数据库开始团队开发
您可以管理对类型化的 XML 列使用一个或多个 XML 架构集合的数据库所做的更改。