Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 linked server from sql 2000 to sql 2008  [new]
soljo_ua
Member

Откуда: Киев
Сообщений: 369
Доброго времени суток!
Проблема:
создал прилинкованный сервер на 2000 к 2008, делаю выборку
select * from server.base.dbo.view
возвращает данные, но без полей в которых есть точка то есть например [No.]
при выборке данных следующим образом
SELECT *
FROM OPENQUERY(server,'select * from base.dbo.view')
все возвращает нормально
Microsoft SQL Server  2000 - 8.00.2282 (Intel X86)   Dec 30 2008 02:22:41   Copyright (c) 1988-2003 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 

Microsoft SQL Server 2008 (SP1) - 10.0.2714.0 (X64)   May 14 2009 16:08:52   Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2) 

в чем может быть проблема подскажите
22 июн 09, 13:03    [7327763]     Ответить | Цитировать Сообщить модератору
 Re: linked server from sql 2000 to sql 2008  [new]
LogrusAS
Member

Откуда: Киев
Сообщений: 189
В системе имеется системная вьюха sys.spt_columns_view и в ней у 2008 (или после первого сервиспака) есть грубая ошибка.
В запросе имеется условие
has_perms_by_name(quotename(schema_name(o.schema_id)) + '.' + quotename(o.name),
                                                                    'OBJECT',
                                                                    'UPDATE',
                                                                    c.name,
                                                                    'COLUMN') = 1

Где c.name - имя столбца.
И на "неправильных" именах оно естественно отрабатывает неправильно, возвращает NULL.
Если исправить код на
has_perms_by_name(quotename(schema_name(o.schema_id)) + '.' + quotename(o.name),
                                                                    'OBJECT',
                                                                    'UPDATE',
                                                                    quotename(c.name),
                                                                    'COLUMN') = 1

то все правится.
Вернее там с десяток мест с такой ошибкой.

Самое сложное это исправить системную вьюху.
Методология имеется, проверено на 3 серверах где возникла эта проблема.

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

В любом случае это явный баг и его должны править в Майкрософте.

У кого нибудь есть возможность отправить запрос на баг?
22 июн 09, 18:15    [7330223]     Ответить | Цитировать Сообщить модератору
 Re: linked server from sql 2000 to sql 2008  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Да, баг сущетсвует, аксаптоводы, навиженовцы вполне вероятно что наткнутся на него рано или поздно.

Баг и решение проблемы запостил здесь:
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=468946
22 июн 09, 18:42    [7330302]     Ответить | Цитировать Сообщить модератору
 Re: linked server from sql 2000 to sql 2008  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Александр Волок (def1983)
Баг и решение проблемы запостил здесь:
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=468946

Установлен новый статус: Status Resolved (Fixed)

Исправление, вероятно, будет включео в следующие обновления
8 июл 09, 10:20    [7389805]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить