Je peux me connecter avec succès à un serveur distant en utilisant une connexion ODBC en C#.OpenQuery ne fonctionne pas en C#
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());
}
}
Le problème est que cela empêche le dépassement de temps. Je pense que c'est parce que j'envoie des demandes du client au serveur distant (je suis en Nouvelle-Zélande et la base de données est aux USA). La table contient 50 millions d'enregistrements et l'énigme est qu'elle est trop grande pour être utilisée comme une seule table, mais comme j'utilise plus de filtres dans mon 'O WH', les temps morts se produisent pendant le traitement des données.
Dans SQL Management Studio, je peux exécuter la requête avec succès via un OpenQuery qui, je crois, exécute le SQL sur le serveur distant.
Mais si je mets la même requête dans le code ci-dessus comme si:
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''";
Je reçois une erreur:
Est-ce que quelqu'un sait une autre façon d'obtenir le sql pour exécuter sur le serveur, ou ce que je fais mal? Ça me rend fou!
Ne pas partager vos informations d'identification publiquement, utilisez 'xxxx000' place –
Oh wow merci Im habituellement prudent de vérifier cela, mais c'était la dernière heure du dernier jour de la semaine. Je vous remercie! – Danrex