Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сообщение 1013. Две бд и таблицы с одним именем  [new]
BlackEric
Member

Откуда:
Сообщений: 754
Есть два сервера
1. Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) Sep 21 2011 22:45:45 Copyright (c) 1988-2008 Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)
2. Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64) Jul 9 2008 14:17:44 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)

На сервере несколько баз, каждая из которых содержит таблицу Subdomains, но структура таблиц не полностью идентична.

Пакет запросов:

UPDATE Subdomains SET subdomainversion = 9.91 WHERE subdomainid = 1; 
UPDATE Subdomains SET maxbrowserversion = LEFT(CAST(subdomainversion AS varchar(30)), 3) WHERE subdomainid = 1; 
UPDATE DB2.dbo.Subdomains SET subdomainversion = 9.91 WHERE subdomainid = 1; 
UPDATE DB2.dbo.Subdomains SET maxbrowserversion = LEFT(CAST(subdomainversion AS varchar(30)), 3) WHERE subdomainid = 1


Работает на 1 сервере (SP3) и валится на втором (RTM)

Валится с ошибкой:
Сообщение 1013, уровень 16, состояние 1, строка 3
The objects "DB1.dbo.Subdomains" and "DB2.dbo.Subdomains" in the FROM clause have the same exposed names. Use correlation names to distinguish them.

Уровень совместимости обоих баз - 90 (2005).
До этого у DB1 уровень совместимости был 80 (2000).

Проблема проявилась после повышения уровня совместимости DB1 до 90.

В чем проблема и как исправить?
1 май 17, 23:27    [20448500]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
В правильно заданом вопросе содержится 100% ответа. Сами догадаетесь, какой SP надо установить на второй сервер?

Сообщение было отредактировано: 1 май 17, 23:58
1 май 17, 23:50    [20448504]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30778
BlackEric
В чем проблема
Очевидно же - баг?
BlackEric
как исправить?
А если алиас указать?
Если запрос менять нельзя, то только сервис-паком.
1 май 17, 23:52    [20448506]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
BlackEric
Member

Откуда:
Сообщений: 754
Гавриленко Сергей Алексеевич,

Я сильно подозреваю, что по SP3 включительно, если не найдется решения по-лучше. Но это наш тестовый сервер и тут я админов напрягу. Но я не знаю, что там у кастомеров.

Нельзя ли как-то поправить эти запросы что бы работало?
1 май 17, 23:54    [20448507]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
BlackEric
Member

Откуда:
Сообщений: 754
alexeyvg,

Алиас где? Я честно говоря уже все что мог - перепробовал.
1 май 17, 23:54    [20448508]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
BlackEric
alexeyvg,

Алиас где? Я честно говоря уже все что мог - перепробовал.
У оператора update есть такая же секия from, как и у оператора select.
2 май 17, 00:09    [20448514]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
BlackEric
Member

Откуда:
Сообщений: 754
UPDATE s SET s.subdomainversion = 9.91 
From Subdomains s
WHERE s.subdomainid = 1; 

UPDATE s SET s.maxbrowserversion = LEFT(CAST(s.subdomainversion AS varchar(30)), 3)
From Subdomains s
 WHERE s.subdomainid = 1; 

UPDATE s1 SET s1.subdomainversion = 9.91 
From DB2.dbo.Subdomains s1
WHERE s1.subdomainid = 1; 

UPDATE s1 SET s1.maxbrowserversion = LEFT(CAST(s1.subdomainversion AS varchar(30)), 3) 
From DB2.dbo.Subdomains s1
WHERE s1.subdomainid = 1;


Такая конструкция выдает точно такую же ошибку :(
2 май 17, 00:35    [20448529]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
BlackEric
Такая конструкция выдает точно такую же ошибку :(
В RTM-версиях и не такое бывает.
2 май 17, 00:39    [20448534]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
А вообще, не похоже, что какой-то из приведенных стейтметов вызывает процитированную ошибку. (Ну или реально махровый баг)
Ищите триггер(ы).

Сообщение было отредактировано: 2 май 17, 00:48
2 май 17, 00:43    [20448536]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
BlackEric
Member

Откуда:
Сообщений: 754
Гавриленко Сергей Алексеевич,

Проблема проявилась после изменения уровня совместимости первой базы с 2000 до 2005.
Вот, кажется, описание проблемы: https://blogs.msdn.microsoft.com/ialonso/2007/12/21/msg-1013-the-object-s-and-s-in-the-from-clause-have-the-same-exposed-names-use-correlation-names-to-distinguish-them/
2 май 17, 00:46    [20448539]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30778
BlackEric
Такая конструкция выдает точно такую же ошибку :(
Печально, но ведь был шанс, что поможет...

Значит, только ставить СП.
BlackEric
Но я не знаю, что там у кастомеров.
Кастомерам тоже надо ставить СП.

Для этого, конечно, неплохо было бы найти какие то сообщения от других пользователей, возможно, зарегистрированный у МС баг. Я не нашёл.
В крайнем случае будете махать скриптом (который с алиасами); по моему, вполне убедительно.
2 май 17, 00:47    [20448541]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30778
BlackEric
Вот, кажется, описание проблемы: https://blogs.msdn.microsoft.com/ialonso/2007/12/21/msg-1013-the-object-s-and-s-in-the-from-clause-have-the-same-exposed-names-use-correlation-names-to-distinguish-them/
О, я это тоже видел, но там всё таки в UPDATE 2 разные таблицы...

Хотя похоже, смысл проблемы именно этот.
2 май 17, 00:50    [20448543]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
BlackEric
Гавриленко Сергей Алексеевич,

Проблема проявилась после изменения уровня совместимости первой базы с 2000 до 2005.
Вот, кажется, описание проблемы: https://blogs.msdn.microsoft.com/ialonso/2007/12/21/msg-1013-the-object-s-and-s-in-the-from-clause-have-the-same-exposed-names-use-correlation-names-to-distinguish-them/
Проблема появилась, когда вы решили использовать непатченный сервер, к которому минимум три сервиспака выпустили.
2 май 17, 02:28    [20448596]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
BlackEric
Member

Откуда:
Сообщений: 754
Да, проблема была в триггере, который есть не на всех триггерах.
Запрос в этом триггере посыпался при изменении уровня совместимости бд.

USE [DB1] 


UPDATE Subdomains 
SET 
							subdomainversion = DB2.dbo.Subdomains.subdomainversion,
							minbrowserversion = DB2.dbo.Subdomains.minbrowserversion,
							currentbrowserversion = DB2.dbo.Subdomains.currentbrowserversion,
							maxbrowserversion = DB2.dbo.Subdomains.maxbrowserversion,
							sslrequired = DB2.dbo.Subdomains.sslrequired
FROM
							DB2.dbo.Subdomains INNER JOIN [DB1].dbo.Subdomains
								ON DB2.dbo.Subdomains.name = [DB1].dbo.Subdomains.Name
WHERE
							DB2.dbo.Subdomains.Databasename = 'DB1'
							AND 
							[DB1].dbo.Subdomains.Name = DB2.dbo.Subdomains.Name


Но что в этом запросе не нравится серверу, я не пойму!
3 май 17, 13:15    [20452860]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
USE [DB1] 


UPDATE db1 -- Хотя вот ни разу не понятно, какую именно из двух таблиц апдейтить 
SET 
							subdomainversion = DB2.Subdomains.subdomainversion,
							minbrowserversion = DB2.Subdomains.minbrowserversion,
							currentbrowserversion = DB2.Subdomains.currentbrowserversion,
							maxbrowserversion = DB2.Subdomains.maxbrowserversion,
							sslrequired = DB2.Subdomains.sslrequired
FROM
							DB2.dbo.Subdomains as db2 INNER JOIN [DB1].dbo.Subdomains as db1
								ON DB2.Subdomains.name = DB1.Subdomains.Name
WHERE
							DB2.Subdomains.Databasename = 'DB1'
							AND 
							DB1.Subdomains.Name = DB2.Subdomains.Name
3 май 17, 13:26    [20452901]     Ответить | Цитировать Сообщить модератору
 Re: Сообщение 1013. Две бд и таблицы с одним именем  [new]
BlackEric
Member

Откуда:
Сообщений: 754
Гавриленко Сергей Алексеевич,

Да, действительно, спасибо!
3 май 17, 13:41    [20452953]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить