当前位置:数据库 > SQLServer >>

微软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目录下的x86amd64 子文件夹,但是项目默认是没有这些子文件夹的,结果就是在部署的时候这些文件不会copy到目标站点,需要手工来做这些事情。(默认的部署配置就是这样的,另外一个选择(该教程没有使用),你可以修改配置行为来达到目的,请查看Configuring Project Properties 来获取资料。不推荐这样做,因为部署的时候会带给生成环境很多文件。)

 

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

 \

展开bin文件夹可以看到有amd64和x86子文件夹,选择这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 Connection。School.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选项卡。

补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,