仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 807|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之SQL SERVER 2000体系供应的跟踪函数(二...

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:28:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
支持多线程,充分利用CPU资源server|函数SQLSERVER2000体系撑持的跟踪函数(二)
BayaPavliashviliandKevinKline

http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=28000409



fn_trace_getfilterinfo和fn_trace_geteventinfo
这些函数能够用来检索一个跟踪的元数据(这些函数的输入的寄义是含混的,假如你不熟习跟踪的事务标记符和过虑的列的标记符.你能够看看SQLSERVER的在线匡助“sp_trace_setevent”)

这2个函数都是将跟踪标记符作为独一的参数.fn_trace_getfilterinfo前往指定跟踪的过虑后的信息.举例:假定我们限定跟PUBS数据库,由于我们试图办理该数据库中一个运转很长工夫的查询的妨碍,我们能够以下运转该函数:

SELECT*FROM::fn_trace_getfilterinfo(1)

--Results:

columnIDlogical_operatorcomparison_operatorvalue

------------------------------------------------------

3506pubs

这个输入告知我们,我们指定的跟踪过虑是在列为35(数据库名)和没有利用逻辑操纵符("AND"or"OR")由于只要一个前提.对照操纵符是”LIEE”(=6)过滤的值是”PUBS”.

依据你使用过虑的范例,你能够改动对照操纵符.在很多案例中,你可使用LIKE或NOTLIKE.并且,假如你限定跟踪指定的处置或指定的数据库,那末你能够指定"=",">","","<",">=",or"<="等逻辑操纵符.

备注:假如你经由过程SQLSERVERProfiler工具创建一个跟踪,这个跟踪会主动增添一个过滤器,不包含经由过程Profiler本人发生给SQLSERVER的跟踪过滤语句.假如你喜好懂得Profiler工具,只需复杂的将过滤器设置为off.

fn_tracegeteventinfo能够前往一个跟踪的事务信息,有良多的跟踪事务你能够指定.你指定的事务越多,就会有更多的信息被收拾,因而要细心.我劝说人人要懂得每个事务的寄义而且选择那些和你办理成绩亲切相干的事务.fn_tracegeteventinfo是一个十分有效的函数,当你由于分歧的目标要摹拟运转多个跟踪.

要取得我们创建的跟踪事务的标记符,我们能够以下运转fn_tracegeteventinfo函数:

SELECTDISTINCTeventid

FROM::fn_trace_geteventinfo(1)

--Results:

eventid

-----------

12

37

40

41

42

43

这个了局告知我们,这个跟踪在检测以下事务:

・SQL:BatchCompleted―eventidof12

・SP:Recompile―eventidof37

・SQL:StatementStarting―eventidof40

・SQL:StatementCompleted―eventidof41

・SP:Starting―eventidof42

・SP:Completed―eventidof43

一样的,我们能够运转不异的函数,举行很小的修改就能够取得一个跟踪的一切数据列

SELECTDISTINCTcolumnidFROM::fn_trace_geteventinfo(1)

--Results:

columnid

-----------

1

10

11

12

13

14

16

17

18

这里我们搜集的典范数据用来功能调剂,包含一个查询的:注释数据,程序名,上岸名,SPID,延续工夫,入手下手停止工夫,读取,写进和CPU占用.
利用体系供应的UDFs
如今你指定一些体系供应的UDFs,你能够经由过程这些体系函数创建本人的自界说函数.个中有一个次要的限定是自界说函数没法挪用存储历程.可是自界说函数能够挪用其他的自界说函数.上面的UDF初始化fn_trace_geteventinfo函数,使了局更便利浏览:

CREATEFUNCTIONdbo.fn_GetTraceColumns(@trace_idINT)

RETURNS@TraceColumnsTABLE(

column_idINT,

column_nameVARCHAR(155)

)

AS

BEGIN

INSERT@TraceColumns(

column_id)

SELECTDISTINCTcolumnidFROM::

fn_trace_geteventinfo(@trace_id)

UPDATE@TraceColumns

SETcolumn_name=

CASEcolumn_id

WHEN1THENTextData

WHEN3THENDatabaseID

WHEN4THENTransactionID

WHEN6THENNTUserName

--similarstatementsomittedhere-seeSource

ELSEother

END

RETURN

END

Thisfunctioncanbeexecutedasfollows:

SELECT*FROMdbo.fn_getTraceColumns(3)
提要
在这篇文章中,我先容了SQLSERVER2000供应的十分有效的体系自界说函数,但愿人人喜好而且研讨其他的体系供应的自界说函数.

下载:TRACEUDFS.SQL

参考资本:

・284790INF:HowtoCreateaSQLServer2000Trace

・283786INF:HowtoMonitorSQLServer2000Traces

・270599BUG:fn_trace_gettableFunctionCannotReadRolloverFiles273972GeneratedbySQL

・ProfilerHOWTO:ProgrammaticallyLoadTraceFilesintoTables

・268591PRB:ODBCTracingtoSQL.LOGCanSlowSQLServerorConsumeAllDiskSpace

・307786INF:TracingtoNetworkDriveMayReduceSQLServerThroughput

・286239BUG:ReplayToolUsesLoginNameColumnforSETUSERInsteadofDatabaseUserNameColumn

・AndrewNovicks"FindOutWhatTheyreDoingwithfn_get_sql"―www.databasejournal.com/features/mssql/article.php/2189761
mysqld进程在一个写入当中被杀死;计算机的意外关闭(例如,如果计算机掉电);一个硬件错误。
admin 该用户已被删除
沙发
发表于 2015-1-19 14:25:28 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
不帅 该用户已被删除
板凳
发表于 2015-1-26 22:42:38 | 只看该作者
从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。
分手快乐 该用户已被删除
地板
发表于 2015-2-4 22:19:11 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
谁可相欹 该用户已被删除
5#
 楼主| 发表于 2015-2-10 21:55:28 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-3-1 15:52:38 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
海妖 该用户已被删除
7#
发表于 2015-3-10 19:52:56 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
8#
发表于 2015-3-17 09:26:56 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
简单生活 该用户已被删除
9#
发表于 2015-3-24 06:03:51 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 02:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表