演练:创建和部署引用共享登录名的数据库项目

如果多个数据库引用相同的服务器对象,则可以为每个数据库创建一个项目,并创建一个向其导入对象(如共享登录名、密钥或自定义错误消息)的服务器项目。 在本演练中,可以为引用您导入服务器项目中的共享登录名的数据库设置一个独立开发环境。 此环境基于包含生产数据库中所有对象的定义的数据库项目。

本演练阐释了以下任务:

  • 设置共享服务器项目

  • 创建复合数据库项目

  • 使项目可供团队使用(可选)

系统必备

必须已安装 Visual Studio 高级专业版,并且有权访问可从中导入服务器对象的 SQL Server 的副本。 SQL Server 的副本必须运行在可向其部署数据库项目的服务器上。

设置共享服务器项目

在开发环境中引用共享登录名时,这些登录名通常是在已存在并由服务器管理员维护的服务器项目中定义的。

创建服务器项目

  1. 在**“文件”菜单上指向“新建”,再单击“项目”**。

    此时将出现**“新建项目”**对话框。

  2. 在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。

    提示

    如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”

  3. 在模板列表中单击**“SQL Server 2008 服务器项目”**。

  4. 在**“名称”**中键入“SharedServerProject”。

    不需要更改**“位置”“解决方案名称”**中的值。

  5. 如果**“创建解决方案的目录”**复选框尚未选中,则选择该复选框。

  6. 如果**“添加到源代码管理”复选框尚未清除,则清除该复选框,并单击“确定”**。

    此时一个空的服务器项目即添加到解决方案中,并显示在**“解决方案资源管理器”**中。

    接下来,您要导入服务器对象和设置。

导入服务器对象和设置

  1. 在**“解决方案资源管理器”**中,单击 SharedServerProject 项目。

  2. 在**“项目”菜单上,单击“导入对象和设置”**。

    提示

    作为步骤 1 和步骤 2 的替代,可以右击 SharedServerProject,然后单击“导入对象和设置”

  3. 在**“导入数据库向导”中,指定与要从中导入对象和设置的服务器的连接,然后单击“开始”**。

    重要说明重要事项

    对于本演练,必须指定将向其部署数据库项目的同一个服务器。

    此时服务器的对象和设置即导入您的项目中。

  4. 导入对象和设置后,单击**“完成”**。

  5. 在**“视图”菜单上,单击“数据库架构视图”**。

  6. 依次展开**“SharedServerProject”节点、“服务器级对象”节点、“安全”节点和“登录名”**节点。

  7. 确认并记下为供在本演练稍后部分中使用而显示的登录名之一。

    接下来,您要生成服务器项目。

生成服务器项目

  • 在**“生成”菜单上,单击“生成解决方案”**。

    生成解决方案时,将创建一个 SharedServerProject.dbschema 文件,该文件包含服务器项目中对象和设置的定义。 本演练中稍后就引用此文件。

    接下来,您要创建一个数据库项目,该项目使用此服务器项目中定义的登录名。

创建复合数据库项目

创建数据库项目

  1. 在**“文件”菜单上指向“新建”,再单击“项目”**。

    此时将出现**“新建项目”**对话框。

  2. 在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。

    提示

    如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”

  3. 在模板列表中单击**“SQL Server 2008 数据库项目”**。

  4. 在**“名称”**中键入“CompositeDBProject”。

    不需要更改**“位置”“解决方案名称”**中的值。

  5. 如果**“创建解决方案的目录”**复选框尚未选中,则选择该复选框。

  6. 如果**“添加到源代码管理”复选框尚未清除,则清除该复选框,并单击“确定”**。

    此时一个空的数据库项目即添加到解决方案中,并显示在**“解决方案资源管理器”**中。

    接下来,您要添加对本演练中前面定义的服务器项目所生成输出的引用。

添加对服务器项目的引用

  1. 在**“解决方案资源管理器”中,展开 CompositeDBProject 项目的节点,然后单击“引用”**节点。

  2. 在**“项目”菜单上单击“添加数据库引用”**。

    提示

    作为步骤 1 和步骤 2 的替代,可以右击“引用”节点,然后单击“添加数据库引用”

    将出现**“添加数据库引用”对话框。 由于解决方案只包含一个数据库项目,因此选择了“数据库项目架构(.dbschema)”**。

  3. 单击**“浏览”**。

    此时将显示**“选择数据库文件”**对话框。

  4. 指定本演练前面创建的 SharedServerProject.dbschema 文件。

    例如,可能要指定以下位置:

    My Documents\Visual Studio 2010\Projects\SharedServerProject\SharedServerProject\sql\debug\SharedServerProject.dbschema

  5. 单击**“打开”**。

    创建对从服务器项目创建的 dbschema 文件的引用时,默认情况下,引用设置为使用文本“master”来引用其自身的对象。 由于您已定义了数据库变量值,因此这一引用并非复合引用。 仅当要用来代表其他数据库时,才需要定义数据库变量。

  6. 单击**“确定”**。

    此时一个引用即添加到服务器项目中。 现在可以使用该服务器项目中定义的任何对象,就像这些对象是在当前数据库项目中定义的一样。

    接下来,您要向数据库项目添加用户对象。 用户对象使用服务器项目中定义的登录名。

