Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
SangYong Member [скрыт] Откуда: Сообщений: 659 |
вот так по ключу доступ к записи все норм:update dbo.tbl_AllOrdersToSattelites set [Send] = 1 where id = 301287 вот по не индексированному полю зависает и при просмотре блокировок появляется блок, запрос сам не умирает - приходится его отменять апдейт не проходит - хотя таже запись верхним запросом апдейтится норм update dbo.tbl_AllOrdersToSattelites set [Send] = 1 where idZ = 6014 селект тоже норм: select * from dbo.tbl_AllOrdersToSattelites where idZ = 6415 если линкнутся из MSA (линковка по ключу) , то руками можно единицы проставлять как хочешь, фильтры и сортировки по idZ тоже норм - блокировок нет все таблицы крутятся несколько лет - вот седня позвонили и я не смог понять в чем дело - может кто что посоветует...пока перевел в ручной режим простановку признака |
25 окт 18, 17:11 [21715125] Ответить | Цитировать Сообщить модератору |
SangYong Member [скрыт] Откуда: Сообщений: 659 |
триггеров на таблице не висит... |
25 окт 18, 17:13 [21715130] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11568 |
в индекс по idZ добавьте INCLUDE(Send) |
25 окт 18, 17:23 [21715147] Ответить | Цитировать Сообщить модератору |
SangYong Member [скрыт] Откуда: Сообщений: 659 |
это приведет к блокировке таблицы ? народ пока еще пашет... |
25 окт 18, 17:31 [21715150] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11568 |
индекс нужно перестроить, используйте окно обслуживания своей базы. но сначала проанализируйте актуальные планы выполнения ваших запросов, возможно проблема не в этом |
25 окт 18, 17:33 [21715152] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
И смотрите какая сессия блокирует ваш update. |
||
25 окт 18, 17:37 [21715158] Ответить | Цитировать Сообщить модератору |
SangYong Member [скрыт] Откуда: Сообщений: 659 |
нет блокировок пока костыль поставил: update dbo.tbl_AllOrdersToSattelites set idZ_Sended = 1 where id in (Select id from dbo.tbl_AllOrdersToSattelites where idZ = 6415) криво но отрабатывает... |
25 окт 18, 17:51 [21715180] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31784 |
|
||
25 окт 18, 18:53 [21715257] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
|
||
25 окт 18, 18:59 [21715262] Ответить | Цитировать Сообщить модератору |
Владимир Затуливетер Member Откуда: Сообщений: 427 |
Разберитесь с локом, какой-то апдейт видимо держит одну из записей таблицы. Ну и индекс по полю idZ не помешает. create index IDX_tbl_AllOrdersToSattelites_idZ on dbo.tbl_AllOrdersToSattelites ( idZ ) with (online = on) Можно в онлайне, не блокируя пользователей, если редакция сервера позволяет. |
25 окт 18, 19:57 [21715335] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
|
||
25 окт 18, 20:00 [21715341] Ответить | Цитировать Сообщить модератору |
SangYong Member [скрыт] Откуда: Сообщений: 659 |
Чекдб не делал - я про нее сначала почитаю :) . Повторюсь - из MSAccess я могу редактировать именно эту запись (равно как и другие) - проблем нет. Но MSA по ключу к ней линкуется. По ключу и у меня все редактируется. Не редактируется по полю, не состоящему в индексах. А костыль нормально отдупляется. Ну были бы там триггеры - я бы их перебрал насчет ошибок... Наличие блокировок и активных процессов проверяю: SELECT sess.[login_name], sess.[host_name], qs.start_time, sess.last_request_start_time, object_schema_name(st.objectid, st.dbid) + '.' + object_name(st.objectid, st.dbid) AS [Procedure], CASE WHEN qs.sql_handle IS NULL THEN ' ' ELSE (substring(st.text, (qs.statement_start_offset + 2) / 2, (CASE WHEN qs.statement_end_offset = - 1 THEN len(CONVERT(nvarchar(MAX), st.text)) * 2 ELSE qs.statement_end_offset END - qs.statement_start_offset) / 2)) END AS query_text, sess.cpu_time, qs.logical_reads, qs.writes, sess.session_id, CASE WHEN qs.wait_type = 'CXPACKET' AND qs.blocking_session_id = 0 THEN cp.[blocked] ELSE qs.blocking_session_id END AS blocking_id, isnull(NULLIF (qs.wait_resource, ''), cp.[waitresource]) AS waitresource, qs.wait_time, qs.wait_type, CONVERT(xml, pl.query_plan) _plan, rgwg.[name] FROM sys.dm_exec_sessions sess /* To get blocking info for parallel queries*/ OUTER apply (SELECT TOP 1 blocked, esp.waitresource FROM master.dbo.sysprocesses esp WHERE esp.spid = sess.session_id AND esp.blocked > 0 AND esp.blocked <> esp.spid) cp INNER JOIN sys.dm_exec_requests qs ON qs.session_id = sess.session_id AND qs.[wait_type] NOT IN ('BROKER_RECEIVE_WAITFOR', 'BROKER_TASK_STOP') LEFT JOIN sys.dm_exec_procedure_stats ps ON ps.sql_handle = qs.sql_handle AND ps.[plan_handle] = qs.[plan_handle] OUTER apply master.sys.dm_exec_sql_text(qs.sql_handle) st OUTER apply sys.dm_exec_text_query_plan(qs.plan_handle, qs.statement_start_offset, qs.statement_end_offset) pl INNER JOIN sys.resource_governor_workload_groups AS rgwg ON rgwg.[group_id] = sess.[group_id] WHERE (sess.[host_name] IS NOT NULL ) пока сам в дизориентации...всем спсб |
25 окт 18, 22:05 [21715432] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |