comma lite

       comma lite是一个非常复杂和重要的话题,需要深入研究和思考。我将尽力为您提供相关的信息和建议。

1.java转成c++

2.SQL Server2000 SP3补丁放哪个文件夹?

comma lite

java转成c++

       // Token.java

       // Tokens for Clite, as discussed in Chapters 2 and 3

       #include<iostream>

       #include<string>

       using namespace std;

       public class Token

       {

        private static final int KEYWORDS = TokenType.Eof.ordinal();

        private static final string[] reserved[KEYWORDS];

        private static Token[] token[KEYWORDS];

        private TokenType type;

        private string value = "";

        private Token (TokenType t, string v) {

        type = t;

        value = v;

        if (t < TokenType.Eof) {

        int ti = t.ordinal();

        reserved[ti] = v;

        token[ti] = this;

        }

        }

        public TokenType type() { return type; }

        public string value() { return value; }

        public keyword( string name ) {

        char ch = *name;

        if (ch >= 'A' && ch <= 'Z') return mkIdentTok(name);

        for (int i = 0; i < KEYWORDS; i++)

        if (name == reserved[i]) return token[i];

        return mkIdentTok(name);

        } // keyword

        public Token mkIdentTok (string name) {

        return new Token(TokenType.Identifier, name);

        }

        public Token mkIntLiteral (string name) {

        return new Token(TokenType.IntLiteral, name);

        }

        public Token mkFloatLiteral (string name) {

        return new Token(TokenType.FloatLiteral, name);

        }

        public Token mkCharLiteral (string name) {

        return new Token(TokenType.CharLiteral, name);

        }

        public string tostring () {

        if (type < TokenType.Identifier) return value;

        return type + '\t' + value;

        } // tostring

       } // Token

       int main()

       {

        Token eofTok(TokenType.Eof, "<<EOF>>");

        Token boolTok(TokenType.Bool, "bool");

        Token charTok(TokenType.Char, "char");

        Token elseTok(TokenType.Else, "else");

        Token falseTok(TokenType.False, "false");

        Token floatTok(TokenType.Float, "float");

        Token ifTok(TokenType.If, "if");

        Token intTok (TokenType.Int, "int");

        Token mainTok (TokenType.Main, "main");

        Token trueTok (TokenType.True, "true");

        Token whileTok (TokenType.While, "while");

        Token leftBraceTok (TokenType.LeftBrace, "{");

        Token rightBraceTok (TokenType.RightBrace, "}");

        Token leftBracketTok (TokenType.LeftBracket, "[");

        Token rightBracketTok (TokenType.RightBracket, "]");

        Token leftParenTok (TokenType.LeftParen, "(");

        Token rightParenTok (TokenType.RightParen, ")");

        Token semicolonTok (TokenType.Semicolon, ";");

        Token commaTok (TokenType.Comma, ",");

        Token assignTok (TokenType.Assign, "=");

        Token eqeqTok (TokenType.Equals, "==");

        Token ltTok (TokenType.Less, "<");

        Token lteqTok (TokenType.LessEqual, "<=");

        Token gtTok (TokenType.Greater, ">");

        Token gteqTok (TokenType.GreaterEqual, ">=");

        Token notTok (TokenType.Not, "!");

        Token noteqTok (TokenType.NotEqual, "!=");

        Token plusTok (TokenType.Plus, "+");

        Token minusTok (TokenType.Minus, "-");

        Token multiplyTok (TokenType.Multiply, "*");

        Token divideTok (TokenType.Divide, "/");

        Token andTok (TokenType.And, "&&");

        Token orTok = Token(TokenType.Or, "||");

        cout<<eofTok<<endl;

        cout<<whieTok<<endl;

       return 0;

       }

SQL Server2000 SP3补丁放哪个文件夹?

       如何优化XP?

       为了达到这个目的,我们主要从四个方面入手:

       1、减少磁盘空间占用

       2、终止不常用的系统服务

       3、安全问题

       4、另外一些技巧

       一、瘦身行动

       1、在各种软硬件安装妥当之后,其实XP需要更新文件的时候就很少了。删除系统备份文件吧:开始→运行→sfc.exe /purgecache 近3xxM。

       2、删除驱动备份: %windows%\driver cache\i386目录下的driver.cab文件,通常这个文件是76M。(我装了sp1 但是sp1的cab我还是没有删除)

       3、偶没有看help的习惯,所以保留着%windows%\help目录下的东西对我来说是一种伤害,呵呵。。。都干掉,近4xM。

       4、一会在升级完成后你还会发现%windows%\多了许多类似$NtUninstallQ311889$这些目录,都干掉吧,1x-3xM。

       5、正好硬盘中还有win2000/server等,所以顺便把pagefile.sys文件都指向一个地方:控制面板→系统→性能?高级→虚拟内存→更改,注意要点“设置”才会生效。

       6、卸载不常用组件:用记事本修改\%windows%\inf\sysoc.inf,用查找/替换功能,在查找框中输入,hide,全部替换为空。这样,就把所有的,hide都去掉了,存盘退出后再运行“添加-删除程序”,就会看见“添加/删除 Windows 组件”中多出不少选项;删除掉游戏啊,码表啊等不用的东西。

       7、?除\windows\ime下不用的?入法,8xM。我重新安装了自己用的zrm输入法,赫赫。

       8、如果实在空间紧张,启用NTFS的压缩功能,这样还会少用2x% 的空间,不过我没作。

       9、关了系统还原,这破功能对我这样常下载、测试软件的人来说简直是灾难,用鼠标右健单击桌面上的“我的电脑”,选择“属性”,找到“系统还原”,选择“在所有驱动器上关闭系统还原”呵呵,又可以省空间了。

       10、还有几个文件,挺大的,也没什么用。。。。忘了名字 :( ,刚安装的系统可以用查找功能查找大于50M的文件来看看,应该能找到的。

       如果你能按照上面的过程做完,你的原本1.4G的XP,完全可以减少到800以下。

       二、加速计划

       WinXP的启动会有许多影响速度的功能,尽管ms说已经作最优化处理过,但对我们来说还是有许多可定制之处。我一般是这样来做的。

       1、修改注册表的run键,取消那几个不常用的东西,比如Windows Messenger 。启用注册表管理器:开始→运行→Regedit→找到“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\MSMSGS” /BACKGROUND 这个键值,右键→删除,世界清静多了,如果你不想用中文的输入法了,那你就干掉cofmon,zrm(自然码)可以不要,但是紫光拼音要。拼音加加不知道。

       2、修改注册表来减少预读取,减少进度条等待时间,效果是进度条跑一圈就进入登录画面了,开始→运行→regedit启动注册表编辑器,找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters, 有一个键EnablePrefetcher把它的数值改为“1”就可以了。另外不常更换硬件的朋友可以在系统属性中把总线设备上面的设备类型设置为none(无)。

       3、关闭系统属性中的特效,这可是简单有效的提速良方。点击开始→控制面板→系统→高级→性能→设置→在视觉效果中,设置为调整为最佳性能→确定即可。这样桌面就会和win2000很相似的,我还是挺喜欢XP的蓝色窗口,所以在“在窗口和按钮上使用视觉样式”打上勾,这样既能看到漂亮的蓝色界面,又可以加快速度。

       4、我用Windows commadner+Winrar来管理文件,Win XP的ZIP支持对我而言连鸡肋也不如,因为不管我需不需要,开机系统就打开个zip支持,本来就闲少的系统资源又少了一分,点击开始→运行,敲入:“regsvr32 /u zipfldr.dll”双引号中间的,然后回车确认即可,成功的标志是出现个提示窗口,内容大致为:zipfldr.dll中的Dll UnrgisterServer成功。

       5、据说XP的一个系统服务Qos,这个调度要占用一定的网络带宽,像我这样的一毛不拔的人是无法忍受的,去掉方法是:开始菜单→运行→键入 gpedit.msc ,出现“组策略”窗口, 展开 "管理模板”→“网络” , 展开 "QoS 数据包调度程序", 在右边窗右键单击“限制可保留带宽" ,在属性中的“设置”中有“限制可保留带宽" ,选择“已禁用”,确定即可。当上述修改完成并应用后,用户在网络连接的属性对话框内的一般属性标签栏中如果能够看到"QoS Packet Scheduler(QoS 数据包调度程序)"。说明修改成功,否则说明修改失败,顺便把网络属性中的那个Qos 协议也一起干掉(卸载)吧。

       (注意,你如果是adsl拨号上网,你就不要管这个优化)

       6、快速浏览局域网络的共享

       通常情况下,Windows XP在连接其它计算机时,会全面检查对方机子上所有预定的任务,这个检查会让你等上30秒钟或更多时间。去掉的方法是开始→运行→Regedit→在注册表中找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current Version\Explorer\RemoteComputer\NameSpace。在此键值下,会有个{D6277990-4C6A-11CF-8D87-00AA0060F5BF}键,把它删掉后,重新启动计算机,Windows XP就不再检查预定任务了,hoho~~~ ,速度明显提高啦!

       7、关掉调试器Dr. Watson

       我好像从win95年代开始一次也没用过这东西,可以这样取消:打开册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug子键分支,双击在它下面的Auto键值名称,将其“数值数据”改为0,最后按F5刷新使设置生效,这样就取消它的运行了。沿用这个思路,我们可以把所有具备调试功能的选项取消,比如蓝屏时出现的memory.dmp,在“我的电脑→属性→高级→设置→写入调试信息→选择无”等等。

       8、被我终止的服务列表以及相关说明

       1)alerter 错误警报

       2)automatic updates windows 自动更新

       3)background intelligent transfer service 微软说使用空闲的网络带宽传数据

       4)clipbook 与远程电脑来共享剪贴板内容,我看还是免了吧

       5)Computer browser 说什么要维护网络更新列表

       6)DHCP client 我不需要这东西(adsl要的,如果你是动态ip )

       7)Distributed link tracking client 保持局域网连接更新等信息,偶很少用局域网,这东西占用4M左右内存。

       8)Distributed Transaction coordinator 协调xxx,和上面的差不多

       9)DNS Client 我不需要这东西

       10)Error reporting service 错误报告

       11)Event Log 系统日志纪录

       12)Fast user switching compatibility 用户切换

       13)help and support 帮助

       14)Human interface device access 据说是智能设备。。。

       15)IMAPI CD-burning COM service 偶不用这个刻碟

       16)Indexing service 索引,索引什么呢?

       17)Internet Connection Firewall(ICF) ICF防火墙

       18)IPSEC Services 这个我不懂,你想知道问Quack去

       19)Logical Disk manager administrative service 配置磁盘

       20)messenger 好像net send 等东西用的就是这个功能

       21)MS software shadow copy provider 卷复制备份的

       22)Net Logon 我可不想让黑客远程登录进来,关!

       23)Netmeeting remote desktop sharing 我不用netmeeting

       24)Network DDE  动态数据交换传输

       25)Network DDE DSDM 和上面差不多

       26)Network Location Awareness 关,我的机子不作共享

       27)NTLM Security support provider-telnet 呵呵,关!

       28)Performance logs and alert 将系统状态写日志或发警告

       29)Portable media serial number 关!

       30)Print Spooler 打印机,不幸的是我的机子不连接Print ~

       31) QoS RSVP 关!

       32)Remote desktop help session manager 远程帮助服务

       33)remote Procedure Call LOCATOR 管理RPC

       34)remote registry 远程管理注册表

       35)removable storage 

       36)routing and remote access 我干脆禁用了它

       37)security accounts manager 我的系统只是一个客户系统,不用iis。

       38)smart card

       39)smart card helper 关!!!

       40)SSDP Discovery service 我用不到这个

       41)system event notification 如果是服务器肯定要记录的

       42)system restore service 系统还原服务

       43)task scheduler windows 计划服务

       44)Telephony 拨号服务,我不拨号还不行吗?

       45)telnet

       46)terminal services 终端服务

       47)uninterruptible power supply UPS,我没有呀

       48)universal plug and play device host 太先进了点,用不到

       49)upload manager 关了也能传输文件的

       50)volume shadow copy 又是备份,晕

       51)webclient 没用过

       52)Windows Installer MSI服务,我一直关着。

       53)windows image acquisition (WIA) 数码设备用的

       54)windows management instrumentation driver extensions 关了

       55)windows time 时间服务

       56)wireless zero configuration 无线网络,偶用不到的

       57)WMI perfromance adapter 关!

       这里面的一些服务是刚开始就是关的,但我忘了,所以只好把现在系统中关闭的服务基本都列了出来。你根据自己的情况酌情处理吧。

       三、我安全吗

       多了不谈,基本的共享还是得关的:

       修改注册表为以下两个样式:

       去除共享

       Windows Registry Editor Version 5.00

       [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]

       "AutoShareServer"=dword:00000000

       "AutoSharewks"=dword:00000000

       去除IPC$管理

       Windows Registry Editor Version 5.00

       [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]

       "restrictanonymous"=dword:00000001

       或者将上面两个保存成个.REG文件,然后双击导入就可以了。

       顺便把不要脸的的3721也屏蔽,在hosts文件中加入:

       127.0.0.1 cnsmin.3721.com

       127.0.0.1 www.3721.net

       四、其他技巧

       1、给鼠标右键增加个复制到.../移动到...功能

       Windows Registry Editor Version 5.00

       [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex]

       [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers]

       [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\Copy To]

       @="{C2FBB630-2971-11D1-A18C-00C04FD75D13}"

       [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\Move To]

       @="{C2FBB631-2971-11D1-A18C-00C04FD75D13}"

       

       将上面内容保存成add.reg文件,然后双击导入就可以了。

       2、关了错误报告,KAO !这东西搞得我像个微软免费的测试员似的:点击控制面板---->系统---->高级---->右下角--->错误报告---->禁用错误汇报?>确定!

       3、取消分组显示:右键单击任务栏的空白区域,在弹出的菜单中选择“属性”,在弹出的窗口中,取消“分组相似任务栏按钮”前面的对钩,确定就可以了。

       4、找回经典的登录窗口,WinXP默认的登录界面虽然漂亮,但如果你想用一个列表中没有的用户登录,你会发现无从下手,改回经典窗口的方法是:点击“开始”→“控制面板”→“用户账户”→“更改用户登录或注销的方式”→把“使用欢迎屏幕”前面的对钩取消,最后点“应用选项”就OK啦。

       5、将自己最常用的输入法设置一个快捷键:点击“开始”→“控制面板”→“区域和语言选项”→在弹出的窗口中选择“语言”→“详细信息”→“键设置”在弹出的窗口中找到自己用的输入法,点“更改按键顺序”→在这里选一个快捷键就可以了。

       6、关闭计算机时自动结束不响应的任务,注册表:HKEY_CURRENT_USER\Control Panel\Desktop 中的“AugoEndTasks”的键值改为“1”

       7、关闭自动更新:右键单击“我的电脑”,点击属性,点击“自动更新”,在“通知设置”一栏选择“关闭自动更新。我将手动更新计算机”一项。

       8、减少开机磁盘扫描等待时间,开始→运行,键入“chkntfs/t:0”

       5.0 文档说明

       除可用的新功能之外,本节还包含运行 SP3 时可能发生的问题。这些问题可能发生在从 SQL Server 2000、SQL Server 2000 SP1 或 SQL Server 2000 SP2 运行 Service Pack 进行升级的情况下。本节未描述 SP3 中提供的所有修补程序。要查看这些修补程序的完整列表,请参见 Microsoft 知识库文章 306908。

       本节中的 Analysis Services 和 Meta Data Services 部分不适用于仅 Desktop Engine 安装。

       本自述文件中未能及时提供的 SQL Server 2000 Service Pack 3 相关信息,将在 Microsoft 知识库文章 330022 中提供。该文章可以在 Microsoft 产品技术支持服务知识库中找到。

       5.1 数据库引擎和 Desktop Engine 增强功能

       下列增强功能适用于安装 Database Components SP3 的 SQL Server 2000 实例。也适用于安装 Desktop Engine SP3 的 Desktop Engine 实例。

       5.1.1 在 Database Components SP3 中使用中文、日语或朝鲜语字符

       在 SP1 中引入

       如果在运行 Windows NT 4.0 的服务器或 Windows 98 上安装了 Database Components SP3 之后再升级到 Windows 2000,Windows 2000 升级过程将替换某些系统文件。在对中文、日语或朝鲜语字符排序时,需要使用这些系统文件。如果在 SQL Server 数据库中使用中文、日语或朝鲜语字符,在升级到 Windows 2000 后,需重新运行 SP3 附带的 Sqlredis.exe。有关运行 Sqlredis.exe 的更多信息,请参见 4.2 再发布 SP3 数据访问组件。

       说明 如果客户机或服务器上没有含中文、日语或朝鲜语字符的数据库,则无需重新应用 Sqlredis.exe。

       5.1.2 散列组已删除

       在 SP1 中引入

       散列组 (hash teams) 已删除。由于 SQL Server 2000 中的改进,使用散列组已不能获得它们在 SQL Server 7.0 中所提供的性能好处。而且,删除散列组使得 SQL Server 2000 更加稳定。

       因此,查询优化器不再用散列组生成查询计划。

       在极个别的情况下,删除散列组可能会使查询的处理速度减慢。请分析这类查询并确定创建更适合的索引是否能使查询性能恢复到以前的水平。

       5.1.3 添加的 Affinity Mask 开关

       在 SP1 中引入

       此 Service Pack 添加了两个 Affinity Mask 开关。

       Affinity Mask I/O 开关

       使用此 Service Pack,可以指定使用哪些 CPU 来运行用于磁盘 I/O 操作的线程。这一开关必须与 Affinity Mask 选项结合起来使用。有关更多信息,请参见 Microsoft 产品技术支持服务知识库中的文章 298402。有关搜索知识库的指导,请参见 1.3 关于 SP3 的其他信息。

       Affinity Mask 连接开关

       使用此 Service Pack,可以将支持虚拟接口体系结构 (VIA) 的系统配置为将 SQL Server 连接从某些网卡绑定到一个处理器或一组处理器。这一开关必须与 Affinity Mask 选项结合起来使用。有关更多信息,请参见 Microsoft 产品技术支持服务知识库中的文章 299641。

       5.1.4 筛选的索引视图

       在 SP2 中引入

       如果遇到 Microsoft 知识库文章 306467 中描述的 SQL Server 2000 错误 355069,此 Service Pack 只能防止由于数据修改而在未来出现异常结果。所以,除了应用此修补程序外,所有基于带有筛选条件的视图的索引都必须重新创建。有关更多信息,请参见 Microsoft 产品技术支持服务知识库。

       5.1.5 安装完成后重建全文目录

       在 SP3 中引入

       作为 SP3 安装的一部分,将重建所有全文目录。该重建是自动的,并且会大量耗用资源。在完成该重建过程之前,根据全文目录进行查询可能返回部分结果或无结果。安装 SP3 之后,系统事件日志将包含可指出目录已损坏、属于较早版本并需要重建等方面的记录。

       有关信息,请参见知识库文章 327217,其中还讨论了重建过程中保持全文搜索可用以及避免自动重建的可能的解决办法。

       5.1.6 sp_change_users_login 的语法更改

       在 SP1 中引入

       使用 @Action=Auto_Fix 参数运行 sp_change_users_login 时,现在必须指定密码。sp_change_users_login 将把此密码赋给它为用户创建的任何新的登录。下例显示了新的 @Password 参数:

       sp_change_users_login [ @Action = ] 'action'

        [ , [ @UserNamePattern = ] 'user' ]

        [ , [ @LoginName = ] 'login' ]

        [ , [ @Password = ] 'password' ]

       @Password 参数只能与 @Action=Auto_Fix 一起使用。下例显示了在使用 Auto_Fix 时 sp_change_users_login 命令的新语法。SQL Server 联机丛书中的其他示例没有变化。

       USE pubs

       go

       EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-36'

       go

       5.1.7 默认情况下禁用对 OLE DB 提供程序的特殊访问

       在 SP1 中引入

       如果明确设置了 DisallowAdhocAccess 注册表选项,则默认情况下,不允许对 OLE DB 提供程序进行特殊访问。这表示特殊查询语法(如 OPENDATASOURCE 和 OPENROWSET)无法针对远程服务器工作。要允许特殊访问,必须明确将 DisallowAdhocAccess 选项设置为 0。

       5.1.8 新的 SqlServerLike 提供程序选项

       在 SP1 中引入

       为了更有效地处理包含 LIKE 谓词的远程查询,在 SP3 中添加了 SqlServerLike 选项。如果将该选项设置为 1,则 SQL Server 可以对提供程序执行包含 LIKE 谓词的强制查询。以前,如果提供程序不是 SQL Server OLE DB 提供程序,则总是基于本地 SQL Server 实例来计算包含 LIKE 谓词的分布式查询。

       5.1.9 分布式查询的扩展错误消息

       在 SP3 中引入

       对于分布式查询,SQL Server 除了返回服务器错误消息以外,还返回提供程序错误消息。当相互链接的服务器之间的查询导致错误时,SQL Server 将检查该提供程序是否支持 IErrorRecords OLE DB 接口。如果支持此接口,则 SQL Server 将调用 GetErrorInfo 函数从该提供程序中获取附加的错误消息,并将这些信息作为错误消息的一部分返回给用户。如果不支持 IErrorRecords 接口,则 SQL Server 的行为将不会改变:SQL Server 将返回一般性错误。

       例如,如果对使用 MSDASQL 的服务器(该服务器不支持 sql_variant)运行下列查询:

       SELECT * FROM remote2k.dqtable.dbo.sqlvariantnotnull --Remote2k 是一台还回服务器。

       在应用 SP3 之前,SQL Server 返回下列错误消息:

       服务器: 消息 7356,级别 16,状态 1,行 1

       OLE DB 提供程序“msdasql”为某列提供了不一致的元数据。

       元数据信息在执行时被更改了。

       在应用 SP3 之后,SQL Server 将返回下列错误消息:

       服务器: 消息 7356,级别 16,状态 1,行 1

       OLE DB 提供程序“msdasql”为某列提供了不一致的元数据。

       元数据信息在执行时被更改了。

       OLE DB 错误跟踪 [非界面错误: 报告对象“"dqtable"."dbo"."sqlvariantnotnull"”的列“sql_variant”(编译时序号 3)的 DBCOLUMNFLAGS_ISFIXEDLENGTH 在编译时为 16,运行时为 0]。

       5.1.10 新函数 fn_get_sql 返回 SQL 语句

       在 SP3 中引入

       SP3 包含新函数 fn_get_sql,该函数为指定的 SQL 句柄返回 SQL 语句的文本。另外,为了支持此函数,在 sysprocesses 系统表中添加了三个新列,如下表所示。

       列名 数据类型 描述

       sql_handle binary(20) 表示当前正在执行的批或对象。

       stmt_start int 指定对当前 SQL 语句 sql_handle 的起始偏移量。

       stmt_end int 指定对当前 SQL 语句 sql_handle 的终止偏移量。

       值 -1 表示当前语句运行到 fn_get_sql 函数为指定的 sql_handle 返回的结果的结尾。

       语法

       fn_get_sql ([ @SqlHandle = ] SqlHandle )

       参数

       [ @SqlHandle = ] SqlHandle

       句柄值。SqlHandle 的数据类型是 binary(20)。

       返回表

       列名 数据类型 描述

       dbid smallint 数据库 ID。对于特殊的 SQL 语句,该值为 NULL。

       objectid Int 数据库对象的 ID。对于特殊的 SQL 语句,该值为 NULL。

       number smallint 组的编号(如果过程已分组)。对于不是过程的项,该值为 0;对于特殊的 SQL 语句,该值为 NULL。

       encrypted Bit 指示对象是否已加密。如果对象未加密,该值为 0;如果对象已加密,该值为 1。

       text Text SQL 语句的文本。对于已加密对象,该值为 NULL。

       备注

       可以从 sysprocesses 系统表的 sql_handle 列中获取一个有效的 SQL 句柄。

       如果传递的句柄已不再存在于高速缓存中,fn_get_sql 将返回空结果集。如果传递的句柄无效,批处理将停止,并返回下列错误消息:

       服务器: 消息 569,级别 16,状态 1,过程 fn_get_sql,行 12 传递给 fn_get_sql 的句柄无效。

       SQL Server 2000 无法高速缓存某些 Transact-SQL 语句,如大容量复制语句和包含的字符串文字大于 8 KB 的语句。无法使用 fn_get_sql 函数检索这些语句的句柄。

       结果集的 text 列已针对可能包含密码的文本进行了筛选。

       fn_get_sql 函数返回的信息类似于 DBCC INPUTBUFFER 命令。当无法使用 DBCC INPUTBUFFER 时,请使用 fn_get_sql 函数,例如:

       当事件具有 255 个以上的字符时。

       当必须返回存储过程的当前最高嵌套级时。例如,有两个存储过程,分别名为 sp_1 和 sp_2。如果 sp_1 调用 sp_2 并且在 sp_2 运行时从 sysprocesses 系统表获得句柄,则 fn_get_sql 函数将返回 sp_2 的有关信息。此外,fn_get_sql 函数还会返回处于当前最高嵌套级的存储过程的完整文本。

       权限

       只有 sysadmin 固定服务器角色的成员可以运行 fn_get_sql 函数。

       示例

       数据库管理员可以使用 fn_get_sql 函数帮助诊断有问题的进程。当管理员确定有问题的服务器进程 ID (SPID) 之后,就可以检索该 SPID 的 SQL 句柄,使用该句柄调用 fn_get_sql 函数,并使用开始和终止偏移量来确定有问题的 SPID 的 SQL 文本。例如:

       DECLARE @Handle binary(20)

       SELECT @Handle = sql_handle FROM sysprocesses WHERE spid = 52

       SELECT * FROM ::fn_get_sql(@Handle)

       5.1.11 跨数据库所有权链接

       在 SP3 中引入

       此 Service Pack 提供了一个新选项,可以用来打开和关闭跨数据库所有权链接。在安装过程中,“后向兼容性一览表”对话框显示一个用于配置跨数据库所有权链接的选项。默认情况下,安装程序对所有用户数据库关闭跨数据库的所有权链接。您可以对所有数据库启用跨数据库的所有权链接。有关更多信息,请参见“后向兼容性一览表”对话框。

       说明 建议不要对所有数据库启用跨数据库所有权链接。

       安装后,可以使用下列方法对实例中的所有数据库打开或关闭跨数据库的所有权链接:

       使用 sp_configure 系统存储过程的新参数 Cross DB Ownership Chaining。

       在企业管理器中,使用“SQL Server 属性”对话框中的“安全性”选项卡上的“允许跨数据库所有权链接”选项。

       使用 SQLServer.ConfiguratioADFASDFonfigValues 数据库管理对象 (DMO) 集合。当 SQLServer 对象引用 SQL Server 2000 SP3 或更高版本的实例时,该集合将包含一个名为 Cross DB Ownership Chaining 的 ConfigValue 对象。

       如果对该实例关闭了跨数据库所有权链接,则可以对单个数据库进行配置。使用下列方法可以对数据库打开和关闭跨数据库的所有权链接:

       使用 sp_dboption 系统存储过程的新选项 db chaining。

       在企业管理器中,使用“数据库属性”对话框中的“选项”选项卡上的“允许跨数据库所有权链接”选项。

       使用 DMO 对象 DBOption2 的 DBChaining 属性。

       说明 如果以前在 SP3 之前的版本(Build 8.00.760 之前的版本)中启用了跨数据库所有权链接,安装 SP3 之后必须再次启用它。

       有关更多信息,请在运行安装程序时单击“后向兼容性一览表”页上的“帮助”按钮、下载 SQL Server 2000 联机丛书的更新版,或者查看知识库文章 810474。

       5.1.12 跟踪标志 1204 的改进

       在 SP3 中引入

       跟踪标志 1204 返回参与死锁的锁的类型以及当前受影响的命令。在 SP3 和更高版本中,当启用此跟踪标志时,会将死锁信息自动写入到错误日志中。

       5.1.13 sp_changedbowner 的权限更改

       在 SP3 中引入

       只有 sysadmin 固定服务器角色的成员可以运行 sp_changedbowner 系统存储过程。

       5.1.14 调试功能的更改

       在 SP3 中引入

       默认情况下,禁用在 Microsoft Visual Studio? 6.0 及其更早版本或 SP3 之前的 SQL Server 查询分析器中调试存储过程的功能,同时还禁用应用程序调试(在调试客户端应用程序过程中停止于 SQL Server Transact-SQL 断点处)。要启用调试功能,请运行 sp_sdidebug,并传递参数 legacy_on。要禁用调试功能,请将 legacy_off 参数传递给此过程。

       说明 建议不要在生产用服务器上运行 sp_sdidebug 存储过程。

       有关更多信息,请参见 Microsoft 知识库文章 328151。您可在 Microsoft 产品支持服务知识库中找到该文章。

       5.2 Analysis Services 增强功能

       本节讨论 SP3 中包含的 SQL Sever 2000 Analysis Services 的增强功能。

       5.2.1 远程分区

       在 SP1 中引入

       在安装了 SP1 或更高版本的本地服务器上创建远程分区时,远程服务器必须使用对本地服务器上的父多维数据集具有完全访问权限的域用户帐户。作为本地服务器上 OLAP 管理员组成员的所有用户帐户,都具有完全访问权限。

       此外,如果本地服务器上安装了 SP1 或更高版本,则远程服务器上也必须安装 SP1 或更高版本,这样本地服务器才可以创建或管理远程分区。

       5.2.2 更新的 Analysis Services 可再分发客户端安装程序

       在 SP1 中引入

       Analysis Services SP1 及更高版本包括下列客户端可再分发安装程序的更新版本:

       PTSLite.exe

       PTSFull.exe

       这些文件位于 SP3 安装目录的 \Msolap\Install\PTS 路径中。

       说明 PTSFull.exe 包含 MDAC,而 PTSLite.exe 不包含。

       在应用程序中使用这些更新的客户端安装程序,可避免或解决使用 Analysis Services 和 Microsoft Office XP 时可能出现的客户端安装问题。

       说明 在 Office XP 中使用 Analysis Services 时,强烈建议升级客户端。

       5.2.3 支持第三方数据挖掘算法提供程序

       在 SP1 中引入

       Analysis Services SP1 及更高版本包含对第三方数据挖掘算法提供程序的支持。有关开发数据挖掘算法提供程序的更多信息,请参见 Third Party Data Mining Providers(第三方数据挖掘提供程序)白皮书和 OLE DB for Data Mining Resource Kit(数据挖掘 OLE DB 资源大全),其中包含一个数据挖掘算法提供程序示例。

       5.2.4 在客户端文件已更新的计算机上安装 Analysis Services

       在 SP1 中引入

       如果在客户端文件(如 SQL Server 2000 SP1 或 Office XP)已更新的计算机上安装 SQL Server 2000 Analysis Services,则必须应用 Analysis Services SP1 或更高版本,以确保客户端运行正常并且可以浏览多维数据集。

       5.2.5 增加对虚拟多维数据集引用的 OLAP 多维数据集的限制

       在 SP3 中引入

       虚拟多维数据集现在最多可以引用 255 个多维数据集。但是,对于在 SP3 以前发布的任何版本的 Microsoft PivotTable? Service 来说,任何引用 64 个以上的多维数据集的虚拟多维数据集都是不可见的。

       5.2.6 新关键字 DESCRIPTION

       在 SP3 中引入

       本地多维数据集现在支持度量和维度的内在成员属性 DESCRIPTION。DESCRIPTION 关键字被添加到 CREATE CUBE 多维表达式 (MDX) 语句中,用于支持 DESCRIPTION 内在成员属性的使用。下列 BNF 子句描述了对 CREATE CUBE 语句所做的更改:

       <dimensions def> :: = DIMENSION <dimension name> [<time def>]

       [DIMENSION_STRUCTURE <sub_type>] [<hidden def>] [DESCRIPTION <description expression>]

       <options def> <comma> <hierarchy def list>

       <measures def> :: = MEASURE <measure name> <measure function def>

       [<measure format def>] [<measure type def>] [<hidden def>] [DESCRIPTION <description expression>]

       [<comma> <measures def>]

       5.2.7 新的 PivotTable Service Restricted Client 属性

       在 SP3 中引入

       SP3 实现了一个新的 PivotTable Service 连接字符串属性:Restricted Client。此属性可用于限制 PivotTable Service 使用本地多维数据集功能。如果一条语句涉及到创建或使用本地多维数据集,如 CREATE CUBE、CREATE GLOBAL CUBE 和 CREATE SESSION CUBE 语句,那么,使用该语句的任何尝试都会引起错误。此外,对于任何涉及到深层递归的语句(如一系列嵌套的 DRILLDOWN 语句),如果该语句有可能导致 PivotTable Service 所维护的语句堆栈发生溢出,则该语句会引起错误。

       此属性用于存储一个字符串值。如果将该值设置为任何以字符“Y”、“y”、“T”或“t”开始的字符串值,或者将其设置为任何可以转换为非 0 数字值的字符串值,则 PivotTable Service 将受到如上所述的限制。如果将该值设置为包括空字符串 ("") 在内的任何其他字符串值,或者将其设置为任何可以转换为等于 0 的数字值的字符串值,则 PivotTable Service 将不受限制。此属性的默认值为“0”。

       说明 此属性不限制对本地数据挖掘模型的使用。

       5.2.8 Safety Options 属性的更改

       在 SP3 中引入

       将 Safety Options 属性设置为 DBPROP_MSMD_SAFETY_OPTIONS_ALLOW_SAFE 也可以禁止在本地多维数据集中使用 PASSTHROUGH 关键字。

       5.2.9 默认情况下禁止将知识库迁移到 Meta Data Services

       在 SP3 中引入

       在 SP3 中,已经禁用在迁移知识库向导中使用 Meta Data Services 知识库格式的选项,并且建议不要使用此格式。但是,如果由于业务原因需要使用此格式,则可以通过 EnableMigrationToMetaDataServicesFormat 注册表项启用该选项。

       默认情况下,此注册表项不存在;必须在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLAP Server\Server Connection Info 中手动创建和设置它才能启用向 Meta Data Services 格式迁移知识库的功能。此注册表项用于存储一个区分大小写的字符串值。如果将该值设置为 1 或 True,则启用向 Meta Data Services 格式迁移知识库的功能。如果将该值设置为其他任何字符串值,或者此注册表项不存在,则禁用向 Meta Data Services 格式迁移知识库的功能。

       说明 如果更改了此注册表项的值,则更改将立即生效。

       5.2.10 必须更改远程 Data 文件夹的权限

       在 SP3 中引入

       如果 Analysis Services Data 文件夹不在分析服务器计算机上,则运行 SP3 安装程序后必须修改该文件夹的权限。将该文件夹的完全控制权限授予给分析服务器计算机上 OLAP 管理员组的所有成员。以后,在 OLAP 管理员组中添加或删除成员时,请务必更改远程 Data 文件夹的权限,以使其反映 OLAP 管理员组当前的成员。这样备份和还原将可以正常工作。

       此外,运行 SP3 安装程序后,必须允许运行分析服务器的帐户对远程 Data 文件夹具有完全控制权限。

       如果对在群集配置中运行的 Analysis Services 实例应用 SP3,必须允许域级别 OLAP 管理员组对远程 Data 文件夹具有完全控制权限。有关创建和使用域级别 OLAP 管理员组的更多信息,请参见 Microsoft 产品技术支持服务知识库中的技术支持文章 308023。

       5.3 复制增强功能

       本节讨论 SP3 中包含的 SQL Sever 2000 复制增强功能。

       5.3.1 事务复制 UPDATE 自定义存储过程

       在 SP1 中引入

       在事务复制设置期间,将在订阅数据库中创建插入、删除和更新操作的自定义存储过程。不管 UPDATE 语句会影响多少列,更新自定义存储过程都将更新订阅表中的所有列。任何未更改的列都将重置为更新前已存在的相同值。通常,此操作不会引起问题。但是,如果这些列中的任意一列被编制索引,则重置操作会占用大量资源。

       如果您使用事务复制,并且订阅表中有若干个索引,而且只有几个列值因为更新而发生改变,则在订阅服务器应用更改时,维护索引的开销可能会成为限制性能的因素。例如,用于报告用途的订阅数据库可能具有比发布数据库更多的索引。在运行时动态生成 UPDATE 语句可以改善性能。此更新将仅包括已更改的列,从而创建最优的 UPDATE 字符串。

       此 Service Pack 包含一个新的能够生成自定义存储过程的存储过程 sp_scriptdynamicupdproc,在运行时,您可以在订阅服务器中使用该自定义存储过程动态生成 UPDATE 语句。但是,在运行时生成动态 UPDATE 语句需要额外的处理。

       sp_scriptdynamicupdproc

       存储过程 sp_scriptdynamicupdproc 可以生成能够创建动态更新存储过程的 CREATE PROCEDURE 语句。自定义存储过程中的 UPDATE 语句是根据 MCALL 语法(该语法指示要更改的列)动态生成的。如果订阅表上索引的数目不断增长,并且被更改列的数目很少,请使用此存储过程。此存储过程在发布数据库的发布服务器上运行。

       语法

       sp_scriptdynamicupdproc [ @artid =] artid

       参数

       [@artid =] artid

       项目 ID。artid 的数据类型为 int,无默认值。

       结果集

       返回由单个 nvarchar(4000) 列组成的结果集。该结果集构成用于创建自定义存储过程的完整 CREATE PROCEDURE 语句。

       备注

       sp_scriptdynamicupdproc 用在事务复制中。默认的 MCALL 脚本逻辑包括 UPADATE 语句中的所有列,并使用一个位图来确定已更改的列。如果某列未更改,则将其设置回它本身,这通常不会引起问题。如果该列被编制索引,则需要进行额外的处理。与此不同的是,此存储过程使用动态方法:它仅包括已更改的列,从而提供了一个最优的 UPDATE 字符串。但在运行时生成动态的 UPDATE 语句后则需进行额外的处理。建议您测试动态存储过程方法和静态默认方法,然后选择一个最佳解决方案以满足您的特殊需要。

       权限

       public 角色的成员可执行 sp_scriptdynamicupdproc。

       示例

       本例在 pubs 数据库的 authors 表中创建一个项目(artid 设为 1),并指定 UPDATE 语句是执行的自定义存储过程:

       'MCALL sp_mupd_authors'

       通过在发布服务器上运行下列存储过程,生成将由订阅服务器上的分发代理程序执行的自定义存储过程:

       EXEC sp_scriptdynamicupdproc @artid = '1'

       此语句返回:

       create procedure [sp_mupd_authors]

        @c1 varchar(11),@c2 varchar(40),@c3 varchar(20),@c4 char(12),@c5 varchar(40),@c6 varchar(20),

       好了,今天关于“comma lite”的话题就讲到这里了。希望大家能够对“comma lite”有更深入的认识,并且从我的回答中得到一些帮助。