RDA屡次失败!!!!!快疯了!!!有大侠救救我吗????????????????????????????????
我最近做一个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被侦听,快疯了,求各位大侠救救我!!!提些建议也好!
小生在此先谢过了
[解决办法]
好像是你的连接有问题
"Provider=sqloledb; "
+ "Data Source=192.168.1.150; "
+ "Initial Catalog=Northwind; "
+ "User Id=sa; "
+ "Password=sa; "
+ "Integrated Security=SSPI; ";
参考看看:http://community.csdn.net/Expert/topic/5703/5703916.xml?temp=.6019709
[解决办法]
如果PDA上面IIS可以访问。你把Integrated Security=true 设置为true看看。
还不行。你就发我有邮箱我试试看。ghdvb@126.com
[解决办法]
不用 CE 直接连接数据库就不会有这么多麻烦了
另外 1433 端口是不能用的 通不过无线网络