Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
BlackEric Member Откуда: Сообщений: 757 |
Есть два сервера 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 Уровень совместимости обоих баз - 90 (2005). До этого у DB1 уровень совместимости был 80 (2000). Проблема проявилась после повышения уровня совместимости DB1 до 90. В чем проблема и как исправить? |
1 май 17, 23:27 [20448500] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
В правильно заданом вопросе содержится 100% ответа. Сами догадаетесь, какой SP надо установить на второй сервер?
Сообщение было отредактировано: 1 май 17, 23:58 |
1 май 17, 23:50 [20448504] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31778 |
Если запрос менять нельзя, то только сервис-паком. |
||||
1 май 17, 23:52 [20448506] Ответить | Цитировать Сообщить модератору |
BlackEric Member Откуда: Сообщений: 757 |
Гавриленко Сергей Алексеевич, Я сильно подозреваю, что по SP3 включительно, если не найдется решения по-лучше. Но это наш тестовый сервер и тут я админов напрягу. Но я не знаю, что там у кастомеров. Нельзя ли как-то поправить эти запросы что бы работало? |
1 май 17, 23:54 [20448507] Ответить | Цитировать Сообщить модератору |
BlackEric Member Откуда: Сообщений: 757 |
alexeyvg, Алиас где? Я честно говоря уже все что мог - перепробовал. |
1 май 17, 23:54 [20448508] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
|
||
2 май 17, 00:09 [20448514] Ответить | Цитировать Сообщить модератору |
BlackEric Member Откуда: Сообщений: 757 |
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] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
|
||
2 май 17, 00:39 [20448534] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
А вообще, не похоже, что какой-то из приведенных стейтметов вызывает процитированную ошибку. (Ну или реально махровый баг) Ищите триггер(ы). Сообщение было отредактировано: 2 май 17, 00:48 |
2 май 17, 00:43 [20448536] Ответить | Цитировать Сообщить модератору |
BlackEric Member Откуда: Сообщений: 757 |
Гавриленко Сергей Алексеевич, Проблема проявилась после изменения уровня совместимости первой базы с 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] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31778 |
Значит, только ставить СП.
Для этого, конечно, неплохо было бы найти какие то сообщения от других пользователей, возможно, зарегистрированный у МС баг. Я не нашёл. В крайнем случае будете махать скриптом (который с алиасами); по моему, вполне убедительно. |
||||
2 май 17, 00:47 [20448541] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31778 |
Хотя похоже, смысл проблемы именно этот. |
2 май 17, 00:50 [20448543] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
|
||
2 май 17, 02:28 [20448596] Ответить | Цитировать Сообщить модератору |
BlackEric Member Откуда: Сообщений: 757 |
Да, проблема была в триггере, который есть не на всех триггерах. Запрос в этом триггере посыпался при изменении уровня совместимости бд. 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] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
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] Ответить | Цитировать Сообщить модератору |
BlackEric Member Откуда: Сообщений: 757 |
Гавриленко Сергей Алексеевич, Да, действительно, спасибо! |
3 май 17, 13:41 [20452953] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |