Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mssql serv 2005 Linked server zapytanie z insertem
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
stachuf11
witam
temat jest taki
w Mssql 2005 mam podlinkowany serwer mysql o nazwie np 'BAZAMYSQL'

terraz aby pobrac dane z tej bazy z tabeli osoby uzywam query

  1. SELECT * FROM OPENQUERY(BAZAMYSQL, "SELECT * FROM OSOBY" )


no i wyświetla mi listę rekordów
A teraz jeśli chciałbym dodać osobę do tej tabeli OSOBY w bazie podlinkowanej, jak ma wyglądać zapytanie, nie mam pojęcia, szukałem w google, w msdn i nie znalazłem, pomoże ktoś?
Nie działą zwykłe zapytanie z insertem np
  1. INSERT INTO BAZAMYSQL.OSOBY ...........

wyskakuje błąd że nieznana nazwa BAZAMYSQL


Stachu




juz znalazłem
w MSDN trzeba szukać po haśle OPENQUERY

poniżej przykład do ORACLA, ale myślę że do MYSQL-a będzie tak samo
  1. INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
  2. VALUES ('NewTitle');


pozdrawiam
Stachu
prachwal
  1. EXEC ('SELECT TOP 10 * FROM AdventureWorks.Sales.Customer
  2. WHERE CustomerID = ? AND LastName = ?', 10, 'Garza') AT [<LINKED-SERVER-NAME>];


zamiast SELECT możesz dać natywnego INSERT-a w MySQL-u, parametry są po przecinku i mogą być w zmiennych

i ważne znak zapytania odpowiada przypisaniu jednego parametru - liczy się kolejność parametrów w zapytaniu

no i ważne trzeba ustawić RPC

http://www.packtpub.com/article/mysql-link...sql-server-2008 ( w 2005 jest dokładnie tak samo)
stachuf11
napotkałem jednak przeszkodę, chciałem dodać rekord w linkedserver t triggerze after insert, jednak niestety wyskakuje bład
"MSDTC on server.... in unavailable "
cokolwiek konkretnego chciałbym zrobic, kłody pod nogi się sypią sad.gif, otworzyc pliku z exe się nie da, wstawić rekordu do mysql-a po insercie też niemożliwe,
prachwal
Cytat(stachuf11 @ 11.08.2009, 10:11:04 ) *
napotkałem jednak przeszkodę, chciałem dodać rekord w linkedserver t triggerze after insert, jednak niestety wyskakuje bład
"MSDTC on server.... in unavailable "
cokolwiek konkretnego chciałbym zrobic, kłody pod nogi się sypią sad.gif , otworzyc pliku z exe się nie da, wstawić rekordu do mysql-a po insercie też niemożliwe,



to włącz tą usługę winksmiley.jpg

http://geekswithblogs.net/narent/archive/2...0/09/93544.aspx
stachuf11
włączyłem tą usługę i działa smile.gif, mogę dodawać inserty do linked server w triggerze after insert

dziekuję serdecznie za pomoc
pozdrawiam
prachwal
Cytat(stachuf11 @ 11.08.2009, 10:51:51 ) *
włączyłem tą usługę i działa smile.gif , mogę dodawać inserty do linked server w triggerze after insert

dziekuję serdecznie za pomoc
pozdrawiam


jak korzystasz z exec (...) at linked_server to koniecznie musisz mieć kursor przerabiający wszystkie rekordy w tabeli wirtualnej inserted

jak robisz za pomocą

update openquery (linked_server,'select * from ....')
set cos = cos.innego
where costam costam

to wystarczy zrobic joina z tabela wirtualna inserted, ale dziala wolniej sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.