| 发表于:2007-08-20 18:26:55 楼主 |
我最近做一个c/s模式的pocket pc应用程序,用rda把sql server2000上的数据库(名为pacs,内有patient和report两个表)数据拉到本地数据库(名为pocketpacs.sdf)上,iis的虚拟目录sqlce的权限是”anonymous access”, 并且我在ie和pocket ie里输入“http://127.0.0.1:56/sqlce/sscesa20.dll”(我在iis里发现默认站点停止了,必须把原来的80端口改掉才能重新启动,于是我把端口改成了56),都能成功显示”sql server ce server agent”. 我的sql server2000(sp3版)、sql server ce2.0(sp3版)、vs2005都装在了一台机子上,其中我的机子操作系统是xp,所以sql用的个人版. 代码如下: public string strdbfile = @ "my documents\pocketpacs.sdf "; public string strconnlocal = "data source= " + @ "my documents\pocketpacs.sdf "; public string strconnremote = "provider=microsoft.sqlserver.oledb.ce.2.0;integrated security=sspi;user id = wws//iusr_wws;initial catalog=pacs;data source=pocketpacs.sdf; "; public string strurl = "http://127.0.0.1:56/sqlce/sscesa20.dll "; private void menulogin_click_1(object sender, system.eventargs e) { doctorsearch = new doctorsearch(); if((textbox1.text== "tsmc ")&&(textbox2.text== "tsmc ")) { doctorsearch.show(); cursor.current = cursors.waitcursor; if(file.exists(strdbfile)) { file.delete(strdbfile); } sqlceengine dbengine = new sqlceengine(); dbengine.localconnectionstring = strconnlocal; try { dbengine.createdatabase(); } catch(sqlceexception exsql) { messagebox.show( "unable to create database " + exsql.errors[0].message); } sqlceremotedataaccess rdanw = new sqlceremotedataaccess(); try { rdanw.localconnectionstring = strconnlocal; rdanw.interneturl = strurl; rdanw.internetlogin = " "; rdanw.internetproxypassword = " "; rdanw.pull( "patient ", "select * from patient ",strconnremote,rdatrackoption.trackingonwithindexes, "errordoctor "; } catch(sqlceexception exsql) { errors.showerrors(exsql); } finally { rdanw.dispose(); } cursor.current = cursors.default; } else messagebox.show( "wrong infromation.please check it again "); } 但运行之后出现以下两个错误: error code: 80004005 message: an internal error occurred.[id,,,,,] minor err:28574 source: microsoft sql server 2000 windows ce edition error code:80004005 message:[dbnetlib][connection open(connect())]sql server不存在或拒绝访问 minor err: 17 source: microsoft oledb provider for sql server 第一个错误在网上查了半天没有什么收获,于是决定从第二个错误入手,下面是我的尝试和结果: ping 169.254.8.169 成功 ping wws 成功 ping 127.0.0.1 成功 telnet 169.254.8.169 1433 不能打开到主机的连接,在端口1433:连接失败 telnet 169.254.8.169 不能打开到主机的连接,在端口23:连接失败 netstat –a 未见1433端口被侦听 查看sql server日志,只见:sql server 正在监听 shared memory, named pipes 未见sql server在监听tcp或1433端口 于是断定是因为sql server不能侦听1433端口,检查sql server的服务器网络实用工具和客户端网络实用工具,发现都已经启用了命名管道和tcp/ip协议,并且tcp/ip的属性中都使用的默认端口1433,我的防火墙关了呀,并且sql也是sp3的补丁呀,并且我试了把服务器网络实用工具和客户端网络实用工具的tcp/ip协议的默认端口改成2433或56也不行,sql server依然不能侦听2433或56端口. 考虑到我的sql2000是个人版,安装时默认实例是灰色的,于是我只能起了个实例名sql2000,结果sql server服务管理器的 "服务器 "下拉菜单里有三个:wws、wws\sql2000、wws\sqlexpress,但不论启动哪个,sql server都不能侦听1433,用netstat –a 也看不到1433被侦听,快疯了,求各位大侠救救我!!!提些建议也好! 小生在此先谢过了 |
|
|
|
|