2011-06-20 4 views
6

Próbuję zaktualizować pola bazy danych z jednej tabeli programu SQL Server do innej.Zaktualizuj tabelę bazy danych z jednej tabeli bazy danych programu SQL Server do innej?

Nasz produkcyjny serwer SQL to [spdbprod.test.com\spprod], nasz serwer kontroli jakości to [spdbQA.test.com\spQA].

Potrzebuję zaktualizować tabelę w produkcji z tabeli kontroli jakości. Używam tej instrukcji SQL, ale podaje ona błąd.

UPDATE 
    [spdbprod.test.com\spprod].[aspnetdb].[dbo].[Communities_Groups] as t1 
SET 
    t1.Show = (Select t2.show from [spdbQA.test.com\spQA].[aspnetdb].[dbo]. 
[Communities_Groups] as t2 where t1.GroupID = t2.GroupdID) 

Czego mi tu brakuje? Błąd: AKTUALIZACJA. ("Niepoprawna składnia w pobliżu słowa kluczowego" jako ".")

+0

Jeśli pisać coś takiego i dokuczać nam * daje błąd *, najlepiej byłoby praktyką ** powiedzieć * * jaki jest dokładny błąd! Byłaby to ogromna pomoc, aby zobaczyć, czym może być probelm ... –

+0

@marc_s: Myślę, że jeden oczywisty błąd to alias tabeli w 'UPDATE'. ("Niepoprawna składnia w pobliżu słowa kluczowego" jako ".") – a1ex07

+1

@ a1ex07: to jest domysły - dobry (wziął górę za to dobre przypuszczenie), ale wciąż domysły .... i chodzi o ogólną zasadę - nie po prostu powiedz "jest błąd" - jeśli to powiesz - powiedz nam, co to za błąd! –

Odpowiedz

15

Używasz aliasu tabeli w niewłaściwy sposób. Nie możesz wykonać UPDATE table1 t SET field1=val, musisz napisać UPDATE table1 SET field=val (lub UPDATE table1 SET field=val FROM table1 t). Więc zmień zapytanie na

UPDATE [spdbprod.test.com\spprod].[aspnetdb].[dbo].[Communities_Groups] 
SET Show = t2.show 
FROM [spdbprod.test.com\spprod].[aspnetdb].[dbo].[Communities_Groups] t1 
INNER JOIN [spdbQA.test.com\spQA].[aspnetdb].[dbo]. 
[Communities_Groups] t2 ON (t1.GroupID = t2.GroupID) 
+1

Formularz: "UPDATE t SET field = val FROM table1 t" również działa. –

+0

Wygląda na to, że część "[dbo]" jest ważniejsza, niż myślałem. Niemniej jednak, właśnie uratowałeś mój tyłek! Mile widziane. –

0

Wierzę, że musisz mieć łącze do bazy danych (połączone serwery), aby to działało.

Nie mam tutaj dostępu do dwóch serwerów SQL, więc nie mogę go przetestować, ale na pewno potrzebuję tego łącza. Czy masz połączoną instalację serwera?

Oto URL, które mogą pomóc http://msdn.microsoft.com/en-us/library/ms188279.aspx

Harvey Sather