微软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个数据库的数据库结构和相关的一些数据都需要部署。通常,开发系统的时候都会有一些测试数据,这些测试数据跟定不能部署到生产环境。当然,你也可能要输入一些生产环境的数据以便部署到生产环境。本章节你将配置Contoso University项目以便部署的时候包括必须的软件和数据。

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

2. SQL Server Compact与SQL Server Express

Sample程序使用SQL Server Compact 4.0,这个数据库引擎是web网站的新选择,SQL Server Compact旧版本是不能用在web环境的。SQL Server Compact提供了很多常用的新功能,和开发部署SQL Server Express及SQL Server一样。取决于你选择的主机提供商,SQL Server Compact可能更便宜,因为完整版的SQL Server需要额外付费。 SQL Server Compact不需要额外的付费,因为你可以自己将这个数据库引擎作为自己程序的一部分来部署。另外一个优点是备份和还原都十分简单,因为所有的数据都在部署站点app_data文件夹的一个.sdf文件。备份和还原仅仅是copy文件而已。

不过,你依然需要注意它的限制。SQL Server Compact不支持存储过程、触发器、试图、复制。(对于SQL Server 2005和SQL Server 2008支持而SQL Server Compact不支持的完整功能列表,请访问:Differences Between SQL Server Compact and
SQL Server)。还有,操作SQL Server Express 和完整版SQL Server 数据库schema和数据的一些工具也不支持SQL Compact。例如,你不能使用SQL Server Management Studio或者Visual Studio数据库项目来处理SQL Server Compact数据库。当你使用SQL Server Compact的时候,Entity Framework Code First会根据你的数据模型(data model)自动创建数据库。但一旦部署以后,想保持开发环境数据库和生产环境数据库都同步的话很难,如果有像SQL
Server Management Studio一样的工具的话就简单了。更多关于部署数据库差异到SQL Server Compact数据库的信息,请查看第9章。

SQL Server Compact是个好选择,可以用Visual Studio里的Server Explorer工具进行管理(本系列教材会将用到)。但是如果在初始部署以后需要经常改变的话,那使用SQL Server Compact 维护的成本可就大了。

你可以先用SQL Server Compact 然后再升级,后面的章节将告诉你如何将SQL Server Compact迁移到SQL Server Express或者完整版SQL Server。当然,如果你正在创建新的程序然后期望以后升级至完整版SQL Server,最好的选择是使用SQL Server Express。

3. 配置SQL Server Compact数据库引擎

Contoso University程序数据访问需要的软件可以通过使用下面的NuGet包来安装:

  • SqlServerCompact
  • System.Web.Providers (ASP.NET universal providers)
  • EntityFramework
  • EntityFramework.SqlServerCompact

NuGet包已经帮你安装了所有该程序所需要的东西。有时候,它能修改Web.config文件或者添加build方案是需要运行的PowerShell脚本。如果你不想使用NuGet安装这些东西,你需要了解NuGet包安装的时候做的事情,以便可以手工做这些事情。

有个问题需要注意,SqlServerCompact NuGet包会添加一个post-build脚本到你id项目,以便copy原生的assemblies到bin目录下的x86 和amd64 子文件夹,但是项目默认是没有这些子文件夹的,结果就是在部署的时候这些文件不会copy到目标站点,需要手工来做这些事情。(默认的部署配置就是这样的,另外一个选择(该教程没有使用),你可以修改配置行为来达到目的,请查看Configuring
Project Properties 来获取资料。不推荐这样做,因为部署的时候会带给生成环境很多文件。)

Solution Explorer里,点击查看所有文件Show all Files (如果还没点的话)。可能还需要点击刷新Refresh

展开bin文件夹可以看到有amd64x86子文件夹,选择这2个文件夹,然后右键选择包含到项目里Include in Project

这时候,文件夹的图标会变回正常的,代表已经包含到项目里了。

4. 创建程序数据库

