Mi chiedo se qualcuno possa spiegare il concetto di identificazione univoca degli oggetti server SQL in un join.Nome oggetto server SQL
Nel mio esempio ci sono 2 schemi e 2 tabelle (ma con lo stesso nome). La mia ipotesi era che, anche se il nome della tabella potrebbe essere lo stesso tra 2 schemi, purché siano referenziati con il nome completo completo databasename.schemaname.objectname, SQL Server dovrebbe essere in grado di distinguere la differenza. Tuttavia, ciò non sembra essere il caso e la soluzione alternativa è utilizzare alias.
Sarei grato se qualcuno possa spiegare o fare riferimento a qualche letteratura in merito a , perché il server SQL non può identificare in modo univoco questi.
CREATE SCHEMA [Sch1]
GO
CREATE SCHEMA [Sch2]
GO
CREATE TABLE [Sch1].[Table_1](
[ID] [int] NULL,
[DESC] [nchar](10) NULL
) ON [PRIMARY]
GO
CREATE TABLE [Sch2].[Table_1](
[ID] [int] NULL,
[DESC] [nchar](10) NULL
) ON [PRIMARY]
GO
Select *
From Sch1.Table_1
Join Sch2.Table_1
on Sch1.Table_1.Id = Sch2.Table_1.Id
Che errore che si ottiene? – lad2025
Gli oggetti "DBA_2014.Sch2.Table_1" e "DBA_2014.Sch1.Table_1" nella clausola FROM hanno gli stessi nomi esposti. Utilizzare i nomi di correlazione per distinguerli. – user2811633
Puoi provare il tuo codice con SQL Server 2000 o livello di compatibilità 80? – lad2025