Bartek Borczyk

Bartek Borczyk Operator liczb i
słów

Temat: Cannot fetch a row from OLE DB provider "MSDASQL" for...

Cześć,

Od jakiegoś czasu (...bo wcześniej było ok) przy próbie wykonania procedury na sql serverze poprzez linked server do bazy mysql dostaję błąd:


OLE DB provider "MSDASQL" for linked server "nazwa_linked_server" returned message "Usługa dostarczania danych lub inna usługa zwróciły stan E_FAIL.".
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "nazwa_linked_server".


Selekty działają poprawnie. Błędy powstają przy modyfikowaniu zawartości (delete, update).

Ktoś wie co może być problemem...?

Temat: Cannot fetch a row from OLE DB provider "MSDASQL" for...

1. Tabela ma locka?
- spróbuj wykonać insert typu: "FROM table_name WITH (NOLOCK)"

2. Użytkownik ma GRANT tylko na SELECT?

konto usunięte

Temat: Cannot fetch a row from OLE DB provider "MSDASQL" for...

a jak kasujesz dane?
exec ('delete from tabela') at nazwa_linked_server
?
Bartek Borczyk

Bartek Borczyk Operator liczb i
słów

Temat: Cannot fetch a row from OLE DB provider "MSDASQL" for...

Na przykład tak:


delete from lnkJOOMLA...jos_gti_okresy
where okres = @Okres

konto usunięte

Temat: Cannot fetch a row from OLE DB provider "MSDASQL" for...

Bartosz Borczyk:
Na przykład tak:


delete from lnkJOOMLA...jos_gti_okresy
where okres = @Okres

włącz sobie RPC OUT na linked serwerze i spróbuj za pomocą EXEC

exec ('delete from jos_gti_okresy where okres = ?', @Okres) at lnkJOOMLA
Bartek Borczyk

Bartek Borczyk Operator liczb i
słów

Temat: Cannot fetch a row from OLE DB provider "MSDASQL" for...

Tak działa, ale... co jeśli mam update zawartości tabeli na mysql w joinie z tabelą na sql serverze...


update l
set
RKSid = coalesce(m.Rks_ID, 0)
,MWSid = coalesce(m.Mws_ID, 0)
,aktywny = (case when m.Rks_ID is not null then 1 else 0 end)
from
lnkJOOMLA...jos_gti_lokalizacje as l
left join dbo.v_GtiSlowniki_MagazynyCale as m on l.mag = m.Magazyn
where m.Rynek2 in('POS', 'SFR')

konto usunięte

Temat: Cannot fetch a row from OLE DB provider "MSDASQL" for...

Bartosz Borczyk:
Tak działa, ale... co jeśli mam update zawartości tabeli na mysql w joinie z tabelą na sql serverze...


update l
set
RKSid = coalesce(m.Rks_ID, 0)
,MWSid = coalesce(m.Mws_ID, 0)
,aktywny = (case when m.Rks_ID is not null then 1 else 0 end)
from
lnkJOOMLA...jos_gti_lokalizacje as l
left join dbo.v_GtiSlowniki_MagazynyCale as m on l.mag = m.Magazyn
where m.Rynek2 in('POS', 'SFR')

zastąp
lnkJOOMLA...jos_gti_lokalizacje as l

openquery(lnkJOOMLA,'select * from jos_gti_lokalizacje') as l
Bartek Borczyk

Bartek Borczyk Operator liczb i
słów

Temat: Cannot fetch a row from OLE DB provider "MSDASQL" for...

Dostaję ten sam błąd co na starcie :/

Następna dyskusja:

Tips & Tricks for SQL Serve...




Wyślij zaproszenie do