2016-06-02 12 views
0

Ich versuche, SQL Server 2012 zu verwenden, das auf Windows Server 2012 R2 ausgeführt wird, um einen verknüpften Filemaker 13-Server zu aktualisieren. Meine Select-Abfragen und Updates/Inserts in meine SQL Server-Tabellen von Filemaker funktionieren. Allerdings, wenn ich versuche und aktualisieren Filemaker von SQL Server erhalte ich die folgende Fehlermeldung:Transaktion kann nicht mehrere Re-Cord-Sets mit diesem Cursortypfehler haben Update Filemaker-Verbindungsserver von SQL Server 2012

OLE DB provider "MSDASQL" for linked server "CET_REGISTRATIONS" returned message "Unspecified error". 
OLE DB provider "MSDASQL" for linked server "CET_REGISTRATIONS" returned message 
"Transaction cannot have multiple recordsets with this cursor type. Change the cursor type, commit the transaction, or close one of the recordsets.". 
Msg 7330, Level 16, State 2, Line 1 
Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "CET_REGISTRATIONS". 

ich die folgende Abfrage bin mit dem Update auszuführen:

update OPENQUERY(CET_REGISTRATIONS, 
        'select "Current", 
          "Term ID", 
          "_kp_ClassByStudentID", 
          "_kr_StudentID", 
          "DE_r_task1", 
          "DE_r_task2", 
          "DE_w_task1", 
          "DE_w_task2", 
          "DE_w_task3", 
          "DE_w_task4", 
          "DE_w_task5", 
          "DE_l_task1", 
          "DE_l_task2", 
          "DE_s_task1", 
          "DE_s_task2", 
          "DE_s_task3", 
          "DE_r_final", 
          "DE_w_final", 
          "DE_l_final", 
          "DE_s_final", 
          "DE_o_final_total" 
        from "Class by Student"') 
       set [DE_r_task1] = CAST(read_test1_Scaled as float), 
        [DE_r_task2] = cast(read_test2_scaled as float), 
        [DE_w_task1] = cast(writ_literatureReview as float), 
        [DE_w_task2] = cast(writ_exposition as float), 
        [DE_w_task3] = cast(writ_groupReport as float), 
        [DE_w_task4] = cast(writ_synthSummary as float), 
        [DE_w_task5] = cast(writ_critEvaluation as float), 
        [DE_l_task1] = cast(list_test1_scaled as float), 
        [DE_l_task2] = cast(list_test2_scaled as float), 
        [DE_s_task1] = cast(speak_groupPres as float), 
        [DE_s_task2] = cast(speak_indivPres as float), 
        [DE_s_task3] = cast(speak_tutorialDiscus as float), 
        [DE_r_final] = cast(read_total as float), 
        [DE_w_final] = cast(writ_total as float), 
        [DE_l_final] = cast(list_total as float), 
        [DE_s_final] = cast(speak_total as float), 
        [DE_o_final_total] = cast(overall_total as float) 
       from OPENQUERY(CET_REGISTRATIONS, 
           'select "Current", 
             "Term ID", 
             "_kp_ClassByStudentID", 
             "_kr_StudentID", 
             "DE_r_task1", 
             "DE_r_task2", 
             "DE_w_task1", 
             "DE_w_task2", 
             "DE_w_task3", 
             "DE_w_task4", 
             "DE_w_task5", 
             "DE_l_task1", 
             "DE_l_task2", 
             "DE_s_task1", 
             "DE_s_task2", 
             "DE_s_task3", 
             "DE_r_final", 
             "DE_w_final", 
             "DE_l_final", 
             "DE_s_final", 
             "DE_o_final_total" 
           from "Class by Student"') filemaker 
       inner join dbo.termData 
       on filemaker.[_kp_ClassByStudentID] = termData.StbyCurrentClassID 
       inner join dbo.DEC10assessmentDataNumeric local_table 
       on local_table.studentID = termData.studentID 
       where local_table.[studentID] = 34114 and local_table.[assessmentLookup] = 3 and 
         termData.[termID] = '316a' 

ich float da angeblich am Casting der numberfield in Filemaker entspricht ODBC SQL_DOUBLE das ist equivalent to SQL Server'sfloat und ich ziehe von decimal Felder in SQL Server.

Ich habe RPC, RPC Out und Use Remote Collation alle aktiviert für den Verbindungsserver, die alle für die Durchführung von Updates benötigt werden.

Linked server settings

Warum erhalte ich diesen Fehler?

Antwort

0

Wenn Sie nicht bereits getan haben, haben einen Blick auf die FieMaker ODBC Guide:

FileMaker® 15 ODBC and JDBC Guide

Ich vermute, dass die Abfragen auf ODBC-Treiber müssen die internen Filemaker SQL-Syntax erfüllen, die ist anders und begrenzter im Vergleich zu T-SQL.

Versuchen Sie, Abfrage zu vereinfachen, erhalten Sie Ergebnis und fügen Sie dann Extras schrittweise hinzu.