资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
金蝶 KIS 专业版连接主机(注,本文较长,但如果您能够耐心看完,相信一定会有所收获!本文由昆明苏博泰克计算机有限公司郭永林原创,在金蝶博客以狂啸三声名义发布。解决问题时花了大半天,整理撰写和排版又花了一整个晚上,因此转载收藏时请保留此说明,谢谢。 )目录金蝶 KIS 专业版“登录时出现问题,请重新输入”终极解决全过程 1一、 从客户端 PING 服务器,检查网络状况 .2二、 测试访问服务器共享文件夹 .2三、 修改 host 解析文件 .3四、 关闭或配置防火墙 .3五、 关闭数据执行保护 .3六、 重新安装 msdtc 组件 .3七、 重新分析过程及问题的根本原因 .3八、 终极解决办法之一:注册表 添加别名法 .8九、 终极解决办法之二:客户端网络工具添加别名法 .9十、 终极解决办法之三:ODBC 添加数据库访问别名法 .9十一、 其他可能遇到的情况 .15十二、 总结 .16好久没做专业版,现在做了一个。想不到居然遇到了传说的“登录时出现问题,请重新输入”提示。如下图所示:我狂晕啊,印象中好像很多人都遇到过,想不到我也会栽到它头上。我装了那么多 K3经过一番配置都没再出过登录不了的问题啊!由于是所有客户端都这样提示,所以判断肯定服务器配置存在问题,好吧,动手排查:一、 从客户端 PING 服务器,检查网络状况结果如下:哎呀,不管是用 IP 地址“192.168.1.200 ”还是用服务器名称“KIS ”,返回值都正常,看来网络相当正常。二、 测试访问服务器共享文件夹从开始运行中输入“192.168.1.200” ,结果出错,提示如下:由于错误 ,登录失败 : 用户帐户限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制。服务器无法登录 Windows NT 帐户 192.168.1.200GUEST。看来是网络权限配置过于严格,于是采取以下办法处理:1.右击我的电脑,选择 “管理 ”,在左边依次展开 “计算机管理 ”“ 系统工具 ”“ 本地用户和组 ”“ 用户 ”,检查 “GUEST”用户是否是打 “X”禁用,如果是,则右击属性,然后取消禁用选项。2.从 “开始 ”“ 运行 ”,输入 “gpedit.msc”,进入到组策略管理界面下 ,依次展开 “计算机配置 -Winsows 设置 -安全设置 -本地策略 -用户权利指派 ”,看看右边有一行 :拒绝从网络访问这台计算机 看它的属性里有没有 guest 一项 ,若有 ,则删除。3.开始 运行,输入 gpedit.msc 回车 计算机配置 windows 设置 安全设置 本地策略 安全设置 “账户:使用空白密码的本地账户只允许进行控制台登录 ”改为 “已禁用 ”。OK,再测试,试了几台客户端都正常了。我有预感,不会这么简单!果然,到最后两台,功亏一篑啊,不行!不过,现在服务器肯定是没有问题了,得查客户端了,根据网友们总结的办法,一步一步排查吧。三、 修改 host 解析文件找到 C:WINDOWSsystem32driversetc 下的 HOSTS 文件,用记事本打开并添加服务器的记录(这个前提要求服务器的 IP 得是手工指定的 IP 啊,要是动态获取的话,今天添加了今天有用,明天 IP 变了就白添加了):192.168.1.200 KIS四、 关闭或配置防火墙关闭防火墙包括 WINDOWS 自带的,或者其他软件防火墙。如果不关闭的话,也可以通过其他设置,如开放端口。TCP:135、139、445、1069 、 1090、1433、2967、6985、6988;UDP:137、445 、1033、1434、1058、2123、3000。或者采用添加到白名单:设置- 详细设置- 网站防问规则-白名单- 增加 192.168.1。200。OK,其中一台通过以上步骤后也可以了。但另一台死活不行,只能继续其他可能影响的设置修改。五、 关闭数据执行保护通过修改 BOOT.INI 文件,添加或修改参数:NoExecute=AlwaysOff六、 重新安装 msdtc 组件1、删除注册表中的键:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSDTC HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTC HKEY_CLASSES_ROOTCID 2、运行命令停止 MSDTC 服务: net stop msdtc3、运行命令卸载 MSDTC 服务: msdtc -uninstall4、运行命令重新安装 MSDTC 服务:msdtc install结果依旧,最后这台电脑真的是顽固啊!好吧,网上能够找到的都试完了,看来得自已动手分析了。七、 重新分析过程及问题的根本原因仔细观察登录时的错误提示,当服务器处输入的是计算机名“KIS”时,如下图:当服务器处输入的是 IP 地址“192.168.1.200”时,如下图:得到的结论是:输入 IP 和计算机名,得到的结果不相同。输入 IP 能够获取账套信息,而输入计算机名则连账套信息均不能获取。但是,既然输入 IP 已经获取到账套信息,由于我们知道 KIS 的专业版的账套信息是存放在 SQL 数据库中的,说明通过 IP 连接数据库是一切正常的了。那么,现在我们已经在服务器中输入 IP 地址来连接数据了,为什么选择了账套后再确定,还是登录不了呢?难道金蝶最终并没有真正使用 IP 地址来连接数据库,而是又重新使用计算机名来连接了吗?为了验证我的想法,我在服务器上打开了账套信息数据库“AcctCtl” ,找到其中的表“t_ad_kdAccount_gl”。呵呵,果然是这样,其中的“FConnectString”字段记录了每个账套的连接字符串,形如:“Provider=SQLOLEDB.1;User ID=KISAdmin;Password=ypbwkfyjhyhgzj;Data Source=KIS;Initial Catalog=KIS_Sample”,根据我们二次开发的经验,金蝶 KIS 专业版在通过登录时,获取到账套信息后,显然是用账套信息中的连接字符串再进一步的查询数据了。上述分析也说明了为什么先前一台电脑通过修改 HOSTS 能够正常访问了:我们在登录时输入的 IP 地址仅用于获取账套信息,而之后系统再次使用计算机名访问数据库,所以当由于某些系统服务未开启或防火墙软件的原因,计算机名不能正确解析时,HOSTS 文件就生效了,帮助系统将计算机解析为 IP 地址,然后即可正常访问了。但是,为什么最后一台还是不行呢?金蝶 KIS 专业版将错误提示封装了,就好像 IE 浏览器的“错误友好提示”一样,让人摸不着头脑。那么要尝试找找有没有更详细的信息了,经过一番搜索,在 C:WINDOWSSYSTEM32KISCOM中找到一个登录的错误日志文档“KISSVRMGR_1001.log”,用记事本打开一看,内容主要形如:01-29 09:25:24 ERROR AcctMgr:GetAccountList()Error number: -2147217843Source: Microsoft OLE DB Provider for SQL ServerDesc: 用户 KISAdmin 登录失败。01-29 09:25:48 ERROR AcctMgr:GetSuperPropString()Error number: -2147467259Source: Microsoft OLE DB Provider for SQL ServerDesc: DBNETLIBConnectionOpen (Connect().SQL Server 不存在或拒绝访问。哎,还是封装过的,不好判断啊。那么,有没有办法显示更直接的提示呢?既然用 KIS 专业版不行,那么咱们用 SQL 自带的客户端工具来登录试试!客户端一般没有安装 SQL,没关系,打开随身携带的绿色版 SQL 管理工具“SQLManager”(也就是企业管理器和查询分析器的独立打包) 。使用查询分析器“isqlw.exe”来测试登录效果。输入 IP 地址和用户名密码,果然能够正常登录。再输入计算机名和用户名密码,也同样不出意料,没能够正常登录,弹出了以下错误:细心的读者您注意到了吗?错误提示中有什么东西和一般不同?对,就是多了“Multi-Protocol”这个词。上网再一番狂搜,获得许多杂乱的信息,我将各处信息综合整理如下:客户端与服务器的连通需要通讯库的支持, SQL Server 2000 的通讯库 NET-LIBRARY网络协议通信库支持多种网络协议:1. Named pipes 协议(命名管理),使用 NT SMB 端口 (TCP139,UDP137,138)来进行通信; 2. IP Sockets 协议( TCP/IP),使用 TCP1433 端口;3. Multi-Protocol(多协议),默认情况下使用 TCP 随机端口,客户端需要支持 NT RPCs;4.NWLink 协议;5.AppleTalk (ADSP)协议;6.Banyan Vines 协议。但一般来说,我们平常使用都是选择 TCP/IP 或命名管道协议通信库。遇到 SQL Server 不存在或访问被拒绝的问题,我们就应该检查这些协议的配置情况,保证服务器和客户端使用同一种通讯协议即可。检查服务器端的网络配置是否启用了命名管道、 TCP/IP 协议等等。我们可以利用 SQL Server 自带的服务器网络使用工具。 点击:程序 - Microsoft SQL Server - 服务器网络使用工具,打开该工具后看到的画面如下图所示: 从这里我们可以看到服务器启用了哪些协议。一般如上图可能只启用了命名管道和 TCP/IP这两种协议,所以客户端如果使用其他协议连接将会连接不上。如需进一步检查 SQK Server 服务默认端口的设置,我们可以点中 TCP/IP 协议,再点击 属性 ,如下图所示: 一般而言,我们使用 SQL Server 默认的 1433 端口。对于 隐藏服务器 选项,只是限制客户端通过枚举服务器来枚举这台服务器,仅是保护功能,不影响连接。 客户端连接服务器是也是通过 NET-LIBRARY 网络协议通信库实现的,微软的 MDAC 组件提供了 NET-LIBRAR
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号