MSSQL: The objects in the FROM clause have the same exposed names. Use correlation names to distinguish them.

Ich sitze gerade an einer SP für den MSSQL Server, welche zusammen mit einem Trigger eine Kopie der Daten in die selbe Tabelle einer anderen Datenbank ablegen soll.
Im Prinzip könnte man dazu sagen: Eine DB-Replikation für arme 🙂

Für Das Update eines Datensatzes (der tabelle „adressen“ von der DB „Mandant1“ zu der DB „Mandant2“) habe ich folgenden Query:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
UPDATE
	[Mandant2].[dbo].[adressen]
SET
	[Mandant2].[dbo].[adressen].[name]  = [Mandant1].[dbo].[adressen].[name] ,
	[Mandant2].[dbo].[adressen].[email] = [Mandant1].[dbo].[adressen].[email] ,
	[Mandant2].[dbo].[adressen].[geb]   = [Mandant1].[dbo].[adressen].[geb] 
FROM
	[Mandant1].[dbo].[adressen]
INNER JOIN
	[Mandant2].[dbo].[adressen]
ON
	[Mandant1].[dbo].[adressen].[id]   = [Mandant2].[dbo].[adressen].[id]
WHERE 
	[Mandant1].[dbo].[adressen].[id]   = 4

Das Problem an der sache ist – beim Ausführen bekomme ich folgenden Fehler:

Meldung 1013, Ebene 16, Status 1, Zeile 1
The objects "Mandant2.dbo.adressen" and "Mandant1.dbo.adressen" in the FROM clause have the same exposed names. Use correlation names to distinguish them.

Nach etwas googeln und lesen findet man heraus das man hier im INNER JOIN zwingend einen Alias angeben muss.
Mit diesem Alias würde der oben stehende Query dann so aussehen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
UPDATE
	[Mandant2].[dbo].[adressen]
SET
	[Mandant2].[dbo].[adressen].[name]  = [Mandant1].[dbo].[adressen].[name] ,
	[Mandant2].[dbo].[adressen].[email] = [Mandant1].[dbo].[adressen].[email] ,
	[Mandant2].[dbo].[adressen].[geb]   = [Mandant1].[dbo].[adressen].[geb] 
FROM
	[Mandant1].[dbo].[adressen]
INNER JOIN
	[Mandant2].[dbo].[adressen] AS [TargetDB]
ON
	[Mandant1].[dbo].[adressen].[id]   = [TargetDB].[id]
WHERE 
	[Mandant1].[dbo].[adressen].[id]   = 4

Und schon bekommen wir die Meldung:

(1 Zeile(n) betroffen)

Unter Verwendung eines Aliases funktioniert also auch ein Datenbank-übergreifendes Update zweier Datenbanken der selben Struktur 🙂

leave your comment


*

Unterstütze den Frickelblog!