Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
Alexander Z
Member

Откуда: Moscow
Сообщений: 2
Приветствую!

Вот, столкнулся с проблемой при вставке в таблицу данных из удаленного источника.
Пытаюсь выполнить вот такой код:

DECLARE @RemoteConnStr nvarchar(255), 

@RemoteSelectStr nvarchar(3000),
@DBSrvName varchar(50),
@DBUser varchar(50),
@DBPassword varchar(50),
@StartDate datetime,
@EndDate datetime

SELECT @DBSrvName = 'MyServer', @DBUser = 'MyUser', @DBPassword='MyPassword'
SELECT @StartDate = '2004-04-01', @EndDate = '2004-05-01'

SELECT @RemoteConnStr = 'Data Source=' + @DBSrvName + ';User ID=' + @DBUser + ';Password=' + @DBPassword,
SELECT @RemoteSelectStr = N'SELECT SomeDate, Field1, Field2 '
+ N' FROM OPENDATASOURCE(''SQLOLEDB'', '''+ RTRIM(@RemoteConnStr)
+ N''').MyRemoteDb.dbo.MyRemoteTable '
+ N' WHERE (SomeDate BETWEEN @StartDate AND @EndDate)'

INSERT INTO MyLocalSrvTable(SomeDate, Field1, Field2) -- ! ВОТ ЗДЕСЬ ПРОБЛЕМА !

EXEC sp_executesql @stmt=@RemoteSelectStr, @params=N'@StartDate datetime, @EndDate datetime', @StartDate=@StartDate, @EndDate=@EndDate


Теперь описание Проблемы:
Если строчку "INSERT INTO ..." закомментировать,
то все на ура выполняется, и данные я вижу в QA
А вот если ее оставить - то вижу сообщение:
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.

[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].


Замечание: службы MS DTC на ОБОИХ серверах включены.

В чем же дело тогда ???
Подскажите, заранее спасибо.
19 апр 04, 12:18    [635582]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Запущены не означает доступны

Такой запрос работает ?

begin distributed transaction

select * from FROM OPENDATASOURCE('SQLOLEDB', ...).MyRemoteDb.dbo.MyRemoteTable
rollback transaction
19 апр 04, 15:05    [636109]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
Alexander Z
Member

Откуда: Moscow
Сообщений: 2
нет, не работает
вылазит та же ошибка
19 апр 04, 15:28    [636188]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Тогда вам сюда
http://support.microsoft.com/default.aspx?scid=kb;en-us;306843
19 апр 04, 15:30    [636195]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
KDIMA
Member

Откуда: Россия, Тверь
Сообщений: 120
А чего делать если все пингуется а тестовый запрос на распределенную транзакцию вылетает ?
28 июн 04, 17:33    [769534]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
Алексей К
Member

Откуда: Новосибирск
Сообщений: 13632
Надо чтобы оба сервера видели друг друга по ИМЕНИ. Доступности по IP адресу недостаточно. Попробуйте добавить имя удалённого сервера в файл Hosts на ОБОИХ серверах.
29 июн 04, 06:58    [770108]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
KDIMA
Member

Откуда: Россия, Тверь
Сообщений: 120
Счас добавлю. Но это сомнительно т.к. имена ресолвяться нормально, и пинговал я их по имени.
29 июн 04, 08:39    [770162]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
Алексей К
Member

Откуда: Новосибирск
Сообщений: 13632
Ну у нас такая же проблема была, нам это помогло.
29 июн 04, 08:45    [770169]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
KDIMA
Member

Откуда: Россия, Тверь
Сообщений: 120
Вот точно не помогает. Все видят друг-друга по имени. Mdac стоит 2.8 и все равно не получается начать транзакцию.
29 июн 04, 09:02    [770196]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
KDIMA
Member

Откуда: Россия, Тверь
Сообщений: 120
2 Алексей К
А у вас DTCPing проходил до прописывания в hosts ?
29 июн 04, 09:33    [770269]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
Алексей К
Member

Откуда: Новосибирск
Сообщений: 13632
DTCPing мы не пробовали, без него заработало... Ну у вас, думаю, порты перекрыты... хотя, кто его знает...
29 июн 04, 10:16    [770382]     Ответить | Цитировать Сообщить модератору
 Re: OPENDATASOURCE, ошибка 0x8004D00A (DTS ?)  [new]
KDIMA
Member

Откуда: Россия, Тверь
Сообщений: 120
А имеет ли значение от чьего имени стартовал сервер ?
У меня есть следующее наблюдение:

сервер 1 - XP, local, стартует под system account
сервер 2 - 2003, local, стартует по user account
сервер 3 - 2003, named instance, стартует под system account

так вот:
сервер 3->сервер 1 распр. тран. проходит
сервер 3->сервер 2 распр. тран. НЕ проходит
29 июн 04, 10:21    [770409]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить