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

Откуда: Сидней
Сообщений: 1149
Собственно сабж.
/* буду признателен за ссылки */
Спасибо.
23 окт 03, 18:05    [390672]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос: может ли вьюха рекомплиться и если да, то в каких случаях?  [new]
Сергей Тихонов
Member

Откуда: Киев
Сообщений: 787
Выдержка из BOL:
When a view is created, the name of the view is stored in the sysobjects table. Information about the columns defined in a view is added to the syscolumns table, and information about the view dependencies is added to the sysdepends table. In addition, the text of the CREATE VIEW statement is added to the syscomments table. This is similar to a stored procedure; when a view is executed for the first time, only its query tree is stored in the procedure cache. Each time a view is accessed, its execution plan is recompiled.
23 окт 03, 23:03    [390942]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос: может ли вьюха рекомплиться и если да, то в каких случаях?  [new]
Сергей Тихонов
Member

Откуда: Киев
Сообщений: 787
А вот еще:

Recompiling Execution Plans
Certain changes in a database can cause an execution plan to be either inefficient or invalid, given the new state of the database. SQL Server detects the changes that invalidate an execution plan, and marks the plan as invalid. A new plan must then be recompiled for the next connection that executes the query. The conditions that cause a plan to be invalidated include:

1. Any structural changes made to a table or view referenced by the query (ALTER TABLE and ALTER VIEW).
2. New distribution statistics generated either explicitly from a statement such as UPDATE STATISTICS or automatically.
3. Dropping an index used by the execution plan.
4. An explicit call to sp_recompile.
5. Large numbers of changes to keys (generated by INSERT or DELETE statements from other users that modify a table referenced by the query).
6. For tables with triggers, if the number of rows in the inserted or deleted tables grows significantly.
23 окт 03, 23:10    [390943]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос: может ли вьюха рекомплиться и если да, то в каких случаях?  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1149
автор писал:

1. Any structural changes made to a table or view referenced by the query (ALTER TABLE and ALTER VIEW).


- А может ли рекомпиляция (для таких случаев) быть каким-либо образом отключена? (вьюха после изменения таблицы не возвращает результатов)
24 окт 03, 10:15    [391243]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос: может ли вьюха рекомплиться и если да, то в каких случаях?  [new]
Gavr107
Member

Откуда:
Сообщений: 26
У нас в гетерогенной системе приходится refresh-ить вьювы, чтобы при изменении состава полей в таблицах, на которые есть ссылка во вьювах,
эти вьювы продолжали корректно возвращать записи.
Для того, чтобы обновить метаданные для вьюва можно воспользоваться процедурой sp_refreshview @ObjName. Эту процедуру лучше вызывать сразу после того, когда в рабочем проекте изменена структура одной или нескольких таблиц. В некоторых случаях можно повесить на job следующую процедуру:

CREATE PROCEDURE sp_RefreshViews
AS
DECLARE @ObjName SYSNAME

DECLARE UserObj_Cursor CURSOR FOR
SELECT [Name]
FROM sysobjects
WHERE xtype = 'V' And (uid=1)

OPEN UserObj_Cursor

FETCH NEXT FROM UserObj_Cursor INTO @ObjName

WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_refreshview @ObjName
FETCH NEXT FROM UserObj_Cursor INTO @ObjName
END

CLOSE UserObj_Cursor
DEALLOCATE UserObj_Cursor
24 окт 03, 10:50    [391310]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос: может ли вьюха рекомплиться и если да, то в каких случаях?  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1149
И все-таки, принципиальный вопрос: есть MS SQL 2000 ENT + sp3 на Win 2000 Adv + sp4, может ли в нем (при изменинии структуры таблицы) быть отключена рекомпиляция вьюх?
Существует ли такой флажок/кнопка?
24 окт 03, 16:16    [392188]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос: может ли вьюха рекомплиться и если да, то в каких случаях?  [new]
oh
Guest
2 Roust_m

И все-таки, принципиальный вопрос: есть MS SQL 2000 ENT + sp3 на Win 2000 Adv + sp4, может ли в нем (при изменинии структуры таблицы) быть отключена рекомпиляция вьюх?
Существует ли такой флажок/кнопка?


Тебе штоб выключить ?
Или понять что такое возможно ?

Если второе, то поставь во вьюхе select *
24 окт 03, 16:35    [392255]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос: может ли вьюха рекомплиться и если да, то в каких случаях?  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1149
автор писал:

Тебе штоб выключить ?
Или понять что такое возможно ?


Мне, чтобы понять где возможно включить/выключить, где этот флажок...
24 окт 03, 17:06    [392345]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить