我可以使用C#中的odbc连接成功连接到远程服务器。
public void checkGradedSerials()
{
List<string> gradedHides = new List<string>();
string queryString = "SELECT COUNT(DISTINCT Serial_No) FROM Part_v_Container_Change2 WHERE Change_Date >= '2015-04-01' AND Location = 'H Grading'";
using (OdbcConnection connection = new OdbcConnection("DSN=Pxxxxx32; UID=odbc.xxxx; PWD=xxxxxxx;"))
{
OdbcCommand command = new OdbcCommand(queryString, connection);
command.Connection = connection;
connection.Open();
object test = command.ExecuteScalar();
Console.WriteLine(test.ToString());
}
}
问题在于这可以防止超时。我认为这是因为我正在向客户端发送请求到远程服务器(我在新西兰,数据库在美国)。该表中有5000万条记录,所以难题是它太大而不能作为一张桌子拉,但是因为我在我的&#39; WHERE&#39;中使用了更多的过滤器。在尝试处理数据时发生超时。
在SQL Management studio中,我可以通过OpenQuery成功运行查询,我相信在远程服务器上运行sql。
但是,如果我将相同的查询放入上面的代码中,那么:
string queryString = "SELECT * FROM OPENQUERY (PLEXREPORT, 'SELECT COUNT(DISTINCT Serial_No) FROM Part_v_Container_Change2') WHERE Change_Date >= ''2015-04-01'' AND Location = ''H Grading''";
我收到错误:
有没有人知道让sql在服务器上运行的另一种方式,或者我做错了什么?它让我疯了!
答案 0 :(得分:0)
您的SQL错误
更正的sql是
SELECT COUNT( Serial_No) FROM Part_v_Container_Change2 WHERE Change_Date >= '2015-04-01' AND Location = 'H Grading'
替换
string queryString = "SELECT COUNT(DISTINCT Serial_No) FROM Part_v_Container_Change2 WHERE Change_Date >= '2015-04-01' AND Location = 'H Grading'";
通过
string queryString = "SELECT COUNT(Serial_No) FROM Part_v_Container_Change2 WHERE Change_Date >= '2015-04-01' AND Location = 'H Grading'";