在SQL Enterprise manager中的[Server /Current Activity]可以让您一目了然地看出SQL的连接情况,
是个非常好用的工具。
在Current Activity中,可见到已登入的用户清单、数据库名称、工作站名称与应用程序名称。下方的状态栏显示目前有多少连接关系正在运作,多少连接关系处于空闲。
存取时限
一般连接关系的存取时限从15秒到1、2分钟不等,至于精确的数值要视你所选择的程序界面与时限的设定值而定。亦即假如你要存取数据库时,选择了不正确的服务器或服务器已经关机,则CLIENT端便会没有任何反应,一直到存取时限时,才会返回连接失败信息。
若要连接LAN网中的SQL SERVER不须耗费多少时间,约1至5秒内便能获得回应,应用程序第一次连接会花费较长的时间,第二次后会比较短。因为Windows系统会将先前的连接关系所用的控件或DLL文件一直保留在内存。
设定远程数据的存取方式
您可以自己设定取数据的处理方式,在VFP的TOOLS菜单里,选中Options... 菜单项,弹出OPTIONS对话框,选中Remote Data 标签:
1: 共享连接 指定 Visual FoxPro 使用当前连接处理新的视图。在数据源一次只支持一个连接时,它很有用。它可以使一个连接处理多个视图。
2:取备注字段指定只有在视图输出中激活一个备注或通用字段后才从数据源取备注或通用字段。清除该选项可以减少初始从远程表中下载的数据量,这将提高性能。
3:SQL 更新条件 指定当您试图更新数据前的数据对比方式,Visual FoxPro 检查远程服务器上的字段来决定是否改变数据。如果选择条件所指定远程字段中的数据已经更改,则更新失败。
(1):Key Fieds Only 只对比主键
(2):Key and Updateble Fieds 对比主键和要更新的字段
(3):Key and Modified Fieds 对比主键和修改过的字段(默认)
(4):Key and Timestamp 对比主键和数据库的时间截。
4:SQL 更新 指定 Visual FoxPro 是使用 SQL UPDATE 还是使用 SQL DELETE,然后用 INSERT 来更新远程服务器上的信息。
(1):SQL Update 直接用SQL语言更新(默认)
(2):SQL Delete + SQL Insert 删除旧记录,然后增加一条新记录
5:每次取的记录数 当用批处理方式时,指定 Visual FoxPro 从远程数据源中一次返回多少条记录。选定“全部”可以指定在第一次取操作中即返回所有的记录。该设置受“要取的最大记录数”中指定值的限制。 6:要取的最大记录数指定一个视图返回的记录总数。如果您错误地建立了一个查询,它可以防止返回过多的数据。选择“全部”可以指定返回所有的记录。
7:使用备注字段的长度 >= 指定长字符型字段中数据的最大长度。指定在视图输出中,如果字符数据超出指定长度时,将长字符字段转换成备注字段。默认值是255,等于 Visual FoxPro 中字符型字段的最大长度。
8:成批更新的记录数指定视图一次发送的更新语句数目。调整这个值可以明显地提高更新性能。默认值是 1。有关的详细内容,请参阅“REPLACE 命令”以及“Scope 子句”。
9:异步执行 指定把控制权返回给您的应用程序之后,Visual FoxPro 在后台执行 SQL pass-through 命令(使用 SQLEXEC( )、SQLMORERESULTS( )、SQLTABLES( ) 和 SQLCOLUMNS( ))。
如果您选定了该选项,您的应用程序可以显示过程信息,并且允许用户使用 ESC 键中断一个命令(如果 SET ESCAPE 已经设置为“真”)。您可以决定一个异步执行的 SQL 命令的状态,方法是重复地调用其中一个 SQL pass-through 函数,直至它报告命令已经完成为止。这个选项的默认值是废止(同步执行),它指定 Visual FoxPro 在把控制权返回您的应用程序之前一直等待,直至 pass-through SQL 命令完成为止。
10:显示警告信息 允许显示警告信息。
11:批处理 在使用 SQLEXEC( ) 发送多个 SQL pass-through 语句时,指定 Visual FoxPro 并不返回任何结果,直到所有结果集合都检索到为止。
对应于在 SQLSETPROP( ) 函数中设置 BatchMode。如果废止了该选项,您必须调用 SQLMORERESULTS( ) 来确定数据是否可用。
12:自动事务处理指定由远程表上的连接自动处理事务。如果清除了该选项,您必须使用 SQLCOMMIT( ) 和 SQLROLLBACK( ) 人工处理事务过程。
13:显示登录信息当一个连接激活时,指定是否显示登录提示(如果该连接需要用户进行登录)。例如,“只在必要时”指出,只有在连接或视图定义中未指定登录信息的情况下,才出现登录提示。
14:连接超时设定(秒)指定与远程服务器建立一个连接所需等待的秒数(0 到 600 之间)。如果在指定时间内不能建立这个连接,则 Visual FoxPro 显示错误。指定 0 为无限制地等待一个连接。
15:空闲超时设定(分钟)指定连接不活动前允许空闲时间的分钟数。如果在指定时间内没有请求使用服务器,则 Visual FoxPro 终止该连接。但是,连接超时后如果对服务器又有请求,则 Visual FoxPro 将试图自动恢复这个连接。
16:查询超时设定(秒) 指定等待服务器响应一个请求的秒数(0 与 600 之间)。如果服务器在指定秒数的时间内还不处理查询,则 Visual FoxPro 显示错误。指定 0 可以无限制地等待查询结果。 等待时间(毫秒) 指定 Visual FoxPro 检查 SQL 语句是否执行结束之前经过的毫秒数。
VFP与SQL Server的连接(4)
----解决区域网络方面的连接问题
排除连接错误
C/S程序结构的运作就像是主人与仆人之间的互动一样,仆人偶尔会因沟通不良而抱怨。这种情况在C/S程序中即所谓的错误信息(Error message ),每个错误信息都包含了一个错误代码与描述问题的说明文字。由于各种程序的错误处理方式不尽相同,所以当我们在做除错工作之前,除了要参考错误信息外,还应当注意下列几个问题,以掌握可能的原因,提高效率。
错误原因
1:程序以往在执行时是否曾成功建立连接关系?如果是,后来有没有变更过什么设定?因为若曾经连接成功的话,那么在设定、安全、通讯协议等方面应该不会有问题。之后,假如有安装新版的应用程序、操作系统后升级驱动程序的话将影响连接情况。
2:屏幕上显示什么信息?Modem 或网络卡的LED显示是否正常?屏幕上的信息可以引导我们朝正确的方向排除错误。Modem 或网络卡的LED显示网络交通是否正常运作。
3:网络是否已超出负荷?用户是否搭错线,连接到其他的网络?也有可能许多应用系统一直站用网络资源造成网络异常。
4: 碰到错误时、程序有没有做除错措施或者直接关机。
程序库所引发的连接问题很多问题的发生都因为动态连接程序库(DLL)或控制元件(Control,即OCX),存放到其它目录或者根本没有安装到系统中,或由于安装了新版的ODBC 而覆盖掉旧版的ODBC所引起的。他们必须被放置到程序载入器(WIndows loader)在执行期间能找到的地方,一般在Windows\system之下,而且这些程序应该在系统注册、安装,而不是直接放置到该目录就可以。
所有Windows 平台的Windows loader作业流程都是相同的,一旦程序档案总管、浏览器、执行.......等方式启动后,Windows loader 便会依次往下列几个地方搜寻相关的程序库或元件:
1: Momery
2: 应用程序所在的目录
3: Windows 的目录
4: Windows\system目录
5: 环境变数所指定的目录
如果以上五个地方都找不到相关的程序库或元件的话,Windows便会告知用户错误信息。
Microsoft SQL Server 的Client 端是籍由named pips 与Server端沟通的,为了支持named Pips ,所有程序界面都采用16位元的DBNMP3.DLL或32位元的DBNMPNTW.DLL程序库。在强调一次,这些DLL档必须被放置在Windows\System或其他Windows loader 能找到的目录。
解决区域网络方面的连接问题
通常根据下列的问题及步骤来处理这方面的问题:
1:用户是否确实登入网络?这是常见的疏忽,因为用户经常只登入到工作站本身,而没有进入网络,这是您可以选择开始/关闭系统来关闭所有程序,登入成其他的用户,重新做一次登入。
2:是否还有连接空间让用户使用? 假如用户建立许多的连接关系后,忘了切断它,那么操作系统有可能无法建立新的连接,有些操作系统可供同时连接的数目是有限的,预设的状况下,假如用户同时用4、5条的远端连接关系后,这个用户若想再连线到SQL Server 就会有问题。
3:网络是否瘫痪?假如执行了很多个远端数据库存取程序都无回应的话,您可用[网络邻居]来检查其他机器上的共用目录是否依旧可以存取。
4:您是否曾用Client Configuration Utility 去设定装置的驱动程序后网络地址?当SQL Server 支援TCP/IP后,系统会要求您做相关的设定。因系统将参照网址而非用名称来存取服务器。
与SQL有关的连接问题通常根据下列的问题及步骤来处理这方面的问题
1:用户是否输入正确的登入ID和PASSWORD。
2:服务器有没有运作?当服务器开机时,是否有自动开启SQL Server?您可以在控制台的服务程序或用Startup.cmd 这个批处理文件来检视这项设定。也可以用SQL Server Manager 来确定SQL Server 是否正常运作:
(1):服务器的RAM或硬盘空间是否太小了?
(2):SQL Server 数据库中的资料是否以坏掉?
(3):SQL SERVER 是否处于单机模式运作?或SQL的ADMINISTRATOR正在维护系统。
用户权利和授权问题
SQL SERVER 具有可连接超过1000个的用户的能力,但真正可同时连接的数目就要看Administrator 的设定了,每一条的连接关系都会消耗37KB至42KB大小不等的RAM,这些RAM是被用来充当程序或资料的快取空间之用。微软公司要求所有要存取WIndows NT 或SQL Server 的用户都必须取得用户端存取授权(Client Access License :ACL)。用户端存取授权和操作系统授权是分开的,用户端存取授权有两种:
1:每服务器模式(Per Server Mode):用户在用户端可与SQL Server 或Windows NT 建立n条连接关系。换而言之,不能同时有超过n个的连接关系存取服务器。
2:每一客户模式(per Seat Mode ):每个用户端都必须购买用户段存取权限,若同时连到NT & SQL Server 的连接关系已经超过每一客户的授权数目,用户端的用户仍然可继续连线上来。
有话要说...