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

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 原创文章,未经博主允许不得转载。

时间: 2024-12-26 06:29:41

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

ASP.NET MVC Identity 使用自己的SQL Server数据库

之前在网上看到的一篇后来找不到了,现在自己记录一下. 1.在web.config中添加一个数据库连接. <add name="dataContext" connectionString="Data Source=.;Initial Catalog=MVC1;User ID=XXX;password=XXX" providerName="System.Data.SqlClient" /> 2.打开IdentityModels.cs文件,

微软ASP.NET站点部署指南(10):迁移至SQL Server

1.  综述 第2章的部署SQL Server Compact和第9章的部署数据库更新里解释了为什么最终要升级到完整版SQL Server .本章节将告诉你如何来做. SQL Server Express和完整版SQL Server 一旦你决定使用完整版SQL Server,你需要在开发和测试环境使用SQL Server Express 或者完整版SQL Server.在工具支持和数据库引擎功能上,SQL Server Compact 和其它版本的SQL Server都是有区别的,可以导致不同的

微软ASP.NET站点部署指南(1):部署介绍

1. 综述 该系列教程指导你如何将一个ASP.NET web 程序部署到第三方的主机提供商机器上.部署的方式用的是Visual Studio的one-click发布.首先部署到开发环境的IIS上进行测试,然后再部署到生产环境(第三方的主机提供商)上. 该系列总共包括11个章节和一个troubleshooting章节:看来内容很多,有点晕吧?其实,生产环境部署的基本流程在本系列里只占很小一部分,但是在现实的环境中,了解一些看似很小但非常重要的信息是非常必要的--例如,设置目标服务器上某个文件夹的权

微软ASP.NET站点部署指南(4):配置项目属性

1.  综述 有些部署设置可以在项目属性里设置的,并且保持到项目文件里(.csproj或.vbproj). 大多数情况下,你都可以在Visual Studio 选择项目属性Project Properties,在属性窗口里设置这些参数.该章节将告诉你如何设置这些参数. 2.  项目属性窗口里配置部署参数 影响项目部署的设置参数可以在项目属性(Project Properties)窗口的Package/Publish 选项卡里设置.可以对不同的build配置设置不同的参数值,本章节将指导你查看这些

微软ASP.NET站点部署指南(2):部署SQL Server Compact数据库

1. 综述 对于数据库访问,Contoso University程序要求下面的软件必须随程序一起部署,因为不属于.NET Framework: SQL Server Compact (数据库引擎) ASP.NET Universal Providers (启用ASP.NET membership以使用SQL Server Compact) Entity Framework 4.1 (Code First) 2个数据库的数据库结构和相关的一些数据都需要部署.通常,开发系统的时候都会有一些测试数据,

XenApp_XenDesktop_7.6实战篇之九:SQL Server数据库服务器规划及部署

安装SQL Server 数据库,用于支持Desktop Studio 和桌面云管理台数据存储和访问.在简单的POC测试中,数据库可以只配置单机:但数据库故障时,不但影响配置管理台,也会影响DDC的运作,新的用户会话将不能建立(不影响已建立的会话),因此在生产环境部署时,必须考虑SQLServer的高可用性.另外需要注意的是必需定期备份数据库,防止数据库故障时丢失数据,并且防止事务日志的不断增长.您需要规划每个数据库实例名称.数据库名称及数据库空间大小. 1.  SQL Server数据库服务器

sql server数据库的部署

http://xiaorenwutest.blog.51cto.com               SQL Server数据库部署   概述:数据库在企业中现在是必不可少的存储工具,用来会员登录,网站,动态的网页内容调动,现在在企业中多用于关系型数据库那么接下来介绍下数据库的必要性: (1)可以结构化存储大量的数据信息:方便用户进行有效的检索和访问 (2)可以有效的保持数据信息的一致性.完整性.降低数据冗余(避免数据重复) (3)可以满足应用的共享和安全方面的要求   1.数据库基本概念 数据:

.NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库

今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将运行在Linux上的示例站点(http://about.cnblogs.com)升级到了ASP.NET 5 RC1,并且增加了数据库访问功能——基于Entity Framework 7 RC1访问SQL Server数据库. 示例站点页面左侧的导航是从数据库读取数据动态加载的,数据库服务器用的是阿里

采用Opserver来监控你的ASP.NET项目系列(二、监控SQL Server与Asp.Net项目)

前言 之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. 今天我们主要来介绍一下,如何使用Opserver监控我们的SQL Server 和ASP.NET项目的异常监控 监控效果如下: SQL Server的: ASP.NET异常情况的监控: 监控SQL Server 首先我们来讲解一下如何监控我们的SQL Server. 上篇内容我们已经提到过 Opeserver的项目有很多的配置文件. 我们找到我们的SQLSettings.example.json文件,改名为S