Мне интересно, может ли кто-нибудь объяснить концепцию однозначно идентифицирующих серверных объектов sql в соединении.Имена объектов SQL Server
В моем примере есть 2 схемы и 2 таблицы (но с тем же именем). Мое предположение заключалось в том, что хотя имя таблицы может быть одинаковым между 2-мя схемами, если на них ссылается их полное имя имя_базы_файла.schemaname.objectname, SQL-сервер должен иметь возможность разглядеть разницу. Однако, похоже, это не так, и обходным путем для этого является использование псевдонима.
Я был бы признателен, если кто-нибудь может объяснить или указать на какую-либо литературу около , почему сервер sql не может однозначно идентифицировать эти.
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
Какую ошибку вы получаете? – lad2025
Объекты «DBA_2014.Sch2.Table_1» и «DBA_2014.Sch1.Table_1» в предложении FROM имеют одинаковые открытые имена. Используйте имена корреляции, чтобы отличить их. – user2811633
Можете ли вы попробовать свой код с SQL Server 2000 или уровнем совместимости 80? – lad2025