一般部署数据库的时候,都不会把开发库的所有数据都部署到生产环境,因为很多数据都是测试用的。例如,测试库里的学生姓名都是虚构的。另外一方面,也不能仅仅只部署数据库结构而一点数据都不部署。一些测试数据有可能是生产环境用到的真实数据,例如,数据库表里包含的年级值或真实的部门名称。

可以创建一个和开发环境不同版本的数据库,一些表包含数据,一些表不包含数据。

下面的图显示的是数据库的结构:

该教程假定第一次部署的时候,Student和Enrollment表是空的。其它的表上线的时候包含了一些预装载数据。下面的步骤告诉你如何用Visual Studio的SQL Server工具删除测试数据(你不必保存测试数据因为Entity Framework Code First初始化类的时候会自动生成这些数据)。

SQL Server Compact数据库包含了App_Data文件夹的.sdf文件。Solution Explorer里,展开App_Data文件夹可以看到2个SQL Server Compact数据库.sdf文件。

这里是你的开发库,教程结束的时候你会有4个数据库,其中开发环境2个,生成环境2个。为了标记清楚哪个是开发环境或生成环境,你可以重命名数据库名称:开发环境的aspnet-Dev.sdf 和School-Dev.sdf,生产环境的aspnet-Prod.sdf和School-Prod.sdf。

开始修改School.sdf数据库以便只包含部署到生产环境的数据(后面的章节将重命名为School-Prod.sdf)。

Solution Explorer里,双击Server Explorer上的School.sdf数据库。

Server Explorer里,展开School.sdf数据库,然后展开Tables

Enrollment上点击右键,选择Show Table Data,然后选择所有数据行,删除。

弹出确认删除框的时候,点击Yes

同样的步骤可以删除Person表里的数据(仅限于EnrollmentDate列为null并且Discriminator列位“Student”的数据)。

Server Explorer里,School.sdf上点击右键选择Close ConnectionSchool.sdf已经可以部署了。

5. 创建Membership数据库

Contoso University程序使用了ASP.NET membership和Form验证来验证和授权用户。其中有一个页面只能让administrators访问,查看这个页面,请运行程序,选择Courses选项连接下的Update Credits,程序将跳转到Login页面,因为这个页面只授权给了administrators。

使用账户"admin"和密码"Pas$w0rd"(其中的0是数字0,而不是字符o)登陆以后,你将可以看到Update Credits页面。

第一次部署站点的时候,通常需要排除所有的测试账户。这里,我们需要部署的数据仅需要一个administrator账户而非其它的用户账户。与其手工删除这些测试账户,不可以创建一个新的membership数据库,并且值包含一个生产环境用到的administrator账户。这里没有自动增加种子值(因为这是为School数据库创建的新库),如果你想再部署以后继续保持测试数据以便继续开发,那就需要事先备份一下测试数据库。

Solution Explorer里,重命名App_Data 文件夹下的aspnet.sdf 文件为aspnet-Dev.sdf。(不要复制,仅仅是重命名——一会你会再创建一个新数据库)。

Project菜单,选择ASP.NET Configuration 运行Web Site Administration Tool (WAT),然后选择Security选项卡。

点击Create or Manage Roles然后添加一个Administrator角色。

导航到Security选项卡,点击Create User然后添加用户"admin"作为一个administrator。点击Create User 页面上的Create User按钮之前,确保你选上了右边的Administrator check box以便将用户设置成Administrator角色。教程里用到的密码是: "Pas$w0rd",你可以输入任意email地址。

关闭浏览器,返回Solution Explorer,点击刷新refresh按钮你将看到新建立的aspnet.sdf文件。

右键aspnet.sdf文件,选择Include in Project将它包含到项目里。

6. 重命名生产环境数据库

没有必要为生产环境重命名数据库,但是如果这样做了,解决方案将会更加清晰:

重命名aspnet.sdf为aspnet-Prod.sdf

重命名School.sdf为School-Prod.sdf

这样,这两个数据就可以部署了

7. 为开发环境设置连接字符串