向数据库项目添加用户

  1. 在**“视图”菜单上,单击“数据库架构视图”**。

  2. 展开**“CompositeDBProject”节点,展开“安全”节点,右击“用户”节点,指向“添加”,然后单击“用户”**。

    此时将出现**“添加新项”**对话框。

  3. 在**“名称”中键入“MyUser”,然后单击“添加”**。

    此时用户即添加到数据库项目中,并显示在**“架构视图”**中。 此时将打开 Transact-SQL 编辑器,并显示用户的定义。

  4. 在 Transact-SQL 编辑器中,更新用户定义以匹配以下示例:

    CREATE USER [MyUser]
        FOR LOGIN [SharedLogin]
        WITH DEFAULT_SCHEMA = dbo;
    
    重要说明重要事项

    必须将 [SharedLogin] 替换为标题为“导入服务器对象和设置”的过程的步骤 7 中确定的登录名。

  5. 在**“文件”菜单上,单击“保存 MyUser.user.sql”**。

    接下来,您要定义数据库角色。

定义数据库角色

  1. 在**“架构视图”中,依次展开“CompositeDBProject”节点、“安全”节点和“角色”**节点。

  2. 右击**“数据库角色”节点,指向“添加”,然后单击“数据库角色”**。

    此时将出现**“添加新项”**对话框。

  3. 在**“名称”中键入“DbAccounting”,然后单击“添加”**。

    此时角色即添加到数据库项目中,并显示在 **“架构视图”**中。 此时将打开 Transact-SQL 编辑器,并显示角色的定义。

  4. 在**“文件”菜单上单击“保存 DbAccounting.role.sql”**。

    接下来,您要配置数据库项目的开发属性。

将用户与新的数据库角色关联

  1. 展开**“脚本”节点,展开“后期部署”节点,然后双击“Script.PostDeployment.sql”**。

    此时将打开 Transact-SQL 编辑器,并显示后期部署脚本。

  2. 在后期部署脚本的底部,添加以下 Transact-SQL 语句:

    exec sp_addrolemember 'DbAccounting','MyUser';
    
  3. 在**“文件”菜单上,单击“保存 Script.PostDeployment.sql”**。

    接下来,您要配置数据库项目的开发属性。

配置部署的数据库项目

  1. 在**“解决方案资源管理器”中,单击“CompositeDBProject”**(数据库项目)。

  2. 在**“项目”菜单上单击“CompositeDBProject 属性”**。

    此时将显示该项目的属性。

  3. 单击**“部署”**选项卡。

  4. 在**“部署操作”列表中,单击“创建部署脚本(.sql)并部署到数据库”**。

  5. 在**“目标数据库设置”下,单击“编辑”**,并指定与要向其部署数据库项目的服务器和数据库的连接。

    提示

    如果不指定从中导入了服务器对象的同一服务器,则部署将因在该服务器上定义登录名而失败。

  6. 在**“文件”菜单上,单击“保存选定项”**。

    接下来,您要生成数据库项目。

生成数据库项目

  • 在**“生成”菜单上,单击“生成解决方案”**。

    将生成项目,并且不发生任何错误。

    接下来,您要将数据库项目部署到目标服务器和数据库。

部署数据库项目

  • 在**“生成”菜单上单击“部署 CompositeDBProject”**。

    此时即部署项目,且不发生任何错误。

使项目可供团队使用(可选)

将项目添加到版本控制中

  1. 在**“解决方案资源管理器”**中,单击 CompositeDBProject 解决方案的节点。

  2. 在**“文件”菜单上,指向“源代码管理”,然后单击“将解决方案添加到源代码管理”**。

    提示

    此时,您将与已安装的任何版本控制软件进行交互。 本演练提供了将项目添加到 Visual Studio Team Foundation Server 的步骤。 如果您有不同的版本控制软件,则必须替换等效步骤。

    如果您使用的是 Team Foundation Server,将出现**“连接到 Team Foundation Server”**对话框。

  3. 在**“连接到 Team Foundation Server”**中,单击承载要向其添加解决方案的团队项目的服务器。

    提示

    如果没有可将数据库项目添加到的团队项目,请参见计划和跟踪项目

  4. 在**“团队项目”中单击要将数据库项目添加到其中的团队项目,再单击“确定”**。

    此时将显示**“向源代码管理中添加解决方案 CompositeDBProject”**对话框。

  5. 单击**“确定”**接受默认值。

    您的数据库项目及其包含的文件将置于版本控制之下。 最初,它们仍处于签出状态。 只有在您将它们签入后其他团队成员才能访问它们。

  6. 在**“视图”菜单上,指向“其他窗口”,然后单击“挂起的更改”**。

    将出现**“挂起的更改”**窗口。

  7. 在**“注释”**中键入“初始数据库项目创建”。

  8. 在**“挂起的更改”窗口的工具栏上,单击“签入”**。

    在签入数据库项目及其包含的文件的过程中,将显示**“签入进度”**对话框。 **“解决方案资源管理器”**中的图标将会更改,以表明文件已签入到版本控制中。

后续步骤

通过签入到版本控制中的数据库项目,团队成员可以继续开发数据库项目。 数据库开发人员不需要修改服务器项目。 因此,可以限制其权限,以使他们可以查看但不能更改共享对象。

请参见

概念

对引用共享服务器对象的数据库开始团队开发

数据库和服务器项目概述

开始数据库的团队开发

开始对引用其他数据库的数据库进行团队开发

开始引用 SQLCLR 对象的数据库的团队开发