如果您想了解MSSQL---extents的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于asp.net-mvc-3–使用存储过程(MSSQL)时Dapper的缓存解决方案、BI学习走过的
如果您想了解MSSQL---extents的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案、BI学习走过的路---MSSQL 2008 安装过程、C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)、Connect to MSSQL Database using Flask-SQLAlchemy的有价值的信息。
本文目录一览:
MSSQL---extents
1.Mixed extent:每个表或索引创建时,MSSQL并不给它分配一个extent,而是在mixed extnet内分配一个页,空间需求扩大时,再分配一个,直到表或索引的空间需求超过8个页,系统为它分配一个extent,这个extent就是uniform. extent; 2.Uniform. extent:当表或
1.mixed extent:每个表或索引创建时,mssql并不给它分配一个extent,而是在mixed extnet内分配一个页,空间需求扩大时,再分配一个…,直到表或索引的空间需求超过8个页,系统为它分配一个extent,这个extent就是uniform. extent;
2.Uniform. extent:当表或索引的空间需求超过8个页时,系统就为它分配一个uniform. extent;
二、MSSQL用几种页来记录extent的使用:
1.GAM:global allocation map,用来记录extent是否已经被使用,每个位记录一个extent,0为已用,1表示未用,一个页大约有8000字节、64000个位,每个GAM页可以记录64000个extent,每个extent为8*8k=64k,那么GAM页最终可以记录64k*64000大小的空间,即大约4G的空间,也就是说GAM只能记录4G大小的空间,超过4G必须另外分配GAM,第一和第二个GAM间隔511230个页,第一个GAM总是文件的第三个页(page 2);
2.SGAM:shared global allocation map,用来记录extent是否被用作mixed extent,每个位记录一个extent,如果为1,说明对应的extent用作mixed extent且其中还有可用的页,为0,说明其为uniform. extent或mixed extent但已没可用页。同样,一个SGAM可以记录4G的空间,超过这个大小就需要另外分配SGAM,第一个和第二个SGAM间隔511230个页,第一个SGAM总是文件的第四个页(page 3);
3.另外一种页——IAM,index allocation map,用来记录每个对象在一个文件中extents的情况,也就是记录对象被分配了一个文件中的extents,IAM页头有八个槽,分别用来指向表或索引的头八个页,因为它们都被分配在mixed extents里,后面页头还有一个map,其中每个位对应一个extent,如果相应文件中extent的位是1,就说明这个extent属于该对象,否则,就不属于该对象;该页可以在文件的任何位置分配,它也可以不指向它所在文件的extents,注意:IAM仅仅对应被一个分配单位使用的文件中的4G范围的extents使用情况,对应511230个页,一旦超过这些页,系统就要分配另外一个IAM页,一个对象的各个IAM也都被链接在一起,IAM头部有指向第一个extent的地址。每个分配单位中,只包含一个表或索引分区的一类页,多个分区要用到多个IAM,而同一个分区不同类的页,也要用到不同的IAM页。
4.PFS, page free space,用来记录每个文件中每个页如何使用的,文件的第二个页为PFS页,其后第8088个也是PFS页,因为一个PFS页中只有8088个字节可以用来记录页的使用情况。
5.DCM,differential changed map,用来记录自从上次全备以来改变过的extents,主要用于差异备份需要,文件的第七个页(page 6)为DCM页,也是只能覆盖4G的空间,超过4G就要分配另一个DCM页,中间要间隔511230个页。
6.BCM,bulk changed map,用来记录最小或批量日志操作改变的extents,文件的第八个页为BCM页,只能覆盖4G的空间,超过4G就要重新分配BCM页,中间间隔511230个页。
7.至此,可以总结如下:文件的第一个页为文件头页,即page 0,第二个页为PFS页,第三个页为GAM页,第四个页为SGAM页,第七个页为DCM页,第八个页为BCM页,而IAM页可以在文件任何位置分配。

asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案
我正在使用Dapper主要用于调用数据库MSsql 2008 R2中的存储过程.我没有映射到数据库表的类.大多数数据以IEnumerable< Dynamic>结尾.并传输到屏幕上的网格.
我可以使用现成的数据缓冲解决方案吗? (我需要在MVC上使用它).
数据库中的数据本质上是静态的和动态的.我使用存储库模型来访问数据.
解决方法
Dapper不包含任何内置数据缓存功能(虽然它在内部为元编程层使用了广泛的缓存):它本身就是针对ADO.NET的东西 – 但是,你几乎可以使用任何现成的缓存组件,包括HTTP运行时缓存(HttpContext.Current.Cache)或更新的ObjectCache等实现.因为这些只是对象,它应该工作正常.
如果您使用分布式缓存(可能通过app-fabric,redis或memcached),那么您需要将数据序列化.在那种情况下,我强烈建议使用正式的POCO类型进行绑定,而不是动态API.例如,我们在内部使用dapper来填充用protobuf-net标记进行注释以进行序列化的POCO,并通过BookSleeve存储到redis.这听起来比实际更复杂.

BI学习走过的路---MSSQL 2008 安装过程
学习BI,开始的路程十分坎坷啊。
我学习的是针对MS sql Server的BI开发
刚熟悉了各种术语之后,开始安装数据库、sql服务、SSAS、SSIS
结果悲催的是,从官网下载了Express版本的2008数据库,怎么找都找不到SSAS、SSIS等服务。
为此足足失眠了3天左右的时间……
不过,功夫不负有心人,终于找到了一个可以十分简单的下载微软软件的网站,再次分享给各位朋友。
http://msdn.itellyou.cn/
同时,在此处分享一个sql Server 2008的安装图解
http://www.cnblogs.com/downmoon/archive/2010/05/18/1738479.html
国内关于BI的学习,在网络上资料比较有限,而且杂乱,本人在学习过程中会将一些学习心得在此与大家分享下,希望能给大家带来帮助。

C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)
MSSQL

SQLITE

一、C# vs SQLite:
C#
SQLite
字段名
类型
库类型
GetFieldType(#)
转换
备注
F_BOOL
bool
BIT NOT NULL
Boolean
F_BOOL_NULL
bool?
BIT
Boolean
F_SBYTE
sbyte
INT8 NOT NULL
SByte
sbyte_
F_SBYTE_NULL
sbyte?
INT8
SByte
sbyte_
F_BYTE
byte
UINT8 NOT NULL
Byte
F_BYTE_NULL
byte?
UINT8
Byte
F_SHORT
short
INT16 NOT NULL
Int16
F_SHORT_NULL
short?
INT16
Int16
F_USHORT
ushort
UINT16 NOT NULL
UInt16
ushort_
F_USHORT_NULL
ushort?
UINT16
UInt16
ushort_
F_INT
int
INT32 NOT NULL
Int32
F_INT_NULL
int?
INT32
Int32
F_UINT
uint
UINT32 NOT NULL
UInt32
uint_
F_UINT_NULL
uint?
UINT32
UInt32
uint_
F_LONG
long
INT64 NOT NULL
Int64
F_LONG_NULL
long?
INT64
Int64
F_ULONG
ulong
UINT64 NOT NULL
UInt64
ulong_
F_ULONG_NULL
ulong?
UINT64
UInt64
ulong_
F_FLOAT
float
FLOAT NOT NULL
Double
不转兼容
F_FLOAT_NULL
float?
FLOAT
Double
不转兼容
F_DOUBLE
double
DOUBLE NOT NULL
Double
F_DOUBLE_NULL
double?
DOUBLE
Double
F_DECIMAL
decimal
DECIMAL NOT NULL
Decimal
存取不一:<F_DECIMAL>: [-79228162514264300000000000000] != [-79228162514264337593543950335]
F_DECIMAL_NULL
decimal?
DECIMAL
Decimal
存取不一:<F_DECIMAL>: [-79228162514264300000000000000] != [-79228162514264337593543950335]
F_CHAR
char
TEXT NOT NULL
String
F_CHAR_NULL
char?
TEXT
String
F_STRING
string
TEXT NOT NULL
String
F_STRING_NULL
string
TEXT
String
F_DATETIME
DateTime
TEXT NOT NULL
String
F_DATETIME_NULL
DateTime?
TEXT
String
二、 C# vs MySQL:
C#
MySQL
字段名
类型
库类型
GetFieldType(#)
转换
备注
F_BOOL
bool
BOOL NOT NULL
Boolean
F_BOOL_NULL
bool?
BOOL NULL
Boolean
F_SBYTE
sbyte
TINYINT NOT NULL
SByte
sbyte_
F_SBYTE_NULL
sbyte?
TINYINT NULL
SByte
sbyte_
F_BYTE
byte
TINYINT UNSIGNED NOT NULL
Byte
F_BYTE_NULL
byte?
TINYINT UNSIGNED NULL
Byte
F_SHORT
short
SMALLINT NOT NULL
Int16
F_SHORT_NULL
short?
SMALLINT NULL
Int16
F_USHORT
ushort
SMALLINT UNSIGNED NOT NULL
UInt16
ushort_
F_USHORT_NULL
ushort?
SMALLINT UNSIGNED NULL
UInt16
ushort_
F_INT
int
INT NOT NULL
Int32
F_INT_NULL
int?
INT NULL
Int32
F_UINT
uint
INT UNSIGNED NOT NULL
UInt32
uint_
F_UINT_NULL
uint?
INT UNSIGNED NULL
UInt32
uint_
F_LONG
long
BIGINT NOT NULL
Int64
F_LONG_NULL
long?
BIGINT NULL
Int64
F_ULONG
ulong
BIGINT UNSIGNED NOT NULL
UInt64
ulong_
F_ULONG_NULL
ulong?
BIGINT UNSIGNED NULL
UInt64
ulong_
F_FLOAT
float
FLOAT NOT NULL
Single
极值溢出
F_FLOAT_NULL
float?
FLOAT NULL
Single
极值溢出
F_DOUBLE
double
DOUBLE NOT NULL
Double
F_DOUBLE_NULL
double?
DOUBLE NULL
Double
F_DECIMAL
decimal
DECIMAL NOT NULL
Decimal
极值溢出
F_DECIMAL_NULL
decimal?
DECIMAL NULL
Decimal
极值溢出
F_CHAR
char
CHARACTER NOT NULL
String
中文报错
F_CHAR_NULL
char?
CHARACTER NULL
String
中文报错
F_STRING
string
VARCHAR(50) NOT NULL
String
F_STRING_NULL
string
VARCHAR(50) NULL
String
F_DATETIME
DateTime
DATETIME NOT NULL
DateTime
F_DATETIME_NULL
DateTime?
DATETIME NULL
DateTime
三、 C# vs MSSQL:
C#
MSSQL
字段名
类型
库类型
GetFieldType(#)
转换
备注
F_BOOL
bool
bit NOT NULL
Boolean
F_BOOL_NULL
bool?
bit NULL
Boolean
F_SBYTE
sbyte
smallint NOT NULL
Int16
sbyte_short
F_SBYTE_NULL
sbyte?
smallint NULL
Int16
sbyte_short
F_BYTE
byte
tinyint NOT NUL;
Byte
F_BYTE_NULL
byte?
tinyint NULL
Byte
F_SHORT
short
smallint NOT NULL
Int16
F_SHORT_NULL
short?
smallint NULL
Int16
F_USHORT
ushort
int NOT NULL
Int32
ushort_int
F_USHORT_NULL
ushort?
int NULL
Int32
ushort_int
F_INT
int
int NOT NULL
Int32
F_INT_NULL
int?
int NULL
Int32
F_UINT
uint
bigint NOT NULL
Int64
uint_long
F_UINT_NULL
uint?
bigint NULL
Int64
uint_long
F_LONG
long
bigint NOT NULL
Int64
F_LONG_NULL
long?
bigint NULL
Int64
F_ULONG
ulong
real NOT NULL
Single
ulong_float
F_ULONG_NULL
ulong?
real NULL
Single
ulong_float
F_FLOAT
float
real NOT NULL
Single
F_FLOAT_NULL
float?
real NULL
Single
F_DOUBLE
double
float NOT NULL
Double
F_DOUBLE_NULL
double?
float NULL
Double
F_DECIMAL
decimal
decimal NOT NULL
Decimal
极值溢出
F_DECIMAL_NULL
decimal?
decimal NULL
Decimal
极值溢出
F_CHAR
char
char(1) NOT NULL
String
F_CHAR_NULL
char?
char(1) NULL
String
F_STRING
string
varchar(50) NOT NULL
F_STRING:
F_STRING_NULL
string
varchar(50) NULL
String
F_DATETIME
DateTime
datetime NOT NULL
DateTime
必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
F_DATETIME_NULL
DateTime?
datetime NULL
DateTime
四、C# vs Oracle:
C#
Oracle
字段名
类型
库类型
GetFieldType(#)
转换
备注
F_BOOL
bool
CHAR(1) NOT NULL
String
bool_string
F_BOOL_NULL
bool?
CHAR(1)
String
bool_string
F_SBYTE
sbyte
NUMBER(3) NOT NULL
Int16
sbyte_short
F_SBYTE_NULL
sbyte?
NUMBER(3)
Int16
sbyte_short
F_BYTE
byte
NUMBER(3) NOT NULL
Int16
byte_short
F_BYTE_NULL
byte?
NUMBER(3)
Int16
byte_short
F_SHORT
short
NUMBER(5) NOT NULL
Int32
short_int
F_SHORT_NULL
short?
NUMBER(5)
Int32
short_int
F_USHORT
ushort
NUMBER(5) NOT NULL
Int32
ushort_int
F_USHORT_NULL
ushort?
NUMBER(5)
Int32
ushort_int
F_INT
int
NUMBER(10) NOT NULL
Int64
int_long
F_INT_NULL
int?
NUMBER(10)
Int64
int_long
F_UINT
uint
NUMBER(10) NOT NULL
Int64
uint_long
F_UINT_NULL
uint?
NUMBER(10)
Int64
uint_long
F_LONG
long
NUMBER(19) NOT NULL
Decimal
long_decimal
F_LONG_NULL
long?
NUMBER(19)
Decimal
long_decimal
F_ULONG
ulong
NUMBER(19) NOT NULL
Decimal
ulong_decimal
F_ULONG_NULL
ulong?
NUMBER(19)
Decimal
ulong_decimal
F_FLOAT
float
BINARY_FLOAT NOT NULL
Single
F_FLOAT_NULL
float?
BINARY_FLOAT
Single
F_DOUBLE
double
BINARY_DOUBLE NOT NULL
Double
极值溢出
F_DOUBLE_NULL
double?
BINARY_DOUBLE
Double
极值溢出
F_DECIMAL
decimal
DECIMAL(33,3) NOT NULL
Decimal
F_DECIMAL_NULL
decimal?
DECIMAL(33,3)
Decimal
F_CHAR
char
CHAR(1) NOT NULL
String
F_CHAR_NULL
char?
CHAR(1)
String
F_STRING
string
VARCHAR(50) NOT NULL
String
不允许空字符
F_STRING_NULL
string
VARCHAR(50)
String
不允许空字符
F_DATETIME
DateTime
TIMESTAMP NOT NULL
DateTime
大值读取报错
F_DATETIME_NULL
DateTime?
TIMESTAMP
DateTime
大值读取报错
附、类型转换:
using System;
using System.Collections.Generic;
using System.Text; namespace vJine.Core.ORM { public class TypeConverter { public class sbyte_ /*: IConverter<sbyte>*/ { public static sbyte CONV_Q(object V) { return (sbyte)V; } } public class ushort_ /*: IConverter<ushort>*/ { public static ushort CONV_Q(object V) { return (ushort)V; } } public class uint_ /*: IConverter<uint>*/ { public static uint CONV_Q(object V) { return (uint)V; } } public class ulong_ /*: IConverter<ulong>*/ { public static ulong CONV_Q(object V) { return (ulong)V; } } public class bool_string /*: IConverter<bool>*/ { public static object CONV_I(object V) { if ((bool)V == true) { return "1"; } else { return "0"; } } public static bool CONV_Q(object V) { if ((string)V == "1") { return true; } else { return false; } } } public class sbyte_short /*: IConverter<sbyte>*/ { public static object CONV_I(object V) { return Convert.ToInt16(V); } public static sbyte CONV_Q(object V) { return Convert.ToSByte(V); } } public class byte_short /*: IConverter<byte>*/ { public static object CONV_I(object V) { return Convert.ToInt16(V); } public static byte CONV_Q(object V) { return Convert.ToByte(V); } } public class short_int /*: IConverter<short>*/ { public static object CONV_I(object V) { return Convert.ToInt32(V); } public static short CONV_Q(object V) { return Convert.ToInt16(V); } } public class ushort_int /*: IConverter<ushort>*/ { public static object CONV_I(object V, string Name) { return Convert.ToInt32(V); } public static ushort CONV_Q(object V, string Name) { return Convert.ToUInt16(V); } } public class int_long /*: IConverter<int>*/ { public static object CONV_I(object V) { return Convert.ToInt64(V); } public static int CONV_Q(object V) { return Convert.ToInt32(V); } } public class uint_long /*: IConverter<uint>*/ { public static object CONV_I(object V) { return Convert.ToInt64(V); } public static uint CONV_Q(object V) { return Convert.ToUInt32(V); } } public class long_decimal /*: IConverter<long>*/