文档库 最新最全的文档下载
当前位置:文档库 › 数据库镜像-sql2005-三种模式

数据库镜像-sql2005-三种模式

数据库镜像-sql2005-三种模式
数据库镜像-sql2005-三种模式

数据库镜像搭建

一概述

数据库镜像是SQL SERVER 2005用于提高数据库可用性的新技术。数据库镜像将事务日志记录直接从一台服务器传输到另一台服务器,并且能够在出现故障时快速转移到备用服务器。可以编写客户端程序自动重定向连接信息,这样一旦出现故障转移就可以自动连接到备用服务器和数据库。

优势:数据库镜像可以在不丢失已提交数据的前提下进行快速故障转移,无须专门的硬件,并且易于配置和管理。

二环境准备

操作系统:Window 2003 enterprise sp2(至少两台,如要启用自动故障转移,必需三台) SQL版本:MSSQL SERVER 2005 SP3

检查SQL SERVER版本:

exec xp_msver

select SERVERPROPERTY('productlevel')

数据库准备:准备一个数据库:ccerp_jzt ,备份此数据库还原到另外一台机器上,另外一台必须是with no recovery

这里我假设服务器A,B,C

A为主体服务器,B为镜像服务器,C为见证服务器

A服务器

use master

go

restore filelistonly from

disk=N'f:\databak\ccerp_jzt_backup_200911250100.bak'

restore database ccerp_jzt from

disk=N'f:\databak\ccerp_jzt_backup_200911250100.bak'with

replace,recovery,

move'ccerp_ydswzip_Data'to'd:\data\ccerp_jzt.mdf',

move'ccerp_ydswzip_Log'to'd:\data\ccerp_jzt_log.ldf'

exec sp_helpdb'ccerp_jzt'

backup database ccerp_jzt to disk=N'f:\databak\sk.bak'with init --更改恢复模式

alter database ccerp_jzt set recovery full

B服务器:

CREATE DATABASE ccerp_jzt

ON

(NAME= Sales_dat,

FILENAME='d:\data\ccerp_jzt.mdf',

SIZE= 10

)

LOG ON

(NAME='ccerp_jzt_log',

FILENAME='d:\data\ccerp_jzt_log.ldf',

SIZE= 5MB

)

GO

restore filelistonly from disk=N'f:\xxzx\data\sk.bak'

use master

go

restore database ccerp_jzt from disk=N'f:\xxzx\data\sk.bak'with replace,norecovery,

exec sp_helpdb'ccerp_jzt'

C服务器只要装上SQL SERVER 2005就可以,无需其他准备

准备完成后如下图所示:

三三种模式的搭建

数据库镜像要建立必需得建立信任关系,那么在WIN环境下建立信任关系可以通过三种方式:域帐户,证书信任,windows 匿名登陆,现就前两种模式做配置说明.

3.1 域帐户模式:

3.1.1 更改mssqlserver服务的的登陆方式为域帐户登陆方式:

进入windows服务管理控制台,更改服务登陆帐户,使域账户有更改MSSQL SERVER服

务状态的权限.三台机器都做同样设置

3.1.2 建立端点:

通过图形界面建立端点:

启动SQLWB,按图一直下一步

用域帐户登陆如果成功则:

3.2 证书模式

3.2.1建立证书&端点

参与数据库镜像会话的服务器必须彼此信任。对于本地通信而言,例如一个域内的通信,信任意味着SQL Server实例登陆账号必须有权限连接到其他镜像服务器,也包括endpoints。首先在每个服务器上使用CREATE LOGIN命令,然后使用GRANT CONNECT ON ENDPOINT命令.非信任域之间的通信必须使用证书。如果使用CREATE CERTIFICATE 语句创建自签名的证书,基本上所有数据镜像证书的要求都可以满足。确认在CREA TE CERTIFICATE语句中将证书标记为ACTIVE FOR BEGIN_DIALOG。

一建立证书:

镜像服务器上执行:

USE master;

CREATE MASTER KEY ENCRYPTION BY PASSWORD='TEST';

CREATE CERTIFICATE HOST_A_cert WITH SUBJECT='HOST_A certificate', START_DATE='2010-03-10';

主体服务器上执行:

USE master;

CREATE MASTER KEY ENCRYPTION BY PASSWORD='TEST';

CREATE CERTIFICATE HOST_B_cert WITH SUBJECT='HOST_B certificate', START_DATE='2010-03-10';

见证服务器上执行:

USE master;

CREATE MASTER KEY ENCRYPTION BY PASSWORD='TEST';

CREATE CERTIFICATE HOST_C_cert WITH SUBJECT='HOST_C certificate', START_DATE='2010-03-10';

二建立端点:

镜像服务器上执行:

--create mirror endpoint on primary A

CREATE ENDPOINT Endpoint_Mirroring

STATE=STARTED AS

TCP(LISTENER_PORT=5022 ,LISTENER_IP=ALL)

FOR DATABASE_MIRRORING

(AUTHENTICATION=CERTIFICATE HOST_A_cert ,ENCRYPTION=REQUIRED ALGORITHM AES ,ROLE=ALL);

主体服务器上执行:

--Create endpoint on mirror server B

CREATE ENDPOINT Endpoint_Mirroring

STATE=STARTED

AS

TCP(LISTENER_PORT=5022 ,LISTENER_IP=ALL)

FOR

DATABASE_MIRRORING

(AUTHENTICATION=CERTIFICATE HOST_B_cert ,ENCRYPTION=REQUIRED ALGORITHM AES ,ROLE=ALL);

见证服务器上执行:

--Create endpoint on witness server C

CREATE ENDPOINT Endpoint_Mirroring

STATE=STARTED

AS

TCP(LISTENER_PORT=5022 ,LISTENER_IP=ALL)

FOR

DATABASE_MIRRORING

(AUTHENTICATION=CERTIFICATE HOST_C_cert ,

ENCRYPTION=REQUIRED ALGORITHM AES ,ROLE=witness);

SELECT*FROM sys.database_mirroring_endpoints;

证书互备:

镜像服务器上执行:

--backup certificate

BACKUP CERTIFICATE HOST_A_cert TO FILE='e:\HOST_A_cert.cer'

主体服务器上执行

--backup certificate

BACKUP CERTIFICATE HOST_B_cert TO FILE='e:\HOST_B_cert.cer'

见证服务器上执行:

BACKUP CERTIFICATE HOST_c_cert TO FILE='e:\HOST_C_cert.cer'

将备份到的证书进行互换,即HOST_A_cert.cer复制到B机的e:\ 将HOST_B_cert.cer复制到A 机的E:\,也就是每台服务器有三个证书

三:建立登陆用户:

镜像服务器上执行:

--Create user

CREATE LOGIN HOST_B_login WITH PASSWORD='test';

CREATE USER HOST_B_user FOR LOGIN HOST_B_login;

CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE= 'e:\HOST_B_cert.cer';

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];

CREATE LOGIN HOST_C_login WITH PASSWORD='test';

CREATE USER HOST_C_user FOR LOGIN HOST_c_login;

CREATE CERTIFICATE HOST_c_cert AUTHORIZATION HOST_c_user FROM FILE= 'e:\HOST_c_cert.cer';

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_c_login]; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];

--query user sid

select loginname,name,sid From syslogins

主体服务器上执行:

--Create user

CREATE LOGIN HOST_A_login WITH PASSWORD='test';

CREATE USER HOST_A_user FOR LOGIN HOST_A_login;

CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE= 'e:\HOST_A_cert.cer';

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];

-- add witness user

CREATE LOGIN HOST_C_login WITH PASSWORD='test';

CREATE USER HOST_C_user FOR LOGIN HOST_c_login;

CREATE CERTIFICATE HOST_c_cert AUTHORIZATION HOST_c_user FROM FILE= 'e:\HOST_c_cert.cer';

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_c_login];

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];

--query sid

select loginname,name,sid From syslogins

见证服务器上执行:

--Create user

CREATE LOGIN HOST_A_login WITH PASSWORD='test';

CREATE USER HOST_A_user FOR LOGIN HOST_A_login;

CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE= 'e:\HOST_A_cert.cer';

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];

--add user host_b_login to have pemission to access witness

CREATE LOGIN HOST_B_login WITH PASSWORD='test';

CREATE USER HOST_B_user FOR LOGIN HOST_B_login;

CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE= 'e:\HOST_B_cert.cer';

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; grant connect on endpoint::endpoint_mirroring to HOST_C_login

USE master;

exec sp_addlogin

@loginame ='HOST_B_login',

@passwd ='test',

@sid = 0x1A914CA3D1D00C4793EBC96E4C4F4352 ;

ALTER DATABASE ccerp_jzt SET PARTNER='TCP://192.168.137.32:5022';

四.建立镜像:

先在镜像服务器上执行:

ALTER DATABASE ccerp_jzt SET PARTNER='TCP://192.168.137.44:5022'; 接着主体服务器执行:

ALTER DATABASE ccerp_jzt SET PARTNER='TCP://192.168.137.32:5022'; ALTER DATABASE ccerp_jzt SET witness = 'TCP://192.168.137.49:5022'; 至此引证书建立完毕

四、测试操作

1、主备互换

--主机执行:

1USE master;

2ALTER DATABASESET PARTNER FAILOVER;

3

2、主服务器Down掉,备机紧急启动并且开始服务

--备机执行:

1USE master;

2ALTER DATABASESET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS; 3

3、原来的主服务器恢复,可以继续工作,需要重新设定镜像

1--备机执行:

2USE master;

3ALTER DATABASESET PARTNER RESUME; --恢复镜像

4ALTER DATABASESET PARTNER FAILOVER; --切换主备

5

4、原来的主服务器恢复,可以继续工作

--默认情况下,事务安全级别的设置为 FULL,即同步运行模式,而且SQL Server 2005 标准版只支持同步模式。

--关闭事务安全可将会话切换到异步运行模式,该模式可使性能达到最佳。

1USE master;

2ALTER DATABASESET PARTNER SAFETY FULL; --事务安全,同步模式

3ALTER DATABASESET PARTNER SAFETY OFF; --事务不安全,异步模式

错误说明:

消息1498,级别16,状态3,第1 行

默认情况下,数据库镜像是被禁用的。当前提供的数据库镜像仅供评估使用,并不应使用于生产环境中。若要以评估为目的启用数据库镜像,请在启动过程中使用跟踪标志1400。有关跟踪标志和启动选项的详细信息,请参阅SQL Server 联机丛书。

解决办法:没打SP1以上补丁.强烈建议打SP3

消息1475,级别16,状态2,第1 行

由于"ccerp_jzt" 数据库可能有尚未备份的大容量日志记录更改,所以无法启用数据库

镜像。必须在镜像上还原主体数据库的上一次日志备份。

主体上:backup log ccerp_jzt to disk='e:\log.trn'with no_truncate 镜像上:restore log ccerp_jzt from disk='e:\log.trn'with norecovery

SQL Server 2005数据类型

SQL Server 2005数据类型说明 用varchar(max)代替text。varchar的最大长度为8000,但是varchar(max)则可以存储多达2G的数据,因此其作用相当于SQL 2000中的text。但是微软可能会后续的SQL Server版本中移除text类型,从现在就应该用varchar(max) 来代替text。 用nvarchar(max)代替ntext,用binary(max)代替image. (Image类型对应C#的byte[]) 为XML数据选择xml类型。在SQL Server 2005中,为XML数据添加了相应的数据类型,因此存储XML数据的列不需要用 varchar(max)或nvarchar(max),而应当用xml数据类型,以利用T-SQL中专门针对xml数据列的新命令,以及针对xml列的索引。 易混淆的数据类型 (C#:string) (1)char、varchar、text和nchar、nvarchar、ntext char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。 text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。 后面三种数据类型和前面的相比,从名称上看只是多了个字母"n",它表示存储的是Unicode数据类型的字符。写过程序的朋友对Unicode应该很了解。字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar 最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。 (2)datetime和smalldatetime datetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒。 smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。 (3)bitint、int、smallint、tinyint和bit bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的

数据库常用数据类型

(1) 整数型 整数包括bigint、int、smallint和tinyint,从标识符的含义就可以看出,它们的表示数范围逐渐缩小。 l bigint:大整数,数范围为-263 (-9223372036854775808)~263-1 (9223372036854775807) ,其精度为19,小数位数为0,长度为8字节。 l int:整数,数范围为-231 (-2,147,483,648) ~231 - 1 (2,147,483,647) ,其精度为10,小数位数为0,长度为4字节。 l smallint:短整数,数范围为-215 (-32768) ~215 - 1 (32767) ,其精度为5,小数位数为0,长度为2字节。 l tinyint:微短整数,数范围为0~255,长度为1字节,其精度为3,小数位数为0,长度为1字节。 (2) 精确整数型 精确整数型数据由整数部分和小数部分构成,其所有的数字都是有效位,能够以完整的精度存储十进制数。精确整数型包括decimal 和numeric两类。从功能上说两者完全等价,两者的唯一区别在于decimal不能用于带有identity关键字的列。 声明精确整数型数据的格式是numeric | decimal(p[,s]),其中p为精度,s为小数位数,s的缺省值为0。例如指定某列为精确整数型,精度为6,小数位数为3,即decimal(6,3),那么若向某记录的该列赋值56.342689时,该列实际存储的是56.3427。 decimal和numeric可存储从-1038 +1 到1038 –1 的固定精度和小数位的数字数据,它们的存储长度随精度变化而变化,最少为5字节,最多为17字节。 l 精度为1~9时,存储字节长度为5; l 精度为10~19时,存储字节长度为9; l 精度为20~28时,存储字节长度为13; l 精度为29~38时,存储字节长度为17。 例如若有声明numeric(8,3),则存储该类型数据需5字节,而若有声明numeric(22,5),则存储该类型数据需13字节。 注意:声明精确整数型数据时,其小数位数必须小于精度;在给精确整数型数据赋值时,必须使所赋数据的整数部分位数不大于列的整数部分的长度。 (3) 浮点型 浮点型也称近似数值型。顾名思义,这种类型不能提供精确表示数据的精度,使用这种类型来存储某些数值时,有可能会损失一些精度,所以它可用于处理取值范围非常大且对精确度要求不是十分高的数值量,如一些统计量。

Mysql支持的数据类型(总结)

一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型 (INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。 扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形,并增加了BIT类型,用来存放位数据。 整数类型字节范围(有符号)范围(无符 号)用途 TINYINT 1字节(-128,127) (0, 255) 小整数值 SMALLINT 2字节 (-32 768,32 767) (0,65 535) 大整数值 MEDIUMINT 3字节(-8 388 608,8 388 607) (0,16 777 215) 大整数值 INT或INTEGER 4字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值 BIGINT 8字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值 FLOAT 4字节 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度浮点数值 DOUBLE 8字节 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值依赖于M和D的值小数值 INT 类型: 在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和BIGINT。这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。例如,指定一个字段的类型为 INT(6),

API 中数据类型与PB数据类型对照表

API 中数据类型与PB数据类型对照表 MICROSOFT PB(16Bi t) PB(32Bit) Bool Boolean Boolean Byte, Char Char Char Char* Ref string Ref String Colorref Uint Ulong Double Double Double Dword Uint Ulong Float N/A N/A Handle Uint Ulong Hdc Uint Ulong Hfile Uint Ulong Hinstance Uint Ulong Hwnd Uint Ulong Int Int Int Long Long Long Lparam Uint Ulong Lpbyte Ref Int Ref Long Lpcwstr Ref Blob Ref Blob (Unicode use ToUnicode()) Lpcvoid Ref String Ref String Lpdword Ref Uint R ef Ulong Lpfiletime Ref Time Ref Time Lpint R ef Int Ref Long Lpstr,Lpcstr Ref String Ref String Lpvoid Ref Structstruct_inst Ref Struct struct_inst Lpword Ref Int R ef Ulong Mcierror Long Long Pbyte Ref Int[#] Ref Long[#] Short Int Int Structure Ref Struct struct_inst R ef Struct Struct_inst Uint Uint Uint Void** SUBROUTINE SUBROUTINE Word Uint Uint Wparam Uint Ulong

连接SQL server2005数据库端1433端口的正确方法

连接SQL server2005数据库端1433端口的正确方法 SQL server 2011-02-20 20:49:49 阅读14 评论0 字号:大中小订阅 安装完程序后,连接端口1433前,要做的几件事情和注意事项总结一下。 步骤: 1.关闭数据库引擎,关闭数据库引擎有三种方法: (1)开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务",在右侧查看是否已启动,如果已启动可单击“停止”按钮,即可关闭数据库引擎。 (2)开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,选中SQL Server 2005服务中SQL Server(MSSQLSERVER) ,并选中右击,点击停止,即可关闭数据库引擎。 (3) 开始->程序->Microsoft SQL Server 2005-> SQL Server Management Studio,在弹出的连接数 据库引擎对话框中点击“连接”按钮,然后选中服务器名称,右击“停止”按钮,即可关闭数据库引擎。 补充注意点: 有时候在启动数据库引擎的时候可能会出现错误,不能启动,这时就要查看"SQL Server 2005配置管理器"中的SQL Server 2005网络配置->MSSQLSERVER协议中的VIA是否已启用,如果已启用,则把它禁 止.然后再执行上述一种方式操作就可以了. 2.配置服务器端和客户端的TCP/IP协议: 配置工具->SQL Server Configuration Manager->MSSQLSERVER的协议 看看TCP/IP协议是否启动,如果启动,右键菜单点"属性" ,在分页菜单中选"IP地址",把"IP1"和"IP2"中 "TCP端口"为1433,"已启用"改为"是" 配置工具->SQL Server Configuration Manager->SQL Native Client 配置->客户端协议->TCP/IP 选择TCP/IP右键菜单中"属性",确认"默认端口"是1433,"已启用"为"是" 3.开启数据库引擎,方法参考步骤1中的(1)、(2)两点。 4.连接端口1433 开始–>输入cmd –>回车–>telnet localhost 433->回车 出现黑屏,表示本机连接端口1433成功 前几次,连接端口1433失败的原因主要是在配置服务器端和客户端的TCP/IP协议前,没有先关数据库引擎,而是配置完服务器端和客户端的TCP/IP协议后,再关数据库引擎。正确的顺序是:(1)关数据库引擎,(2)配置服务器端和客户端的TCP/IP协议,(3)启动数据库引擎,(4)连接端口1433。

SQL Server 2000数据类型

SQL Server 2000数据类型 分类:数据库2008-06-26 17:16 1428人阅读评论(2) 收藏举报 在计算机中数据有两种特征:类型和长度。所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。在SQL Server 中每个变量、参数、表达式等都有数据类型。系统提供的数据类型分为几大类,如下表所示。 其中,BIGINT、SQL_VARIANT 和TABLE 是SQL Server 2000 中新增加的3 种数据类型。下面分类讲述各种数据类型。 4.3.1 整数数据类型整数数据类型是最常用的数据类型之一。 1、INT (INTEGER)INT (或INTEGER)数据类型存储从-2的31次方(-2 ,147 ,483 ,648)到2的31次方-1 (2 ,147 ,483,647)之间的所有正负整数。每个INT 类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。 2、SMALLINT SMALLINT 数据类型存储从-2的15次方(-32,768)到2的15次方-1(32 ,767 )之间的所有正负整数。每个SMALLINT 类型的数据占用2 个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。 3、TINYINT TINYINT数据类型存储从0 到255 之间的所有正整数。每个TINYINT类型的数据占用1 个字节的存储空间。

4、BIGINT BIGINT 数据类型存储从-2^63 (-9 ,223,372,036,854,775,807)到2^63-1(9,223,372,036 ,854 ,775,807)之间的所有正负整数。每个BIGINT 类型的数据占用8个字节的存储空间。 4.3.2 浮点数据类型浮点数据类型用于存储十进制小数。浮点数值的数据在SQL Server 中采用上舍入(Round up 或称为只入不舍)方式进行存储。所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加1 ,并进行必要的进位。若一个数是上舍入数,其绝对值不会减少。如:对3.14159265358979 分别进行2 位和12位舍入,结果为3.15 和3.141592653590。 1、REAL 数据类型REAL数据类型可精确到第7 位小数,其范围为从 -3.40E -38 到3.40E +38。每个REAL类型的数据占用4 个字节的存储空间。 2、FLOAT FLOAT数据类型可精确到第15 位小数,其范围为从-1.79E -308 到1.79E +308。每个FLOAT 类型的数据占用8 个字节的存储空间。FLOAT 数据类型可写为FLOAT[ n ]的形式。n 指定FLOAT 数据的精度。n 为1到15 之间的整数值。当n 取1 到7 时,实际上是定义了一个REAL 类型的数据,系统用4 个字节存储它;当n 取8 到15 时,系统认为其是FLOAT 类型,用8 个字节存储它。 3、DECIMAL DECIMAL数据类型可以提供小数所需要的实际存储空间,但也有一定的限制,您可以用2 到17 个字节来存储从-10的38次方-1 到10的38次方-1 之间的数值。可将其写为DECIMAL[ p [s] ]的形式,p 和s 确定了精确的比例和数位。其中p 表示可供存储的值的总位数(不包括小数点),缺省值为18;s 表示小数点后的位数,缺省值为0。例如:decimal (15 5),表示共有15 位数,其中整数10 位,小数5。位表4-3 列出了各精确度所需的字节数之间的关系。

mysql数据类型属性总结(方便大家建数据库设定类型参考)

MySQL数据类型和常用字段属性总结●日期和时间数据类型 ●数值数据类型 整型

上面定义的都是有符号的,当然了,也可以加上unsigned关键字,定义成无符号的类型,那么对应的取值范围就要翻翻了,比如: tinyint unsigned的取值范围为0~255。 ●浮点型 我在MySQL中建立了一个表,有一列为float(5, 3);做了以下试验: 1.插入123.45678,最后查询得到的结果为99.999; 2.插入12 3.456,最后查询结果为99.999; 3.插入12.34567,最后查询结果为12.346; 所以,在使用浮点型的时候,还是要注意陷阱的,要以插入数据库中的实际结果为准。 ●字符串数据类型

1.char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。 2.同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。 3.超过char和varchar的n设置后,字符串会被截断。 4.char的上限为255字节,varchar的上限65535字节,text的上限为65535。 5.char在存储的时候会截断尾部的空格,varchar和text不会。 6.varchar会使用1-3个字节来存储长度,text不会。 1.enum(“member1″, “member2″, … “member65535″) enum数据类型就是定义了一种枚举,最多包含65535个不同的成员。当定义了一个enum的列时,该列的值限制为列定义中声明的值。如果列声明包含NULL属性,则NULL将被认为是一个有效值,并且是默认值。如果声明了NOT NULL,则列表的第一个成员是默认值。

SQL Server 2005数据库引擎启动服务器的方法

SQL Server 2005 不允许远程连接解决方法 做课程设计时,很多学生都遇到这个问题。把解决方法写在这儿,供参考。 刚刚安装的数据库系统,按照默认安装的话,很可能在进行远程连接时报错,通常是错误:"在连接到SQL Server 2005 时,在默认的设置下SQL Server 不允许进行远程连接可能会导致此失败。(provider: 命名管道提供程序, error: 40 - 无法打开到SQL Server 的连接) "搜MSDN,上面有一片机器翻译的文章,是在让人难以明白,现在总结如下:明白了SQL Server是个网络数据库就可迎刃而解了,简单的分为下面的集中情况。 1. 数据库引擎没有启动。 有两种启动方式: (1)开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动",并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动启动; (2)可打开:开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,选中SQL Server 2005服务中SQL Server(MSSQLSERVER) ,并单击工具栏中的"启动服务"按钮把服务状态改为启动; 使用上面两种方式时,有时候在启动的时候可能会出现错误,不能启动,这时就要查看"SQL Server 2005配置管理器"中的SQL Server 2005网络配置->MSSQLSERVER协议中的VIA是否已启用,如果已启用,则把它禁止.然后再执行上述一种方式操作就可以了. 2. 是否已经允许远程连接。 这个部分可以简单的分为4个方面,分别是在SQL Server上启用远程连接、启用SQL Server 浏览服务、在Windows 防火墙中为SQL Server 2005 创建例外和在Windows 防火墙中为“SQLBrowser”创建例外。下面是几个具体的操作方式,摘自MSDN,个人觉得文章的黑体部分应当特别的一起我们的注意。 在SQLServer 实例上启用远程连接 1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器” 2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器” 3.然后单击展开“数据库引擎”,选中“远程连接”,在右边选中“本地连接和远程连接”, 再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到下消息:“直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回 4.展开“数据库引擎”,选中“服务”,在右边单击“停止”,等到MSSQLSERVER 服务停止, 然后单击“启动”,重新启动MSSQLSERVER 服务。(更改其它选项后,一定要重启MSSQLSERVER 服务,才能将更改应用!!) 启用SQLServer 浏览器服务

分清SQLServer中易混淆的数据类型

分清SQLServer中易混淆的数据类型 (1)char、varchar、text和nchar、nvarchar、ntext char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar 是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。text存储可变长度的非unicode数据,长度为2^31-1(2,147,483,647)个字符。 后面三种数据类型和前面的相比,从名称上看只是多了个字母"n",它表示存储的是unicode 数据类型的字符。写过程序的朋友对unicode应该很了解。字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。 (2)datetime和smalldatetime datetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒。smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。 (3)bitint、int、smallint、tinyint和bit bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。 smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据。 tinyint:从0到255的整数数据。 bit:1或0的整数数据。 (4)decimal和numeric 这两种数据类型是等效的。都有两个参数:p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的个数,p必须是从 1到38之间的值。s指定小数点右边可以存储的十进制数字的个数,s必须是从0到p之间的值,默认小数位数是0。 (5)float和real float:从-1.79^308到1.79^308之间的浮点数字数据。 real:从-3.40^38到3.40^38之间的浮点数字数据。在sql server中,real的同义词为float(24) 【

C语言的基本数据类型及其表示

3.2C语言的基本数据类型及其表示 C语言的基本数据类型包括整型数据、实型数据和字符型数据,这些不同数据类型如何表示?如何使用?它们的数据范围是什么?下面我们分别进行介绍。 3.2.1常量与变量 1.常量 常量是指程序在运行时其值不能改变的量,它是C语言中使用的基本数据对 象之一。C语言提供的常量有: 以上是常量所具有的类型属性,这些类型决定了各种常量所占存储空间的大小和数的表示范围。在C程序中,常量是直接以自身的存在形式体现其值和类型,例如:123是一个整型常量,占两个存储字节,数的表示范围是-32768~32767;123.0是实型常量,占四个存储字节,数的表示范围是-3.410-38~3.41038。 需要注意的是,常量并不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中。 2.符号常量 在C程序中,常量除了以自身的存在形式直接表示之外,还可以用标识符来表示常量。因为经常碰到这样的问题:常量本身是一个较长的字符序列,且在程序中重复出现,例如:取常数的值为3.1415927,如果在程序中多处出现,直接使用3.1415927的表示形式,势必会使编程工作显得繁琐,而且,当需要把的值修改为3.1415926536时,就必须逐个查找并修改,这样,会降低程序的可修改性和灵活性。因此,C语言中提供了一种符号常量,即用指定的标识符来表示某个常量,在程序中需要使用该常量时就可直接引用标识符。 C语言中用宏定义命令对符号常量进行定义,其定义形式如下: #define标识符常量 其中#define是宏定义命令的专用定义符,标识符是对常量的命名,常量可以是前面介绍的几种类型常量中的任何一种。该使指定的标识符来代表指定的常量,这个被指定的标识符就称为符号常量。例如,在C程序中,要用PAI代表实型常量3.1415927,用W代表字符串常量"Windows98",可用下面两个宏定义命令: #define PAI3.1415927 #define W"Windows98" 宏定义的功能是:在编译预处理时,将程序中宏定义(关于编译预处理和宏定义的概念详见9.10节)命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代。例如,对于以上两个宏定义命令,编译程序时,编译系统首先将程序中除这两个宏定义命令之外的所有PAI替换为3.1415927,所有W替换为Windows98。因此,符号常量通常也被称为宏替换名。 习惯上人们把符号常量名用大写字母表示,而把变量名用小写字母表示。例3-1是符号常量的一个简单的应用。其中,PI为定义的符号常量,程序编译时,用3.1416替换所有的PI。 例3-1:已知圆半径r,求圆周长c和圆面积s的值。

MySQL常用数据类型和建库策略

1. MYSQL 5数据类型,长度范围 1.1数值类型 MySQL支持所有标准SQL数值数据类型.这些类型包括严格数值数据类型(INTEGER,SMALLINT,DECIMAL和NUMERIC),以及近似数值数据类型 (FLOAT,REAL 和DOUBLE PRECISION).关键字INT是INTEGER的同义词,关键字DEC是DECIMAL 的同义词. BIT 数据类型保存位字段值,并且支持MyISAM,MEMORY,InnoDB和BDB表.作为SQL标准的扩展,MySQL也支持整数类型 TINYINT,MEDIUMINT和BIGINT.下面的表显示了需要的每个整数类型的存储和范围. MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例 如,INT(4)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度. 显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示. 当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替.例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004.请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度. 所有整数类型可以有一个可选(非标准)属性UNSIGNED.当你想要在列内只允许 非负数和该列需要较大的上限数值范围时可以使用无符号值. 浮点和定点类型也可以为UNSIGNED.同数类型,该属性防止负值保存到列中.然而,与整数类型不同的是,列值的上范围保持不变. 如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性. 对于浮点列类型,在MySQL中单精度值使用4个字节,双精度值使用8个字节. FLOAT类型用于表示近似数值数据类型.SQL标准允许在关键字FLOAT后面的括号内选择用位指定精度(但不能为指数范围).MySQL还支持可选的只用于确定存储大小的精度规定.0到23的精度对应FLOAT 列的4字节单精度.24到53的精度对应DOUBLE列的8字节双精度. MySQL允许使用非标准语法:FLOAT(M,D)或 REAL(M,D)或DOUBLE PRECISION(M,D).这里,"(M,D)"表示该值一共显示M位整数,其中D位位于小数点后面.例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999.MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001.

正确配置SQL Server 2005数据库服务器

正确安装SQL Server 2005之后。 1.打开“SQL Server 外围应用配置器”。 2.点击“服务和连接的外围应用配置器”,打开服务和连接的外围应用配置器 对话框,展开“MSSQLSERVER”下的“Database Engine”,然后点击“远程连接”,则右侧设置“本地连接和远程连接”下面的“同时使用TCP/IP和named pipes”项。然后应用确定。 3.设置例外SQL Server端口。在“控制面板”中打开“Windows防火墙”,选 择“例外选项卡”。点击添加端口,给个名称,端口SQL默认的是1433(你

一般不要改动),当然你也可以在“SQL Server Configuration Manager”中的网络配置中修改。 4、以Windows身份进入SQL Server Management Studio,展开“安全性”->“登录名”,右键新建登录名,填入登录名,在“常规”中,选择SQL Server身份验证,并填入密码。在“用户映射中”,为用户在相应的数据库中设置对应的权限,另外在“状态”中,将登录设置“启用”。这样便新建了一个用于网络登录SQL服务器的用户账号。

5、在SQL Server Management Studio中,右键点击服务器,选择属性弹出“服务器属性”对话框,点击左侧的“安全性”,在“服务器身份验证”项中选择“SQL Server 和Windows 身份 验证模式”然后点击确定。

6、在SQL Server Configuration Manager中,重启“SQL Server(MSSQLSERVER)”服务。 7、在SQL Server Management Studio,可以使用服务器的IP地址和网络用户登录。另外,如果更改了SQL Server的端口,则在此处的“服务器名称”中填入IP后,用逗号隔开加端口号,如:222.195.11.219,418。

SQL SEVERCE 2005数据类型

1. 字符串数据类型 char 此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定;如未指定,默认为char(1)。每个字符占用1byte存储空间。 nchar 此数据类型可存储1~4000个定长Unicode字符串,字符串长度在创建时指定;如未指定,默认为nchar(1)。每个字符占用2bytes存储空间。 varchar 此数据类型可存储最大值为8000个字符的可变长字符串。可变长字符串的最大长度在创建时指定,如varchar(50),每个字符占用1byte存储空间。 nvarchar 此数据类型可存储最大值为4000个字符可变长Unicode字符串。可变长Uni code字符串的最大长度在创建时指定,如nvarchar(50),每个字符占用2byt es存储空间。 text 此数据类型可存储最大值为2147483647个字符的变长文本,并且无需指定其初始值,每个字符占用1byte存储空间,一般用来存储大段的文章。text数据

类型实际上是一个Large Object数据类型,默认情况下,此类型的数据不是存储在数据行内,而是存储于独立的Large Object数据页上。另外,text数据类型不能做为函数、存储过程或触发器中的参数来用。 ntext 同text数据类型,只不过存储的是最大值为1073741823个字符的Unicode 变长文本,每个字符占用1byte存储空间。 说明:无论使用哪种字符串数据类型,字符串值必须放在引号内,推荐使用单引号。 2. 数值数据类型 bit 此数据类型存储值为0或1的二进制字段。占用1byte存储空间。 tinyint 此数据类型存储0~255的整数,占用1byte存储空间。 smallint 此数据类型存储-32768~32767的整数,占用2bytes存储空间。

数据类型

第四课数据类型 先来简单说说C语言的标识符和关键字。标识符是用来标识源程序中某个对象的名字的,这些对象可以是语句、数据类型、函数、变量、数组等等。C语言是大小字敏感的一种高级语言,如果我们要定义一个定时器1,可以写做"Timer1",如果程序中有"TIMER1",那么这两个是完全不同定义的标识符。标识符由字符串,数字和下划线等组成,注意的是第一个字符必须是字母或下划线,如"1Timer"是错误的,编译时便会有错误提示。有些编译系统专用的标识符是以下划线开头,所以一般不要以下划线开头命名标识符。标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。在C51编译器中,只支持标识符的前32位为有效标识,一般情况下也足够用了,除非你要写天书:P。 关键字则是编程语言保留的特殊标识符,它们具有固定名称和含义,在程序编写中不允许标识符与关键字相同。在KEIL uVision2中的关键字除了有ANSI C标准的32个关键字外还根据51单片机的特点扩展了相关的关键字。其实在KEIL uVision2的文本编辑器中编写C程序,系统可以把保留字以不同颜色显示,缺省颜色为天蓝色。 先看表4-1,表中列出了KEIL uVision2 C51编译器所支持的数据类型。在标准C语言中基本的数据类型为char,int,short,long,float 和double,而在C51编译器中int和short相同,float和double相同,这里就不列出说明了。下面来看看它们的具体定义:

表4-1 KEIL uVision2 C51编译器所支持的数据类型 1.char字符类型 char类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。分无符号字符类型unsigned char和有符号字符类型signed char,默认值为signed char类型。unsigned char类型用字节中所有的位来表

Mysql数据库学习总结

Mysql数据库学习总结 数据库的基本操作:创建删除查瞧 Create database school; 用于创建数据库,并且数据库的名字不可以更改 Show create database; show databases; 用来查瞧创建数据库的语句 Drop database; 用于删除数据库 表的基本操作: Create table; 用于创建表,table后面加表名称 Create table student{ Id int; Name varchar(10); Sex Boolean; } Show tables; 用于显示数据库中的所有表 Describe student; 这里显示了字段、数据类型、就是否为空、主外键、默认值与额外信息Show create table; 显示创建表时的详细信息 Drop table student; 删除表的操作 完整性约束

就是对字段进行限制,从而该字段达到我们期望的效果 设置表的主键:主键能够标识表中的每条信息的唯一性。(primary key) 创建主键的目的在于快速查找到表中的某一条信息 多字段主键:由多个属性组合而成 例如:primary key(id,course_id); 设置表的外键; 设置表的外键的作用在于建立与父表的联系 比如表A中的id就是外键,表B中的id就是主键 那么就可以称表B为父表,表A为子表 比如表B中id为123的学生删除后,表A中id为123的记录也随着消失这样做的目的在于保证表的完整性。 设置表的非空约束: 设置表中的字段不为空 设置表的唯一性约束 唯一性约束指表中该字段的值不能重复出现,也就就是给表中某个字段加上unique 设置表的属性值自动增加: auto_increment 主要用于为表中插入的新纪录自动生成唯一ID 一个表中只能由一个字段使用此约束,并且该字段必须为主键的一部分,约束的值ibixu 就是整型值。 设置表中属性的默认值 在表中插入一体哦新的记录时,如果没有为该字段赋值,那么数据库系统就会为该字段附上一条默认值。 修改表 修改表需要用到alter table 修改表名:

VC++环境下连接SQL_Server数据库方法-实验六

VC++环境下连接SQL Server数据库方法指导 实验类型:设计型 一、实验环境 1.Windows XP操作系统; 2.VC++6.0开发环境; 3.SQL server 2000数据库管理系统。 二、实验内容和要求 利用VC开发应用程序,要求能够通过界面完成对数据库中数据的查询、插入、删除以及修改。 三、实验原理 VC访问SQL Server数据库,常用的方法有两种:通过ODBC连接和通过ADO连接。下面分别介绍一下。 采用ODBC方式要求先创建ODBC数据源,应用程序通过数据源与数据库连接;并且在创建应用程序时,只能是基于单文档或多文档,而无法直接创建基于对话框的应用程序。 采用ADO方式无需创建数据源,应用程序可通过ADO直接与数据库连接;ADO方式可以创建基于对话框的应用程序。 两种方式都要在应用程序中添加代码以完成相应的初始化功能。 四、实验步骤 下面通过两个例子分别介绍基于ODBC方式和基于ADO方式的实验步骤。 1 基于ODBC方式的实验步骤 (1)在SQL Server2000中创建数据库student,该数据库中有学生表s用来存放学生信息。 s表的创建方法在此不详述。 (2)创建ODBC数据源 “开始”--〉“设置”--〉“控制面板”—〉“管理工具”—〉“数据源(ODBC)”,打开 之后出现如图1所示窗口。

图1 点击“添加”按钮,出现图2。 图2 选择SQL Server,点击“完成”,出现图3。 图3 名称中填写所创建的数据源的名称,本例中为student,描述可以不填。因为SQL Server 的服务器和客户端均安装在本地计算机上,所以服务器为(local)。如果本地计算机上只安装了客户端,服务器安装在另外的机器上,服务器为另一台机器的名称。 点击“下一步”,出现图4。

MySQL数据表类型 数据类型

表类型 MySQL的数据表类型很多,其中比较重要的是MyISAM,InnoDB这两种。 这两种类型各有优缺点,需要根据实际情况选择适合的,MySQL支持对不同的表设置不同的类型。下面做个对比: 一般情况下我觉得选择MyISAM就行,如果需要事务,或者需要很多用户同时修改某个数据表里的数据时,可以考虑InnoDB数据表。 数据类型 1.整型(xxxint) 右侧的取值范围是在未加unsigned关键字的情况下,如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 书上说int(m)括弧里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,我测了一下,定义一个字段number 类型为int(4),插入一条记录"123456",用mysql query broswer执行SELECT查询,返回的结果集中123456正确显示,没有影响到显示的宽度,不知道这个m有什么用。 2.浮点型(float和double)

参数m只影响显示效果,不影响精度,d却不同,会影响到精度。 比如设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,小数点后面的数别四舍五入截成457了,但总个数不受到限制(6位,超过了定义的5位)。 3.定点数(decimal) decimal(m,d) 定点类型 浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。参数m是定点类型数字的最大个数(精度),范围为0~65,d小数点右侧数字的个数,范围为0~30,但不得超过m。 对定点数的计算能精确到65位数字。 4.字符串(char,varchar,xxxtext) 1.都可以通过指定n,来限制存储的最大字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉。n必须小于该类型允许的最大字符数。 2.char类型指定了n之后,如果存入的字符数小于n,后面将会以空格补齐,查询的时候再将末尾的空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不受此限制。 3.内部存储的机制不同。char是固定长度,char(4)不管是存一个字符,2个字符或者4个字符(英文的),都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入一个字符将占用2个字节,2个字符占用3个字节,4个字符占用5个字节。 4.char类型的字符串检索速度要比varchar类型的快。 varchar和text: 1.都是可变长度的,最多能存储65535个字符。 2.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节 (n<=255)或2个字节(n>255),text是实际字符数+2个字节。 3.text类型不能有默认值。

相关文档
相关文档 最新文档