哈利路亚
学习笔记,新技术介绍,工作心得
posts - 7,comments - 34,trackbacks - 0

首先我们要简单了解一下vSphere整体设计结构。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

接下来开始做服务器吧。

一、先做ESXi5.0服务器

  1. 找到一台干净服务器(ESXi相当于操作系统,所以需要独立服务器)。要求支持硬件虚拟化!
  2. 使用UltraISO烧入U盘(方法同WinPE一样),然后启动系统U盘引导安装即可。
  3. 安装过程中选择一下安装分区,然后输入root密码即可完成安装。
  4. 本地客户端机器(个人PC或笔记本即可),输入ESXi服务器ip地址,打开如下页面,则说明安装成功。

    这时候可以下载vSphere Client安装一下,连接一下ESXi服务器体验一把。

    这时连接的时独立的服务器,所以清单只有一台机器。

二、再做vCenter

5. 再找一台安装好Windows 2003 或者 Windows2008 的服务器,来做vCenter服务器。

6. vCenter服务器一般都会加入域中,在安装之前要注意确认以下信息。

1) 登陆DNS服务器,查看是否讲vCenter服务器注册到DNS正向区域(一般这个都没问题)

2) 打开反向区域,将vCenter服务器注册到反向区域中,不然安装时完整名称验证过不了。(一般需要手动添加)

    3) vCenter机器最好不要安装IIS服务器(默认要使用80和8080端口,所以最好是独立服务器)

    4) 配置系统ODBC数据源,注意一定要是64位数据源。(应该不会有人用master数据库吧,当然要单独建库了)

    

7.安装vCenter

1)使用任意虚拟光驱软件载入

2)安装vCenter服务器

如果你听我的话机器没有安装IIS的话,则不会出现以下提示

密钥,自己想办法吧~

由于我这里已经安装过,就不在贴图了。

需要注意的就是那个完整名称,机器名.域名那里,如果验证过不了,就去确认反向DNS设置。

基本下一步就可以完成安装了。

下面的图来自网络

使用系统账号(本地账号)

或者使用域账号

这里根据需要设置。

这里因为是第一台vCenter服务器选择第一项,

第二项是多层结构管理时用的。

注意,上图是4.0的图,所以有所区别,但是这个完整域名称是一样的,要做反向DNS。

相关端口,最好默认,不然到处都要改!

Ok,开始安装吧

安装成功。

8. 使用vSphere Client连接vCenter测试。

    

    

创建数据中心首先。

    添加主机

    

    

可以分配许可证,这里评估

不锁定

选择位置

完成

 

至此,完成最基础的vSphere 结构,可以创建几台虚拟机体验一把了。

总体来说,由于Esxi独立于操作系统了,占用内存非常小,性能有极大提高,感觉还是不错滴~

posted @ 2011-12-09 12:52 哈利路亚 阅读(36) 评论(0) 编辑

Crm系统帮助

  1. 老师、学生申请系统帐号

在公司内登陆网址http://10.1.1.251:8008/UserReg.aspx

在公司外登陆网址http://124.128.92.226:8008/UserReg.aspx

 

  1. 老师的注册系统用户的页面

详细页面如下:

姓名:是系统中显示以及后期审核结算的名字,所以必须填写真实姓名

登陆用户名:是登陆系统时所用到的登陆名,填写完之后可点击查看是否可用 例如:zhaoyk

密码:是系统的登陆密码,密码格式要求为密码为 字母、数字和特殊字符的组合 例如:111@www

部门:选择负责的区域

角色:选择相对应的角色,如:驻点招办人员就选择,学生助理应选择

 

注册完成以后填写招生系统的登陆信息

 

 

  1. 学生注册页面

姓名:是系统中显示以及后期审核结算的名字,所以必须填写真实姓名

登陆用户名:是登陆系统时所用到的登陆名,填写完之后可点击查看是否可用 例如:zhouxw

密码:是系统的登陆密码,密码格式要求为密码为 字母、数字和特殊字符的组合 例如:111@www

主管老师:为驻点负责老师的系统登陆名称 如:如主管老师用户名为hisecallcenter\test,则输入test

修改招生系统密码

"设置"选项卡——"管理"——选择"用户"——打开自己的用户——修改信息——确定

用户姓名:为系统当前显示的名称 如:系统管理员

原密码:为系统当前密码

  1. 学生助理系统审核

招生主管可以通过自己的用户审核自己的学生助理的系统

