Я пытаюсь использовать SQL Server 2012, работающий в Windows Server 2012 R2, для обновления связанного сервера Filemaker 13. Мои выбранные запросы и обновления/вставки в мои таблицы SQL Server из Filemaker работают. Однако, когда я пытаюсь обновить FileMaker с SQL Server я получаю следующее сообщение об ошибке:Транзакция не может иметь несколько наборов записей с этой ошибкой типа курсора Обновление Filemaker Linked Server из 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".
Я использую следующий запрос, чтобы выполнить обновление:
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
так, мол, number
field in Filemaker эквивалентен ODBC SQL_DOUBLE
, который является equivalent to SQL Server'sfloat
, и я вытягиваю из decimal
полей в SQL Server.
У меня есть RPC
, RPC Out
и Use Remote Collation
все включены для связанного сервера, которые, я считаю, необходимы для выполнения обновлений.
Почему я получаю эту ошибку?