2016-06-02 5 views
0

Windows Server 2012 R2에서 실행되는 SQL Server 2012를 사용하여 연결된 Filemaker 13 서버를 업데이트하려고합니다. 내 선택 쿼리 및 업데이트/Filemaker 작업에서 내 SQL Server 테이블에 삽입합니다. 그러나, 나는 시도하고 SQL 서버에서 파일 메이커를 업데이트 할 때 다음과 같은 오류 얻을 :트랜잭션에서이 커서 유형 오류가있는 여러 레코드 집합을 가질 수 없습니다. Filemaker 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". 

I 업데이트 수행하기 위해 다음 쿼리를 사용하고 있습니다 :

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' 

나는 가정으로부터 float에 캐스팅 오전 numberfield in FilemakerSQL_DOUBLEequivalent to SQL Server'sfloat과 같으며 SQL Server의 decimal 필드에서 가져옵니다.

나는 연결된 서버에서 모두 활성화 된 RPC, RPC OutUse Remote Collation입니다. 업데이트를 수행하는 데 모두 필요한 것으로 알고 있습니다.

Linked server settings

왜이 오류는 무엇입니까?

당신이 이미하지 않은 경우

답변

0

는 FieMaker ODBC 가이드를 살펴있다 : ODBC 드라이버의 쿼리는 내부 파일 메이커 SQL 구문을 준수해야한다는,

FileMaker® 15 ODBC and JDBC Guide

내가 의심을하는 T-SQL과 비교하여 다른 제한이 있습니다.

쿼리를 단순화하고 결과를 얻은 다음 점진적으로 추가하십시오.