"设置"选项卡——"管理"——选择"用户"——打开自己的用户——辅助学生审核——审核

 

点击"审核"以后会弹出

然后点击"添加AD用户"——点击"添CRM用户"——关闭窗口

 

  1. 数据导入

    1. 导出格式文件

数据导入前,请先打开招办名单,

然后,手工新建一条比较完整的记录保存.

选择招办名单数据导入视图

然后点 将视图导出,导出后将文件改为文件.

数据导出excle打开会有显示的表题的列

在空白地方补充新的数据.

将文件另存为csv文件

 

  1. 数据导入

然后进行导入工作

我的工作区——导入——新建——浏览(选择需要上传的.csv 文件)——下一步

选记录类型, 在这里我们需要选择"招办名单"——下一步——在下一个页面单击"下一步"——在下一个页面单击"完成"

  1. 导入错误分析

在导入的列表中能列出导入数据情况.

双击错误,能分析错误的原因

可以知道哪一行错误了,错误的原因是什么.

posted @ 2010-06-10 08:48 哈利路亚 阅读(27) 评论(0) 编辑

揭开Socket编程的面纱

对 TCP/IP 、 UDP 、 Socket 编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:


1. 什么是 TCP/IP、UDP?
2. Socket在哪里呢?
3. Socket是什么呢?
4. 你会使用它们吗?

什么是TCP/IP、UDP?

TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。
这里有一张图,表明了这些协议的关系。

图1

TCP/IP协议族包括运输层、网络层、链路层。现在你知道TCP/IP与UDP的关系了吧。

当然对于编程人员来说还有最重要的一点:TCP/IP协议中包含自动验证数据有效性机制,如果传输过程中丢包,系统会自动请求数据包重发。而UDP则不考虑丢包问题。当然UDP没有验包机制,自然性能会有所提高。

 

Socket在哪里呢?

在图1中,我们没有看到Socket的影子,那么它到底在哪里呢?还是用图来说话,一目了然。



图2

原来Socket在这里。

 

Socket是什么呢?

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。通俗的来说:Socket并不是网络传输协议,他只是对网络传输协议进行了封装,从而使得可以在前台使用相同方法进行基于TCP协议与UDP协议的通讯了。

 

你会使用它们吗?

前人已经给我们做了好多的事了,网络间的通信也就简单了许多,但毕竟还是有挺多工作要做的。以前听到Socket编程,觉得它是比较高深的编程知识,但是只要弄清Socket编程的工作原理,神秘的面纱也就揭开了。
一个生活中的场景。你要打电话给一个朋友,先拨号,朋友听到电话铃声后提起电话,这时你和你的朋友就建立起了连接,就可以讲话了。等交流结束,挂断电话结束此次交谈。 生活中的场景就解释了这工作原理,也许TCP/IP协议族就是诞生于生活中,这也不一定。

图3

先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

TCP/IP协议引入了下列几个概念

端口 

网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源。 

按照OSI七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信能力。从这个意义上讲,网络通信的最终地址就不仅仅是主机地址了,还包括可以描述进程的某种标识符。为此,TCP/IP协议提出了协议端口(protocol port,简称端口)的概念,用于标识通信的进程。 

端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(即进程)通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。在TCP/IP协议的实现中,端靠纪纪作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问之。 

类似于文件描述符,每个端口都拥有一个叫端口号(port number)的整数型标识符,用于区别不同端口。由于TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,如TCP有一个255号端口,UDP也可以有一个255号端口,二者并不冲突。 

端口号的分配是一个重要问题。有两种基本分配方式:第一种叫全局分配,这是一种集中控制方式,由一个公认的中央机构根据用户需要进行统一分配,并将结果公布于众。第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回一个本地唯一的端口号,进程再通过合适的系统调用将自己与该端口号联系起来(绑扎)。TCP/IP端口号的分配中综合了上述两种方式。TCP/IP将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。因此,每一个标准服务器都拥有一个全局公认的端口(即周知口,well-known port),即使钥纪纪同机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCP和UDP均规定,小于256的端口号才能作保留端口。 

 

地址 

网络通信中通信的两个进程分别钥纪纪同的机器上。在互连网络中,两台机器可能位涌纪纪同的网络,这些网络通过网络互连设备(网关,网桥,路由器等)连接。因此需要三级寻址: 

1. 某一主机可与多个网络相连,必须指定一特定网络地址; 
2. 网络上每一台主机应有其唯一的地址; 
3. 每一主机上的每一进程应有在该主机上的唯一标识符。 

通常主机地址由网络ID和主机ID组成,在TCP/IP协议中用32位整数值表示;TCP和UDP均使用16位端口号标识用户进程。 

网络字节顺序 

不同的计算机存放多字节值的顺序不同,有的机器在起始地址存放低位字节(低价先存),有的存高位字节(高价先存)。为保证数据的正确性,在网络协议中须指定网络字节顺序。TCP/IP协议使用16位整数和32位整数的高价先存格式,它们均含在协议头文件中。 

连接 

两个进程间的通信链路称为连接。连接在目纪纪表现为一些缓冲区和一组协议机制,在外部表现出比无连接高的可靠性。 

半相关 

综上所述,网络中用一个三元组可以在全局唯一标志一个进程: 
(协议,本地地址,本地端口号) 
这样一个三元组,叫做一个半相关(half-association),它指定连接的每半部分。 

全相关 

一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。也就是说,不可能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信需要一个五元组来标识: 

(协议,本地地址,本地端口号,远地地址,远地端口号) 

这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。 

 

顺序

在网络传输中,两个连续报文在端-端通信中可能经过不同路径,这样到达目的地时的顺序可能会与发送时不同。"顺序"是指接收数据顺序与发送数据顺序相同。TCP协议提供这项服务。

差错控制

保证应用程序接收的数据无差错的一种机制。检查差错的方法一般是采用检验"检查和(Checksum)"的方法。而保证传送无差错的方法是双方采用确认应答技术。TCP协议提供这项服务。

流控制

在数据传输过程中控制数据传输速率的一种机制,以保证数据不被丢失。TCP协议提供这项服务。

字节流

字节流方式指的是仅把传输中的报文看作是一个字节序列,不提供数据流的任何边界。TCP协议提供字节流服务。

 

客户/服务器模式

在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式(Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的建立基于以下两点:首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是基涌纪纪户/服务器模式的TCP/IP。

客户/服务器模式钥纪纪作过程中采取的是主动请求方式:

首先服务器方要先启动,并根据请求提供相应服务:

1. 打开一通信通道并告知本地主机,它愿意在某一公认地址上(192。168.1.100:12345)接收客户请求;

2. 等待客户请求到达该端口;

3. 接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要激活一新进程来处理这个客户请求。新进程处理此客户请求,并不需要对其它请求作出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。

4. 返回第二步,等待另一客户请求。

5. 关闭服务器


客户方:

1. 打开一通信通道,并连接到服务器所在主机的特定端口;
2. 向服务器发服务请求报文,等待并接收应答;继续提出请求......
3. 请求结束后关闭通信通道并终止。

从上面所描述过程可知:
1. 客户与服务器进程的作用是非对称的,因此编码不同。
2. 服务进程一般是先涌纪纪户请求而启动的。只要系统运行,该服务进程一直存在,直到正常或强迫终止。

 

套接字类型

TCP/IP的socket提供下列三种类型套接字。

流式套接字(SOCK_STREAM)

提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。文件传送协议(FTP)即使用流式套接字。

数据报式套接字(SOCK_DGRAM)

提供了一个无连接服务。数据包以独立包形式被发送,不提供无错保证,
数据可能丢失或重复,并且接收顺序混乱。网络文件系统(NFS)使用数据报式套接字。

原始式套接字(SOCK_RAW)

该接口允许对较低层协议,如IP、ICMP直接访问。常用于检验新的协议实现或访问现有服务中配置的新设备。

 

 

 

基本套接字系统调用

创建套接字──socket()

应用程序在使用套接字前,首先必须拥有一个套接字,系统调用socket()向应用程序提供创建套接字的手段,其调用格式如下:

Socket(AddressFamily, SocketType, ProtocolType) 使用指定的地址族、套接字类型和协议初始化 Socket 类的新实例。

AddressFamily:指定 Socket 类的实例可以使用的寻址方案。(InterNetwork是只基于IPv4。)

SocketType:指定 Socket 类的实例表示的套接字类型。(Stream支持可靠、双向、基于连接的字节流,而不重复数据,也不保留边界。此类型的 Socket 与单个对方主机进行通信,并且在通信开始之前需要远程主机连接。Stream使用传输控制协议ProtocolType.TcpAddressFamily. InterNetwork。)

ProtocolType: 指定 Socket 类支持的协议。(TCP 基于TCP协议。)

 

指定本地地址──bind()

当一个套接字用socket()创建后,存在一个名字空间(地址族),但它没有被命名。bind()将套接字地址(包括本地主机地址和本地端口地址)与所创建的套接字号联系起来,即将名字赋予套接字,以指定本地半相关。其调用格式如下:

public void Bind(EndPoint localEP)

使 Socket 与一个本地终结点相关联。地址在建立套接字通信过程中起着重要作用,作为一个网络应用程序设计者对套接字地址结构必须有明确认识。(IP+端口)

 

建立套接字连接──connect()与accept()

这两个系统调用用于完成一个完整相关的建立,其中connect()用于建立连接。无连接的套接字进程也可以调用connect(),但这时在进程之间没有实际的报文交换,调用将从本地操作系统直接返回。这样做的优点是程序员不必为每一数据指定目的地址,而且如果收到的一个数据报,其目的端口未与任何套接字建立"连接",便能判断该端靠纪纪可操作。而accept()用于使服务器等待来自某客户进程的实际连接。

connect()的调用格式如下:

 

public void Connect(IPAddress address,int port)

address:远程主机IP地址

port:远程主机端口号

 

accept()的调用格式如下:

 

public Socket Accept()

Accept 以同步方式从侦听套接字的连接请求队列中提取第一个挂起的连接请求,然后创建并返回新的 Socket

 

监听连接──listen()

此调用用于面向连接服务器,表明它愿意接收连接。listen()需在accept()之前调用,其调用格式如下:

public void Listen(int backlog)

backlog:表示请求连接队列的最大长度,用于限制排队请求的个数。如果没有错误发生,listen()返回0。若要确定可指定的最大连接数,请检索 MaxConnections

 

listen()在执行调用过程中可为没有调用过bind()的套接字s完成所必须的连接,并建立长度为backlog的请求连接队列。

调用listen()是服务器接收一个连接请求的四个步骤中的第三步。它在调用socket()分配一个流套接字,且调用bind()给s赋于一个名字之后调用,而且一定要在accept()之前调用。

 

数据传输──send()与Receive ()

当一个连接建立以后,就可以传输数据了。常用的系统调用有send()和Receive ()。

Send()用于发送数据,常用格式如下:

 

public int Send(byte[] buffer)

 

buffer:Byte 类型的数组,它包含要发送的数据

返回值:已发送到Socket的字节个数

 

Receive()方法用于接收数据,常用格式如下:

 

public int Receive(byte[] buffer)

 

buffer:Byte 类型的数组,它是存储接收到的数据的位置。

返回值:接收到数据个数。

 

关闭套接字──Close ()

close()关闭套接字s,并释放分配给该套接字的资源;如果s涉及一个打开的TCP连接,则该连接被释放。close()的调用格式如下:

 

public void Close()

 

Close 方法可关闭远程主机连接,并释放所有与 Socket 关联的托管资源和非托管资源。关闭后,Connected 属性将设置为 false。对于面向连接的协议,建议先调用 Shutdown,然后再调用 Close 方法。这可以确保在已连接的套接字关闭之前,已发送和接收该套接字上的所有数据。

 

典型套接字使用实例

基于WinForm实现两台计算机通讯实例。

 

服务器

界面如下:

代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net.Sockets;

using System.Net;

using System.Threading;

 

namespace Server

{

public partial class Form1 : Form

{

// 服务器端Socket对象,用于监听

Socket sock = null;

 

// 客户端Socket对象,保持1个客户端连接

Socket client = null;

 

// 监听线程

Thread th = null;

 

public Form1()

{

InitializeComponent();

 

// 声明不做线程间调用验证,不然报错

System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;

}

 

private void btnStart_Click(object sender, EventArgs e)

{

if (sock != null)

return;

// 创建服务端Socket对象,基于IPv4,流,TCP

sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

 

// 创建端点 监听所有地址,12345端口

IPEndPoint ip = new IPEndPoint(IPAddress.Any, 12345);

 

// Bind

sock.Bind(ip);

 

// 开始监听

sock.Listen(5);

 

// 创建监听线程

th = new Thread(new ThreadStart(Receive));

 

// 设置后台线程

th.IsBackground = true;

 

// 启动线程

th.Start();

}

 

public void Receive()

{

// 等待客户端连接

client = sock.Accept();

 

// 开始监听信息

while (true)

{

byte[] buffer = new byte[1024];

int len = client.Receive(buffer);

string mess = "Client:"+Encoding.UTF8.GetString(buffer, 0, len);

rtbShow.AppendText(mess + "\r\n");

Thread.Sleep(500);

}

}

 

private void btnSend_Click(object sender, EventArgs e)

{

client.Send(Encoding.UTF8.GetBytes(txtSend.Text));

rtbShow.AppendText("Server:"+txtSend.Text + "\r\n");

}

 

private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

// 窗体关闭 挂起线程

if (th != null)

th.Abort();

 

}

}

}

 

 

 

 

客户端

界面:

代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net.Sockets;

using System.Net;

using System.Threading;

 

namespace Client

{

public partial class Form1 : Form

{

Socket server = null;

Thread th = null;

public Form1()

{

InitializeComponent();

System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;

}

 

private void btnConnect_Click(object sender, EventArgs e)

{

if (server != null)

return;

server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

IPAddress ip = IPAddress.Parse("127.0.0.1");

server.Connect(ip, 12345);

th = new Thread(new ThreadStart(Receive));

th.IsBackground = true;

th.Start();

}

 

private void Receive()

{

while (true)

{

byte[] buffer = new byte[1024];

int len =server.Receive(buffer);

rtbShow.AppendText("Server:" + Encoding.UTF8.GetString(buffer, 0, len) + "\r\n");

Thread.Sleep(500);

}

}

 

private void btnSend_Click(object sender, EventArgs e)

{

server.Send(Encoding.UTF8.GetBytes(txtSend.Text));

rtbShow.AppendText("client:"+txtSend.Text+"\r\n");

}

 

private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

if (th != null)

th.Abort();

}

}

}

posted @ 2010-03-23 15:59 哈利路亚 阅读(68) 评论(0) 编辑

Server 2008 R2 上面安装 SharePoint 2007

         最近想要学习SharePoint,开始的时候用的vpc,做的Server2003,等布置好Moss后发现启动运行都有点慢,所以想直接使用Win7的新特性,直接挂接VHD引导系统。这样可以获得和物理机几乎相同的性能。但是VHD只支持Win7内核系统挂接,所以装了Server 2008 R2。问题就随之而来了。

         大家都知道MOSS2007是微软基于Server2003开发的,所以你直接在 Server2008 R2上面是根本无法安装。查了好多资料,终于在一日文网站上找到了解决方法。(汗一个)。下面给大家说一下。

 

系统说明:

机器 ThinkPad T400 AJ1

物理机系统:Win7 x64

虚拟机系统:Server 2008 R2 x64(只有x64版本)

流程:

1.       首先创建VHD,并灌入了Server 2008 R2,然后配置win7 启动项,直接引导入Server 2008 R2 ,有关知识请google一下吧,这里不像细说明了。

2.       SharePoint 2007 安装程序从虚拟光盘中复制到硬盘中来,需要对安装程序做点手脚。

3.       Server 2008 R2上面安装SharePoint 2007 需要SP2补丁,安装的时候会给你提示,但是你无法运行安装程序的。所以不能够先安装完,再打补丁。(问题就在这了)。

4.       去下载Windows SharePoint Services 3.0 SP2 Office SharePoint Server 2007 SP2

5.       打开CMD命令窗口,如果带UAC最好管理员运行。

6.       现在我们要做的是吧两个SP2补丁解压缩到SharePoint安装目录下的Update中,执行如下命令:

a)         wssv3sp2-kb953338-x64-fullfile-zh-cn.exe /extract:”E:\SharePoint2007 SetupFile\Updates” /quiet

b)         officeserver2007sp2-kb953334-x64-fullfile-zh-cn.exe /extract:”E:\SharePoint2007 SetupFile\Updates” /quiet

黑体字为SharePoint2007安装程序目录下的Updates目录,自行修改。

7.       然后你会发现Updates目录下面多出了很多东西,那就是这两个SP2了。

8.       最终要的一步,千万不要漏掉,删除wsssetup.dll不然依然无法安装。

9.       最后运行setup进行安装吧,一路下一步就OK了。

 

本人使用上述方法成功在Server 2008 R2上面安装了SharePoint 2007,目前运行暂时未出现任何问题,希望对大家有帮助。

posted @ 2009-10-10 12:10 哈利路亚 阅读(1149) 评论(2) 编辑

    SQL Server 2008 带给大家的新特性之一就是 Entity Data Model 。使用它可以很方便的创建数据模型,并且它和Linq有着近乎完美的结合。这次我们就一起来体验下 Entity Data Model 给我们带来的便利。

    先来说下我的系统环境:

    1. Windows Server 2003

    2. VS2008

    3. SQL Server 2008

    4. Pubs2数据库

    注意,使用Entity Data Model 是 SQL Server 2008 带给我们的新特性,所以不能使用SQL Server 2005 来做实验。

    好,下面我们进入正题

