ASP.NET系统数据库一键式部署策略

原创 2012年03月27日 13:51:57

ASP.NET系统数据库部署策略主要是将创建数据库、Membership数据库、添加Membership用户、创建数据库表、向数据库中插入数据等脚本,分别组织在单独的脚本文件中,然后由一个入口批处理文件通过osql命令调用执行各个脚本,这样,只需要运行批处理文件数据库部署就可以完成,下面是这个过程中比较细节的一些技术。

1、Membership数据库

在很多中小型应用中使用Membership数据库是一个很好的选择,这样可以使得工作的重点更多地放在业务逻辑中,而不用考虑用户权限等问题,Membership数据库部署的批处理命令如下:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S localhost -E -A all -d [dbName]

2、导入Membership用户

添加了Membership数据库之后我们需要添加初始用户,即管理员用户,在一键式部署中,我们需要用脚本进行创建,用脚本创建自然是调用membership的SP aspnet_Membership_CreateUser,然后这个存储过程最复杂的是构造其密码和salt,密码需要进行sha1加密,这是推荐的做法,而这种加密的过程并不在数据库层次上,因此我们需要在自己的脚本中写加密过程,下面是添加用户的脚本。

USE [db]

SET QUOTED_IDENTIFIER ON;
GO

declare @salt nvarchar(128)
declare @password varbinary(256)
declare @input varbinary(512)
declare @hash varchar(64)

-- Change these values (@salt should be Base64 encoded)
set @salt = N'eyhKDP858wdrYHbBmFoQ6DXzFE1FB+RDP4ULrpoZXt6f'
set @password = convert(varbinary(256),N'Password123')

set @input = hashbytes('sha1',cast('' as  xml).value('xs:base64Binary(sql:variable(''@salt''))','varbinary(256)') + @password)
set @hash = cast('' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable(''@input'')))','varchar(64)')

-- @hash now contains a suitable password hash
-- Now create the user using the value of @salt as the salt, and the value of @hash as the password (with the @PasswordFormat set to 1)

DECLARE @return_value int,
  @UserId uniqueidentifier

EXEC @return_value = [dbo].[aspnet_Membership_CreateUser]
  @ApplicationName = N'/',
  @UserName = N'Admin',
  @Password = @hash,
  @PasswordSalt = @salt,
  @Email = N'Admin@icardpay.com',
  @PasswordQuestion = N'Whats your favorite color',
  @PasswordAnswer = N'Green',
  @IsApproved = 1,
  @CurrentTimeUtc = '2012-02-01',
  @CreateDate = '2012-02-01',
  @UniqueEmail = 1,
  @PasswordFormat = 1,
  @UserId = @UserId OUTPUT

SELECT @UserId as N'@UserId'

SELECT 'Return Value' = @return_value 


3、用Osql运行脚本

在批处理文件中可以直接调用osql命令调用各脚本文件执行sql,下面是批处理文件的例子:

@Echo Off
cls

REM ***************************************************************************
REM **
REM **        Name: InstallDatabases
REM **        Desc: SQL Server Database Setup for Pet Shop 4 Application.
REM **
REM **        Date: 10/24/2005
REM **
REM **************************************************************************/

@Echo.
@Echo *******************************************************************************
@Echo *                                                                             *
@Echo * Pet Shop 4 Database Setup Script                                            *
@Echo *                                                                             *
@Echo *                                                                             *
@Echo * This script will create Pet Shop 4 databases and register them              *
@Echo * for Sql Cache Dependency. You should have SQL Server 2005 installed         *
@Echo * on you local machine as default instance.                                   *
@Echo *                                                                             *
@Echo * Modify this script to reflect the way you connect to the SQL Server         *
@Echo * as well as if location of the .NET 2.0 runtime on your computer             *
@Echo * is different from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727.            *
@Echo *                                                                             *
@Echo * If you wish to cancel, press [CTRL]-C to terminate the batch job.           *
@Echo *                                                                             *
@Echo *******************************************************************************
@Echo. 
pause

@Echo.
@Echo.
@Echo *******************************************************************************
@Echo * Creating Databases...                                                       *
@Echo *******************************************************************************
@Echo. 

osql -E -i CreateDatabase.sql
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S localhost -E -A all -d ICardPay

@Echo.
@Echo.
@Echo *******************************************************************************
@Echo * Configuring Logins...                                                       *
@Echo *******************************************************************************
@Echo. 

osql -E -i CreateUser.sql

@Echo.
@Echo.
@Echo *******************************************************************************
@Echo * Creating Tables...                                                          *
@Echo *******************************************************************************
@Echo. 

osql -E -i CraateTable.sql

@Echo.
@Echo.
@Echo *******************************************************************************
@Echo *                                                                             *
@Echo * Database Setup Complete                                                     *
@Echo *                                                                             *
@Echo *******************************************************************************
@Echo.
pause


Asp.Net 网站一键部署技术(下)

上一篇我们讲了服务端的配置,现在我们来说说客户端的配置。   0x01: 使用Visual Studio发布向导创建发布配置文件 然后新建配置文件,因为我们的网站可能会发布到多个地方,比如...

使用jenkins进行一键式部署项目

1:下载jenkins.war 2:将war放入tomcat启动,即可访问jenkins 3:首次进入需要安装插件,好像需要翻墙 4:安装完以后,注册用户 5:安装 m...

浅析SuperMap iObject .NET开发完成后私有部署,打包安装

浅析SuperMap iObject .NET开发完成后私有部署,打包安装

Apache 代替IIS,Apache下运行 ASP.NET,并且打包,实现一键安装

Apache代替IIS运行ASP.net,并实现一键安装  前言   众所周知Asp.net运行,是仰仗IIS的。但是IIS有很大的弊端,安装维护太麻烦,不太稳定经常出一些奇奇怪怪的 错误,对于经常用...

asp.net怎样一键生成静态页面,实例说明

由浅到深,通过实例来说明怎样使页面一键静态化,然后从效益出发,轻讨如何在实际应用中更灵活运用此功能。。...

Jenkins 实现.net项目一键部署

一、下载安装Jenkins  :  官网地址 https://jenkins.io/index.html   安装没什么特殊的 常规安装即可。安装后默认占用8080端口。可通过浏览器访问。 二、配置:...

在ASP.NET中使用SQL Server作为数据库,DB First方式使用EF(EntityFramework)进行开发和部署时的connectionString

这个问题困扰了我一个下午,项目采用的是VS2015,DB使用的是SQL Server2014. 在项目中生成EF时(*.edmx),因为是本机数据库,当时选择的是windows的连接方式,这样生成了...

部署一个安全的ASP.NET MVC 5应用程序成员、OAuth和SQL Azure网站数据库

推特 发现更多的资源为这些服务: 网站 sql数据库 发现更多的资源: net 部署一个安全的ASP.NET  MVC 5应用程序成员、OAuth和SQL Azure网站数...
  • Litt_J
  • Litt_J
  • 2015年01月06日 02:14
  • 2319

Asp.net(C#)和创建SQL数据库(.sql)文件的打包部署安装 并创建iis

转自:http://blog.csdn.net/xiaohutu626/archive/2010/12/28/6102200.aspx 一).创建部署项目1. 打开VS.NET。2.在“文件”菜单上指...
  • zzllabc
  • zzllabc
  • 2011年06月17日 15:38
  • 693
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET系统数据库一键式部署策略
举报原因:
原因补充:

(最多只允许输入30个字)