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

Откуда:
Сообщений: 132
Пытаюсь создать индекс на View, но ругается на колонку, которая в Join. Говорит, типа, не пресайз.
Сам знаю, что не пресайз, читал про ограничения, только ничего поделать не могу.
Там поле Numeric 16,0. Оно, конечно, целое, но сервер этого не ценит.
Менять нельзя, таблиц эдак триста на все это смотрят. CAST не помогает.
Может кто подскажет?
23 ноя 13, 22:18    [15179919]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
sdet
Member

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

Какой тип join?
23 ноя 13, 23:01    [15180124]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
HResult
Member

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

INNER

Вот запрос:
SELECT        point_begin.Route_ID, point_begin.Measure , point_end.Measure, obj.Event_ID, obj.Pipe_Manufacturer_GCL, 
                         obj.Date_Manufactured, obj.PIPE_MILL_LOCATION_GCL, obj.Mill_Test_Pressure, obj.pipe_MATERIAL_gcl, obj.PIPE_SPECIFICATION_GCL, 
                         obj.Pipe_Grade_GCL, obj.SMYS_GCL, obj.nominal_diameter_gcl, obj.Nominal_Wall_Thickness_GCL, obj.PIPE_LONG_SEAM_GCL, obj.Date_Installed, 
                         obj.source_gcl, obj.Comments, obj.Outside_Diameter, obj.description
FROM            dbo.Pipe_Segment AS obj INNER JOIN
                         dbo.Event_Range AS ev ON obj.Event_ID = ev.Event_ID INNER JOIN
                         dbo.Station_Point AS point_begin ON ev.Station_ID_Begin = point_begin.Station_ID INNER JOIN
                         dbo.Station_Point AS point_end ON ev.Station_ID_End = point_end.Station_ID
WHERE        (ev.Current_Indicator_LF = 'Y')


Вот сообщение:

Create failed for Index 'ClusteredIndex-...'. (Microsoft.SqlServer.Smo)

Cannot create index on view '....dbo....view' because column 'Event_ID' that is referenced by the view in the WHERE or GROUP BY clause is imprecise. Consider eliminating the column from the view, or altering the column to be precise. (Microsoft SQL Server, Error: 1962)

База данных стандартная, менять тип данных не рекомендуется. Надо искать, как обдурить.
23 ноя 13, 23:33    [15180257]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
sdet
Member

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

SET NUMERIC_ROUNDABORT в OFF?
24 ноя 13, 00:08    [15180367]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
HResult
Member

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

да я поставил, когда создавал View в скрипте. Но теперь, когда пересоздаю я этого предложения не вижу
24 ноя 13, 00:12    [15180381]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
sdet
Member

Откуда:
Сообщений: 463
HResult
sdet,

да я поставил, когда создавал View в скрипте. Но теперь, когда пересоздаю я этого предложения не вижу

Проверьте правильность необходимых опций
to ON
ANSI_NULLS
ANSI_PADDING
ANSI_WARNINGS
ARITHABORT
CONCAT_NULL_YIELDS_NULL
QUOTED_IDENTIFIER

to OFF
NUMERIC_ROUNDABORT
24 ноя 13, 00:22    [15180422]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9843
Версия сервера?

Что вернет запрос
select
 TABLE_NAME, COLUMN_NAME, DATA_TYPE, NUMERIC_PRECISION, NUMERIC_SCALE
from
 INFORMATION_SCHEMA.COLUMNS
where
 COLUMN_NAME = 'Event_ID' and
 TABLE_SCHEMA = 'dbo' and
 TABLE_NAME in ('Pipe_Segment', 'Event_Range');
24 ноя 13, 00:30    [15180442]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
HResult
Member

Откуда:
Сообщений: 132
sdet
HResult
sdet,

да я поставил, когда создавал View в скрипте. Но теперь, когда пересоздаю я этого предложения не вижу

Проверьте правильность необходимых опций
to ON
ANSI_NULLS
ANSI_PADDING
ANSI_WARNINGS
ARITHABORT
CONCAT_NULL_YIELDS_NULL
QUOTED_IDENTIFIER

to OFF
NUMERIC_ROUNDABORT

А где их ставить надо? Я вписываю в скрипт. Потом, если пересоздать, то в новом скрипте некоторые опции остаются, а остальные пропадают.
24 ноя 13, 00:34    [15180453]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
sdet
Member

Откуда:
Сообщений: 463
HResult
sdet
пропущено...

Проверьте правильность необходимых опций
to ON
ANSI_NULLS
ANSI_PADDING
ANSI_WARNINGS
ARITHABORT
CONCAT_NULL_YIELDS_NULL
QUOTED_IDENTIFIER

to OFF
NUMERIC_ROUNDABORT

А где их ставить надо? Я вписываю в скрипт. Потом, если пересоздать, то в новом скрипте некоторые опции остаются, а остальные пропадают.


SELECT *
FROM sys.dm_exec_sessions
WHERE session_id = @@spid
24 ноя 13, 00:38    [15180459]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
HResult
Member

Откуда:
Сообщений: 132
invm
Версия сервера?

Что вернет запрос
select
 TABLE_NAME, COLUMN_NAME, DATA_TYPE, NUMERIC_PRECISION, NUMERIC_SCALE
from
 INFORMATION_SCHEMA.COLUMNS
where
 COLUMN_NAME = 'Event_ID' and
 TABLE_SCHEMA = 'dbo' and
 TABLE_NAME in ('Pipe_Segment', 'Event_Range');

TABLE_NAME COLUMN_NAME DATA_TYPE NUMERIC_PRECISION NUMERIC_SCALE
Event_Range Event_ID numeric 16 0
Pipe_Segment Event_ID float 53 NULL
24 ноя 13, 00:40    [15180463]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
sdet
Member

Откуда:
Сообщений: 463
HResult
sdet
пропущено...

Проверьте правильность необходимых опций
to ON
ANSI_NULLS
ANSI_PADDING
ANSI_WARNINGS
ARITHABORT
CONCAT_NULL_YIELDS_NULL
QUOTED_IDENTIFIER

to OFF
NUMERIC_ROUNDABORT

А где их ставить надо? Я вписываю в скрипт. Потом, если пересоздать, то в новом скрипте некоторые опции остаются, а остальные пропадают.

DBCC USEROPTIONS
24 ноя 13, 00:41    [15180467]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
sdet
Member

Откуда:
Сообщений: 463
HResult,
Event_ID float 53 не соответствует
24 ноя 13, 00:47    [15180475]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
HResult
Member

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

Что именно не соответствует? Это то, что дает сервер.
Я понимаю, что сервер не хочет использовать float для индекса. Об этом написано в документации.
Можно ли как-то обмануть?
24 ноя 13, 00:57    [15180505]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
HResult
Member

Откуда:
Сообщений: 132
Самое обидное, что это целое число. Просто в структуре под него забито Numeric.
24 ноя 13, 01:00    [15180510]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
sdet
Member

Откуда:
Сообщений: 463
HResult
Самое обидное, что это целое число. Просто в структуре под него забито Numeric.

Думаю, без изменения типа данных вряд-ли получится
24 ноя 13, 01:03    [15180520]     Ответить | Цитировать Сообщить модератору
 Re: Indexed View MS SQL  [new]
HResult
Member

Откуда:
Сообщений: 132
sdet
HResult
Самое обидное, что это целое число. Просто в структуре под него забито Numeric.

Думаю, без изменения типа данных вряд-ли получится

У меня тоже такое мнение сложилось. Я табличку сделал - летает, а если выполнять View как есть - ноут уходит в астрал, а потом в синий экран и теряет SSD. Много пишет, видимо.
У заказчика сервер с 16 процессорами и памяти немеряно, но стремно как-то.
Спасибо за помощь.
24 ноя 13, 01:13    [15180554]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить