一个快速简明的Xpath教程
[ 2006-10-27 22:34:05 | 作者: progame ]
存档用
http://www.zvon.org/xxl/XPathTutorial/General/examples.html
共有22个 example, 还有多语言版本(可惜一开始没看到,看的是英文) 很容易上手
http://www.zvon.org/xxl/XPathTutorial/General/examples.html
共有22个 example, 还有多语言版本(可惜一开始没看到,看的是英文) 很容易上手
超有技术含量的批处理命令
[ 2006-10-25 23:11:02 | 作者: progame ]
C:\>echo %date%
2005-05-10 星期二
C:\>echo %date:~0,4%
2005
C:\>echo %date:~11%
星期二
C:\>echo %date:~-3%
星期二
C:\>echo %date:~-3,-1%
星期
这东西就是用来生成动态文件名用的,太帅了,当然和区域设置里的日期格式绑得很死,没办法,谁叫原始社会都是光着屁股呢2005-05-10 星期二
C:\>echo %date:~0,4%
2005
C:\>echo %date:~11%
星期二
C:\>echo %date:~-3%
星期二
C:\>echo %date:~-3,-1%
星期
我的一个使用例子:
del %date:~4%cmt.rar
C:\Progra~1\progame\ashley\ashley2005.exe abc
C:\Progra~1\WinRAR\Winrar a D:\progame\data_e~1\cmt%date:~4%.rar C:\Progra~1\progame\ashley\cmt\ -m5 -s -ep -ibck
C:\Progra~1\progame\ashley\ashley2005.exe abc
C:\Progra~1\WinRAR\Winrar a D:\progame\data_e~1\cmt%date:~4%.rar C:\Progra~1\progame\ashley\cmt\ -m5 -s -ep -ibck
这个批处理如果要定时执行怎么办? 用sql server的job去干这个活最合适不过了,当然用schedule task也行
Sql Server 自动查询优化有时候也是靠不住的
[ 2006-10-19 20:44:34 | 作者: progame ]
这样的一个查询
fitler3 中使用了计算函数,filter4 非常复杂,filter1 和 filter2 可以把结果集的范围迅速减小,所以利用 fitler2 的一个 date 索引是最好的检索方案。
但是sql server不是这样想的,它居然对表进行了聚集索引的扫描,是 scan,不是 seek! 结果在 scan 后的 fitler 时因为 function 的计算非常耗时,导致整个查询需要2分多钟,怒!
想办法吧,改成这样
效果依然,sql server 肯定在说,小样,想蒙我,以为穿件马夹我不认识你了?!
没办法,为了按照自己的意思做,强行使用 table hints, 人为指定使用的 index:
难道说我的 sqlbroker 需要考虑加上 query hints? 苍天啊,大地啊,等到有需要那一天再说吧。
select ... from table where fitler1 and fitler2 and filter3 and fitler4
fitler3 中使用了计算函数,filter4 非常复杂,filter1 和 filter2 可以把结果集的范围迅速减小,所以利用 fitler2 的一个 date 索引是最好的检索方案。
但是sql server不是这样想的,它居然对表进行了聚集索引的扫描,是 scan,不是 seek! 结果在 scan 后的 fitler 时因为 function 的计算非常耗时,导致整个查询需要2分多钟,怒!
想办法吧,改成这样
select * from (select ... from table where filter1 and filter2) a where filter3 and filter4
效果依然,sql server 肯定在说,小样,想蒙我,以为穿件马夹我不认识你了?!
没办法,为了按照自己的意思做,强行使用 table hints, 人为指定使用的 index:
select * from table with (index(ix_table_dateindex)) where fitler1 and filter2 and filter3 and filter4
难道说我的 sqlbroker 需要考虑加上 query hints? 苍天啊,大地啊,等到有需要那一天再说吧。
没有日志,只有MDF文件如何恢复数据库(转)
[ 2006-10-17 20:15:33 | 作者: progame ]
由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。
如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
G.下面执行真正的恢复操作,重建数据库日志文件
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。数据恢复 sql数据库修复 密码恢复 sql数据库恢复 硬盘异响 坏道修复 文件恢复 sql server修复 文件修复 raid数据恢复 sql数据库修复 raid磁盘阵列 sql恢复 sql server恢复 硬盘数据恢复 硬盘坏道修复 硬盘数据修复 数据修复
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
H.验证数据库一致性(可省略)
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
I.设置数据库为正常状态
J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。
已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。
但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息 已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'test'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。
怎么办呢?别着急,下面我们举例说明恢复办法。 未能打开新数据库 'test'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
F.设置test为紧急修复模式 go
sp_configure 'allow updates',1
go
reconfigure with override
go
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表 G.下面执行真正的恢复操作,重建数据库日志文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
执行过程中,如果遇到下列提示信息: 服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。数据恢复 sql数据库修复 密码恢复 sql数据库恢复 硬盘异响 坏道修复 文件恢复 sql server修复 文件修复 raid数据恢复 sql数据库修复 raid磁盘阵列 sql恢复 sql server恢复 硬盘数据恢复 硬盘坏道修复 硬盘数据修复 数据修复
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
H.验证数据库一致性(可省略)
dbcc checkdb('test')
一般执行结果如下: CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
I.设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。 J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
sp_configure 'allow updates',0
go
reconfigure with override
go
go
reconfigure with override
go
科学研究表明:倒霉是一系列接踵而来的事情
[ 2006-10-15 20:20:18 | 作者: progame ]
人生就是折腾! 多米诺骨牌效应加上蝴蝶效应再加上巴甫洛夫反应,你想爬起来都难,科学就是科学,即便是二手科学家研究出来的东西,这你得服。
有剧情 有动作 有感情的片子,成龙大哥老确实是老了,撒开腿丫子跑的时候明显没有城市猎人里8字脚逃命那样快了,从后面的花絮看,还是很拼命了,可惜岁月不饶人,后继又无人,古天乐长得是帅,可是动作实在是不怎么行,吴彦祖和谢霆锋还在里面断背了一下,老许也重出江湖,不过许式喜剧年代还在星爷前面,有代沟的。
一部挺能吸引人的片子,虽然知道最后肯定是欢喜大结局,但值得一看。元彪可有可无的人,发福之后动作更加变形了,没有力道,功夫片香港也没有好看的了,托尼·贾的力度,柔韧性,弹跳和滞空能力都非常惊人,但打得看上去更像杂技了,老美也只能你一拳来我一拳地打,想看功夫片,只能再温习一下断刀和战狼传说了。
黄金年代不再,还是让好来坞的大制作大场面来刺激我们的眼球吧。
一部挺能吸引人的片子,虽然知道最后肯定是欢喜大结局,但值得一看。元彪可有可无的人,发福之后动作更加变形了,没有力道,功夫片香港也没有好看的了,托尼·贾的力度,柔韧性,弹跳和滞空能力都非常惊人,但打得看上去更像杂技了,老美也只能你一拳来我一拳地打,想看功夫片,只能再温习一下断刀和战狼传说了。
黄金年代不再,还是让好来坞的大制作大场面来刺激我们的眼球吧。
SharpHsql -- 只适合用于演示数据的数据库引擎
[ 2006-10-12 23:33:06 | 作者: progame ]
SharpHSql 是一个纯C#写就的支持sql92标准的轻量数据库引擎,当我们为了便于发布而选用单DLL的数据库引擎时,SharpHsql以它的100% managed code而受到青睐。大家一下子欢呼:找到access的替代品了!
但实际上,我认为SharpHsql应该谨慎地用于实际生产环境,我们先来了解一下它的存储原理。
不像其它的纯内存数据库或文件型数据库,SharpHSql在存储数据时相当取巧,使用.cfg文件存放一些数据库的信息和其它文件的位置,使用.log存放所有的DDL SQL,使用.data文件存放Cache的二进制序列化流,用.backup存放.data一样的数据,相当于多一个存放多一层保险。
查看SharpHsql源码,里面的处理还是比较简单的:
每一次insert delete (update会分解成先 delete 再 insert,只是 check 会放到 insert 后进行)都分别有一个 transaction 来对应
这个transaction是用于事务回滚时的rollback的,当rollback时,则用 delete 对应 insert ,用 insert 对应 delete
Table 是通过 Cache 来存放 Rows 的,也就是说数据的实际存储是在 Cache 这个类中
Index类是一棵AVL树,用来数据检索,当有row更新时,如果有索引存在,则需要更新这棵树
Channel就是用了区分transaction和权限检查,实际只是一个process中可以多channel访问同一数据库,而其它的process想访问是不行的
因为Database类打开数据库时,使用的是独占式文件打开,因为如果不独占的话,Cache的写入是会出问题的
数据库打开时的步骤:
1、取cfg文件,得到信息
2、反序列化.data,得到Cache
3、执行.log得到数据库结构
所以我们可以看出SharpHsql是独占式访问的,而且是完全加载所有数据到内存的
这样的结构我觉得仍然应该视其为一个内存数据库引擎,对于数据量会逐渐变大的实际生产环境来说,慎用;对于多并发环境来说,别用
所以SharpHsql要出pocket版本,使用compact framework,看来它的定位也是很准确的
如果利用SharpHSql的sql ...
阅读全文...
但实际上,我认为SharpHsql应该谨慎地用于实际生产环境,我们先来了解一下它的存储原理。
不像其它的纯内存数据库或文件型数据库,SharpHSql在存储数据时相当取巧,使用.cfg文件存放一些数据库的信息和其它文件的位置,使用.log存放所有的DDL SQL,使用.data文件存放Cache的二进制序列化流,用.backup存放.data一样的数据,相当于多一个存放多一层保险。
查看SharpHsql源码,里面的处理还是比较简单的:
每一次insert delete (update会分解成先 delete 再 insert,只是 check 会放到 insert 后进行)都分别有一个 transaction 来对应
这个transaction是用于事务回滚时的rollback的,当rollback时,则用 delete 对应 insert ,用 insert 对应 delete
Table 是通过 Cache 来存放 Rows 的,也就是说数据的实际存储是在 Cache 这个类中
Index类是一棵AVL树,用来数据检索,当有row更新时,如果有索引存在,则需要更新这棵树
Channel就是用了区分transaction和权限检查,实际只是一个process中可以多channel访问同一数据库,而其它的process想访问是不行的
因为Database类打开数据库时,使用的是独占式文件打开,因为如果不独占的话,Cache的写入是会出问题的
数据库打开时的步骤:
1、取cfg文件,得到信息
2、反序列化.data,得到Cache
3、执行.log得到数据库结构
所以我们可以看出SharpHsql是独占式访问的,而且是完全加载所有数据到内存的
这样的结构我觉得仍然应该视其为一个内存数据库引擎,对于数据量会逐渐变大的实际生产环境来说,慎用;对于多并发环境来说,别用
所以SharpHsql要出pocket版本,使用compact framework,看来它的定位也是很准确的
如果利用SharpHSql的sql ...
阅读全文...
1

