首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

使用DataClassesDataContext连接远程数据库有关问题

2012-04-05 
使用DataClassesDataContext连接远程数据库问题使用DataClassesDataContext连接本地数据库时:C# codepubli

使用DataClassesDataContext连接远程数据库问题
使用DataClassesDataContext连接本地数据库时:

C# code
public static DataClassesDataContext dataContext = new DataClassesDataContext();        private IQueryable<showAuction> getAuctionsInfo(int dayOfWeek, int pageNo, int pageSize, DataClassesDataContext dataContext)        {            IQueryable<showAuction> query = from auction in dataContext.showAuctions                        where auction.DayOfWeek == dayOfWeek                        select auction;            foreach(showAuction s in query){                MessageBox.Show(s.ID+"");            }            return query;        }

 foreach循环正确,没异常。但是

使用DataClassesDataContext连接远程数据库时:
C# code
public static DataClassesDataContext dataContext = new DataClassesDataContext("uid=****;pwd=****;Server=****,****;Database=****");

方法和上面的一样,但是在foreach循环中出现以下异常:
在从服务器接收结果是发生传输级错误。(provider:TCP provider,error:0-指定网络名不再可用)

经调试,发现query中的connection的state是closed状态。但是连接本地时state的状态是open,

为什么会这样哦?

[解决办法]
你先看一下你的远程连接是否真的能连接上。
[解决办法]
基于Linq的迟延执行特性,数据库的查询命令是你的foreach开始迭代时才被生成和执行的。
[解决办法]
探讨
嗯,使用本地的是能连接上的,foreach里面也能正确执行,我调试过了
但是使用远程的就不行,

[解决办法]
你再检查一下服务器的1433端口有无开放,包括防火墙的设置等。

建议你使用SQL Server Management Studio连接你的远程SQL Server服务器试试,有时能连接但会在登录时提示你这样的错误。

之前我们也遇到过同样的问题,Connection.Open()没有问题,但是一执行SQL查询就提示错误。后来就是发现防火墙设置里没有开放SQL Server默认的1433端口。
[解决办法]
1. 比较其他程序的连接串和连接方式
2. 再仔细排查SQL Server服务器的设置

具体问题得你自己解决了,呵呵。祝好运

热点排行