1. 启动Visual Studio 2008。

2. 创建一个 Console Application 项目 pubs2edmapp。

image

3. 在右侧Solution Explorer 中,右键点击项目 pubs2edmapp,然后点击Add New Item,在 Add New Item 对话框中选择 ADO.net Entity Data Model。将新建项目命名为pubs2.edmx,然后点击ADD。

image

image

4. 在Entity Data Model Wizard 对话框中,选择 Generate from database. 然后点击Next。

image

5. 点击 New Connection. 在 Choose Data Source 对话框中,选择 Microsoft SQL Server 并点击 Continue: 在 Connection Property 对话框中的 Server 文本框中选择数据库实例,然后在 Select or enter a database name 中选择 Pubs 。

image

image

image

6. 勾选 Save Entity Connection string in App.Config 并保留默认设置,点击 Next。

image

7. 在 Choose You Database Objects 对话框中,选中 Tables,Views,以及 Stored Procedures.在 Model Namespace 中设置为 pubsModel.点击Finish.

image

8. 此时会出现图形化的 Object Relational Designer 面板。

image

9. 保存模型。

image

Model Browser 中的 Entity 实体。可以看到 Table , Views , Stored Procedures 都被加载了进来。

10. 点击 Build 菜单下的 Build Solution 编译项目。

image

11. 打开 Program.cs 在 Main 方法中,实例化pubsEntities . 将变量命名为 model.

image

12. 为了能够看到生成的 T-SQL 语句,我们创建一个 helper 类,其中包含一个 helper 方法。

image

注意上面的 using System.Data.Objects; 的引用。Helper 实际上是扩展的Linq,这也是vs08的新特性,有兴趣的自己去研究吧。

13. 打开 ObjectContext 的连接。

image

14. 新建一个名为 SimpleQueries 的 public static 方法,将 pubsEntities 作为输入参数且无返回值。在这个方法中我们使用 Linq 查询。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pubs2endmapp
{
    class Program
    {
        static void Main(string[] args)
        {
            pubs2endmapp.pubsEntities1 model = new pubsEntities1();
            model.Connection.Open();
            SimpleQueries(model);
            model.Connection.Close();
            Console.Read();
        }

        public static void SimpleQueries(pubsEntities1 model)
        {
            var query1 = from a in model.authors
                         select new { a.au_id, a.au_fname, a.au_lname };
            foreach (var query in query1)
            {
                Console.WriteLine("au_id:{0,-20} au_fname:{1,-20} au_lname:{2,-20}"
                    ,query.au_id,query.au_fname,query.au_lname);
            }
            Console.WriteLine("SQL: " + query1.ToTraceString());
        }
    }
}

完整代码如上。

15. 编译并执行代码。

image

实验到此结束。

现在我们可以很简单的通过 Linq 实现数据库的操作了。

作者:王文斌

2009年4月13日

转载请注明出处

 

代码及数据库备份下载

posted @ 2009-04-13 19:36 哈利路亚 阅读(2285) 评论(20) 编辑
摘要: 数据库快照大家都知道吗?是不是有很多人没深入研究过呀。那么我们就来动手实验一下Sql Server 2008 的数据库快照功能吧! 首先,先来简单介绍一下数据库快照。 数据库快照其实也是一个数据库,不过他是系统定义好格式的,不需要手动创建,配置过程中会由系统自动创建,这点要先了解。 其次,数据库快照使用NTFS分区所提供的稀疏文件技术,这样文件在逻辑上可以很大,但是物理上却非常小。数据库快照...阅读全文
posted @ 2009-04-10 21:13 哈利路亚 阅读(1850) 评论(4) 编辑
摘要: Sql Server2008 推出了已经有一段时间了,这里给大家介绍一下 Sql Server2008 的一个很不错的新特性,Resource Governor。 相信大家都遇到过,一个服务器上面运行多个数据库的情况,如果1个数据库占用资源过多,很可能直接导致另外一个数据库无法处理,直到超时的情况。过去这种情况基本无法处理(当然不排除使用三方程序处理的方法)。嘿嘿,在新的Sql Server 20...阅读全文
posted @ 2009-04-07 20:09 哈利路亚 阅读(1718) 评论(8) 编辑