我最近做一个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:连接失败