码迷,mamicode.com
首页 > 数据库 > 详细

微软ASP.NET站点部署指南(11):部署SQL Server数据库更新

时间:2015-07-15 09:28:03      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:javascript   .net 4.0   asp.net   

1. 综述

本章节展示的是如何向完整版SQL Server 数据库部署一个数据库升级。与第9章的数据库升级部署有所不同(第9章是部署到SQL Server Compact数据库)。

提醒:如果根据本章节所做的操作出现错误信息或一些功能不正常的话,请务必check Troubleshooting页面

2. 给表添加新列

这个小节,做一个数据库修改和相应的代码更新,在部署到测试和生产环境之前,先在Visual Studio 里测试。修改内容是给Instructor 实体添加一个OfficeHours 列,然后再Instructors 页面上显示。

ContosoUniversity.DAL项目里打开Instructor.cs文件,在HireDate和Courses之间添加如下代码:

[MaxLength(50)]
public string OfficeHours { get; set; }

 

更新初始化器类,以便添加测试数据。打开SchoolInitializer.cs文件替换以var instructors = new List<Instructor>开头的代码块:

技术分享View Code

 

在ContosoUniversity项目,打开Instructors.aspx文件,在</Columns>之前添加如下代码:

<asp:TemplateField HeaderText="Office Hours">
    <ItemTemplate>
        <asp:Label ID="InstructorOfficeHoursLabel" runat="server" Text=‘<%# Eval("OfficeHours") %>‘></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="InstructorOfficeHoursTextBox" runat="server" Text=‘<%# Bind("OfficeHours") %>‘
            Width="14em"></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

 

运行程序,访问Instructors页面,运行稍微有点慢,因为Entity Framework需要重新创建数据库和插入数据:

 

技术分享

3. 为数据库更新创建SQL脚本

前面章节的SQL Server Compact 数据库修改部署,然后同样的方式部署测试和生产环境,但在本章这种方式不行,你需要创建SQL脚本来更新数据库,因为完整版SQL Server 数据库不能通过像SQL Server Compact 数据库一样通过复制的方式来部署。第9章指出有可以进行数据库比较然后自动创建数据库更新脚本。本章节,将已经生产的脚本提供给你。

 

想知道Code First为数据库做了什么,重新打开Server Explorer,你需要添加一个connection连接到新数据库SchoolDev上。

Server Explorer里,右键Data Connections,选择Add Connection,在Add Connection对话框的Server Name里输入.\SQLExpress,然后打开Select or enter a database name下拉菜单选择SchoolDev数据库。

 

技术分享

展开SchoolDev->Tables->Person->Columns,可以看到OfficeHours列。

 

技术分享

Properties窗口,可以看到这个列的数据类型是nvarchar ,长度是50。

 

技术分享

Server Explorer里,右键SchoolDev数据库,选择Close Connection

下面的脚本是添加一个列到Person表, table,复制这些脚本保存成AddOfficeHoursColumn.sql文件,放到SolutionFiles方案文件夹里。

技术分享View Code

 

你也可以创建一个脚本更新OfficeHours 列的数据,不过,程序部署以后用户自己会更新这个值的。

4. 部署数据库更新到测试环境

对于测试环境,在第一次部署时用到的schema 脚本,数据插入脚本,赋权脚本都不能再执行了。在这里你只需要执行刚才新建立的SQL脚本。

打开Project Properties窗口选择Package/Publish Web选项卡,确保Configuration框里选择Active (Test)Test

确保选择了Include all databases configured in Package/Publish SQL tab项。

 

技术分享

选择Package/Publish SQL选项卡,确保Configuration还是Test,在Database Entries表格里,取消选择DefaultConnection-Deployment,因为不需要更新这个membership数据库。

Database Entries表格里,选择SchoolContext-Deployment行以便设置School数据库的配置信息。

Database Entry Details面板取消选择Database Scripts表格里的2个行,取消Pull data and/or schema from an existing database项。

Database Scripts表里点击Add Script,在弹出的Select File对话框里选择AddOfficeHoursColumn.sql 文件,点击Open

 

技术分享

完成以后,Package/Publish SQL选项卡应该是这样的:

 

技术分享

Solution Configurations下拉菜单选择Test,在Publish profile下拉菜单里选择Test,点击Publish Web。(如果你自定义了你的Visual Studio使这些工具栏的这些设置不能用的话,请参考第8章的内容)

 

技术分享

Visual Studio部署了修改后的程序,并在Output窗口显示了成功信息。

 

技术分享

重新运行程序,验证部署结果是否正常,这时候你将看到多了一个office hours新列,当你编辑一个instructor 的时候,Office Hours 的值就会添加到该列里了。

 

技术分享

 

5. 部署数据库更新到生产环境

除了在部署前上传app_offline.htm文件,部署后删除该文件以外,其它的部署流程和部署测试环境的流程是一模一样的。

完成配置以后,Package/Publish SQL选项卡应该是这样的:

 

技术分享

完成以后,可以部署到生产环境了。在Solution Configurations下拉菜单里选择Release ,在Publish下拉菜单里选择Production,点击Publish Web。(如果你自定义了你的Visual Studio使这些工具栏的这些设置不能用的话,请参考第8章的内容)

 

技术分享

Visual Studio部署了修改后的程序,并在Output窗口显示了成功信息。

 

技术分享

测试之前,需要删除app_offline.htm文件。

重新打开程序,验证该部署是否正常。下图显示,Office Hours列上显示了编辑的数据,也就是部署是OK的。

 

技术分享

现在已经成功部署了含有数据库更新的程序,在部署到SQL Server Express和SQL Server的时候试用了同样的SQL脚步。

6. 更多信息

至此,部署ASP.NET 程序到第三方提供商的教材已经全部结束了,诸如如何使用一个部署包部署ContosoUniversity程序的话,请参看:Using a Web Deploy package to deploy to IIS on the dev box and to a third party host。更多类似的文章,请参看: ASP.NET Deployment Content Map

版权声明:本文为博主http://www.zuiniusn.com 原创文章,未经博主允许不得转载。

微软ASP.NET站点部署指南(11):部署SQL Server数据库更新

标签:javascript   .net 4.0   asp.net   

原文地址:http://blog.csdn.net/u013141940/article/details/46887875

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!