当你在Visual Studio里运行程序的时候,肯定不能用-Prod版本的数据库,而是要用-Dev版本的数据库,这时候你就需要修改Web.config文件里的数据库连接字符串,使之指向到-Dev版本的连接地址。(你还没创建School-dev.sdf文件,没事!,因为Code First会检查你有没有数据库,如果没有会自动帮你创建的,你所需要做的就是填写数据库的名称)。

打开Web.config文件,找到connection strings节点:

<configuration>
  <!-- Settings -->
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet.sdf" providerName="System.Data.SqlServerCe.4.0"/>
    <add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>
  <!-- Settings -->
</configuration>

将"aspnet.sdf"改成"aspnet-Dev.sdf",然后将"School.sdf" 改成"School-Dev.sdf":

<configuration>
  <!-- Settings -->
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet-Dev.sdf" providerName="System.Data.SqlServerCe.4.0"/>
    <add name="SchoolContext" connectionString="Data Source=|DataDirectory|School-Dev.sdf" providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>
  <!-- Settings -->
</configuration>

运行程序,然后访问一个页面(例如:Students页)让它来访问数据库。它将导致Code First 代码创建一个新数据库School-Dev.sdf。点击Solution Explorer里的Refresh,你可以发现这个数据库,右键该数据库选项Include in project将它包含到该项目。

SQL Server Compact数据库引擎和2个生产环境的数据库都已经准备好可以部署了。下一章内容将知道你如何自动设置Web.config的transformations ,一般为开发、测试、生产环境自动设置不同的参数。(其中就有设置开发和生产环境里都用到的数据库连接字符串)。

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

时间: 2024-08-02 16:56:51

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

微软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个数据库的数据库结构和相关的一些数据都须要部署.通常.开发系统的时候都会有一些測试数据,

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

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

微软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站点部署指南(9):部署数据库更新

1.  综述 不管什么时候,程序都有可能像代码更新一样更新数据库.本章节你将进行数据库修改,测试,然后部署到测试环境和生产环境. 提醒:如果根据本章节所做的操作出现错误信息或一些功能不正常的话,请务必check Troubleshooting页面. 2.  给表添加新列 本小节,将修改Student和Instructor实体共同的基类Person类,添加一个birth date字段,也要在展示页面的表格上添加一个新列. 在ContosoUniversity.DAL项目,打开Person.cs在类

微软ASP.NET站点部署指南(8):部署Code-Only更新

1.  综述 初始化部署以后,你需要继续维护和更新你的站点.本章节将向你展示一个不包括数据库改变的部署升级流程.(下一章节将展示数据库改变的部署升级流程.) 提醒:如果根据本章节所做的操作出现错误信息或一些功能不正常的话,请务必check Troubleshooting页面. 2.  修改代码 为你的程序做一个简单的修改,在Instructors 列表页添加一个功能,一般选择一个Instructor的时候能够显示该Instructors 的所有课程courses. 在Instructors页面可

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

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

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

1. 综述 本章节展示的是如何向完整版SQL Server 数据库部署一个数据库升级.与第9章的数据库升级部署有所不同(第9章是部署到SQL Server Compact数据库). 提醒:如果根据本章节所做的操作出现错误信息或一些功能不正常的话,请务必check Troubleshooting页面. 2. 给表添加新列 这个小节,做一个数据库修改和相应的代码更新,在部署到测试和生产环境之前,先在Visual Studio 里测试.修改内容是给Instructor 实体添加一个OfficeHour

Sql Server Compact 4.0数据库部署安装

Sql Server Compact 4.0相比3.5版本增强了很多,支持Entity Framework 4.1,对于轻量级应用来讲,使用Sql Server Compact 4.0是个很好的选择,而且部署相当方便,不需要 Sql Server Compact 4.0的安装包,仅需要发布相关的dll以及web.config配置即可. 开发环境下,需要安装 vs2010 sp1 Microsoft SQL Server Compact 4.0 Visual Studio 2010 SP1 Too

采用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