4 votes

Sélectionnez dans une base de données pour mettre à jour une autre

Je dois mettre à jour une table dans sql server d'une base de données à une autre et je me demandais comment faire ça avec

voici mon exemple

UPDATE [Logix].[sysdba].[TICKET] (
    STATUSCODE) 
SELECT TICKETID, GM_NUMBER, STATUSCODE
 FROM [Logix_Dev].[sysdba].[TICKET]
 where GM_NUMBER <> ''

mais j'ai l'impression que c'est la mauvaise syntaxe...en gros ce que je veux faire c'est sélectionner tous les enregistrements de la table TICKET dans la base de données Logix_Dev et mettre à jour le statuscode sur la base de données Logix où le TICKETID correspond....

6voto

JonH Points 20454

Utilisez des alias pour faciliter votre vie (même instance):

UPDATE l
SET l.STATUSCODE=s.someVal
FROM Logix.sysdba.Ticket l
INNER JOIN Logix_dev.sysdba.ticket s
ON s.ID = l.ID

Bien sûr, vous devrez remplacer s.ID et l.ID par les colonnes appropriées (TicketID ?):

UPDATE l 
SET l.STATUSCODE=s.STATUSCODE 
FROM Logix.sysdba.Ticket l 
INNER JOIN Logix_dev.sysdba.ticket s 
ON s.TicketID = l.TicketID 
WHERE s.GM_NUMBER = ''

S'ils sont sur la même instance, alors vous n'avez pas besoin de deux points (..). Si c'est un serveur lié ou une autre instance, vous avez besoin de deux points (..):

Serveur lié :

UPDATE l
SET l.STATUSCODE=s.someVal
FROM Logix.sysdba.Ticket l
INNER JOIN Logix_dev..sysdba.ticket s
ON s.ID = l.ID

0voto

misha Points 1425

Voici:

UPDATE [Logix].[sysdba].[TICKET] (
    STATUSCODE) 
SELECT TICKETID, GM_NUMBER, STATUSCODE
 FROM [Logix_Dev]..[sysdba].[TICKET]
 where GM_NUMBER <> ''

Remarquez les deux points après le nom de la base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X