SQL-Server Kommunikationsproblem TimeOut? - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO) +---- Thema: SQL-Server Kommunikationsproblem TimeOut? (/Thread-SQL-Server-Kommunikationsproblem-TimeOut) |
SQL-Server Kommunikationsproblem TimeOut? - LabFool - 04.06.2018 10:12 Moin, ich verwende das Data-Connectivity-Tool zur Kommunikation von LV mit dem SQL-Server SQLSERVER Express 2014 von Microsoft. Das funktioniert normalerweise. Jetzt habe ich aber das Problem, dass LV keine Datensätze empfängt, obwohl der Server welche liefert. Ich rufe aus LV eine sogenannte gespeicherte Prozedur auf dem Server auf. Diese beinhaltet u.a. folgenden SQL-Code: INSERT INTO dbo.tblTest(Data) SELECT * FROM OPENROWSET( BULK 'C:\Data\Test.dat',SINGLE_CLOB) AS Data' SELECT 0 AS ERRORCODE, NULL AS ERRORMESSAGE Es wird eine Datei von der Platte gelesen und diese in eine Tabelle geschrieben. Direkt danach soll die gespeicherte Prozedur mit dem Code 0 und einer leeren Fehlermeldung beendet werden. Mache ich das z.B. von MSAccess aus, dann wird tatsächlich eine 0 und NULL zurückgegeben. Das SQL-Konstrukt ist daher korrekt und die einzulesende Datei existiert. Auch gibt es keinerlei Datenkonflikte. Mit LV bleibt Resultrecordset aber leer, es wird kein Datensatz empfangen. Kommentiere ich den INSERT-Teil raus, dann erhält LV den Datensatz. Man kann jetzt ein Timing-Problem vermuten. Das Einlesen einer Datei von der Platte dauert einen Moment und LV warten anscheinend nicht lange genug auf eine Rückmeldung und bricht ab. Wenn der INSERT-Teil fehlt, geht alles schnell genug und LV fängt den Recordset. Ich finde allerdings keine Einstellungen bzgl. eines Timeouts. Zwar bietet das VI DB Tools Open Connection einen entsprechenden Eingang, doch der gilt wohl nur für den Aufbau der Verbindung zum Server und nicht für das Warten auf eine Ergebnis. Außerdem steht der Timeout hier per Default auf 15 sec. Das ist eine Ewigkeit und so lange dauert auch das Einlesen und speichern der Datei bei Weitem nicht. Hat jemand einen Tipp, was hier das Problem sein könnte bzw. wie eine Lösung aussehen könnte? Gruß LFool RE: SQL-Server Kommunikationsproblem TimeOut? - jg - 04.06.2018 10:33 Zu wenig Infos... Wenn irgendetwas im SQL-Toolkit abgebrochen wird oder einen Timeout läuft, dann solltest du eine entsprechende Fehlermeldung im Errorcluster bekommen. Wie sieht es damit aus? Wie sieht der LabVIEW-Code zum Aufruf deiner Stored-Procedure aus? Wie sieht der Code der Stored-Procedure aus? Gruß, Jens RE: SQL-Server Kommunikationsproblem TimeOut? - LabFool - 04.06.2018 11:14 Hallo Jens, LV bringt keinen Fehler im Cluster. Das VI habe ich mal vereinfacht und hier als Screenshot angehängt. [attachment=59178] Die gespeicherte Prozedur sieht (vereinfacht) wie folgt aus: [attachment=59177] Hinweise:
RE: SQL-Server Kommunikationsproblem TimeOut? - LabFool - 04.06.2018 13:27 Nachtrag: ich hatte erwähnt, dass wenn ich die gespeicherte Prozedur aus Access heraus aufrufe, dass dann der richtige Rückgabedatensatz auch gelesen wird. Nach weiteren Tests kann ich sagen, dass das aber nur für DAO gilt und nicht für ADO. Soweit ich das weiß, nutzt LV ADO. Somit wäre das kein LV-Problem sondern ein ADO-Problem. Trotzdem kann ich mir nicht zusammenreimen, warum das Konstrukt nicht so gehen sollte. Das ist doch nichts außergewöhnliches. Gruß LFool RE: SQL-Server Kommunikationsproblem TimeOut? - LabFool - 05.06.2018 09:51 Das Problem ist mittlerweile gelöst. in der gespeicherten Prozedur fehlte ein SET NOCOUNT ON; Damit lieferte diese eben nicht nur den Datensatz zurück, den ich erzeugt habe sondern auch die Anzahl der durch den INSERT-Befehl eingefügten Datensätze. Dies wird durch die genannte Option unterbunden. Gruß LabFool |