У меня есть процедура CLR, которая открывает соединение с сервером, скажем, SERVER2, и получает некоторые данные, обрабатывает их и возвращает таблицу.
[SqlFunction(
DataAccess = DataAccessKind.Read,
FillRowMethodName = "List_FillRow",
TableDefinition = "Date datetime, Quantity int")]
public static IEnumerable ListCount(...)
{
using (SqlConnection con = new SqlConnection(connectionStringToSERVER2))
{ ... }
return list;
}
Эта процедура CLR запускается из хранимой SQLПроцедура, которая выполняется на SERVER1.
CREATE PROCEDURE [dbo].[sp_Reports_NumaraSpalariJetWash]
BEGIN
DECLARE curs CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
SELECT ...
OPEN curs
FETCH NEXT FROM curs
INTO ...;
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO ...
(...)
SELECT Date, Quantity
FROM dbo.ListCount(...)
FETCH NEXT FROM curs
INTO ...;
END
END
Я получаю ошибки: "System.Data.SqlClient.SqlException: Transaction context in use by another session."
В окне результатов эта ошибка появляется несколько раз, я думаю, один раз для каждого цикла в FETCH.