powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / TransactionScope
4 сообщений из 4, страница 1 из 1
TransactionScope
    #34066261
AreneV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
клиент - ос = Microsoft Windows Server 2003 Enterprise Edition Service Pack 1
1-ый сервер - ос = руссифицированный Microsoft Windows 2000 server с sp4
и бд = Microsoft SQL Server Enterprise Edition Version 9.00.1399.06
2-й ос =
и бд = Microsoft SQL Server Enterprise Edition Version 8.00.760

в рамках TransactionScope
пытаюсь выполнить запросы на select к этим двум бд
1-ый на 1-ый сервер
2-ой на 2-ой сервер
на втором запросе возникает ошибка
как ее ликвидировать ?

описание ошибки:
System.Transactions.TransactionManagerCommunicationException was caught
Message="Communication with the underlying transaction manager has failed."
Source="System.Transactions"
StackTrace:
at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)
at System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx)
at System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx)
at System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
at System.Transactions.Transaction.Promote()
at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction)
at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts)
at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx)
at System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction)
at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
...
Рейтинг: 0 / 0
TransactionScope
    #34066476
аааббб
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а у тебя эти сервера прилинкованы?
т.е. ты должен использовать одно соединение в рамках одной транзакции.
...
Рейтинг: 0 / 0
TransactionScope
    #34067090
AreneV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как узнать прилинкованы они или нет
и как их прилинковать, если нет

а если нужны два разных соеденинения в рамках одной транзакции, то как быть
...
Рейтинг: 0 / 0
TransactionScope
    #34070248
AreneV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
удалось выполнить распределенный запрос с 1-ого сервера на 2-ой
а вот точно такой же запрос с 3-го на 2-ой не удалось
в чем может быть проблема
private void LoadBD_(SqlConnection cn, string scn, string s)
{
//SqlConnection cn = new SqlConnection(scn);
SqlCommand command = new SqlCommand(s, cn);
SqlDataAdapter da = new SqlDataAdapter(command);
//cn.Open();
int count = command.ExecuteNonQuery();
//cn.Close();
}

private void button1_Click(object sender, EventArgs e)
{
try
{
TimeSpan scopeTimeOut = new TimeSpan(0, 10, 0);
string s1 = "Server=srv1;Integrated Security=SSPI;password=psw123;User ID=user123;";

//string s2 = "Server=srv3;Integrated Security=SSPI;password=psw123;User ID=user123;";
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, scopeTimeOut))
{
SqlConnection cn = new SqlConnection(s1);
cn.Open();
LoadBD_(cn, s1, "Select top 1 * from testdb.dbo.Test");
LoadBD_(cn, s1, " select top 1 * from [srv2].testdb.dbo.test");

scope.Complete();
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message + Environment.NewLine + exc.StackTrace);
}
}
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / TransactionScope
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]