Size: a a a

2020 April 13

ПЛ

Павел Львов in sql_ninja
Дмитрий texnix 🇨🇳
то есть визуально нельзя будет отличить залогинился ты под Aдминистратор или под Aдминистратор?
Ес
источник

L

Les in sql_ninja
кто в Maven умеет? нужна помощь
источник

YP

Yuryi Prune in sql_ninja
ребят, есть огромная таблица orders на десятки миллионов записей. Пытаюсь выполнить запрос ниже, получаю Sql Error 596 state 1, Cannot continue the execution because the session is in the kill state. В большиснтве тем в гугле ссылаются  на недостаток места на диске при операции или тому подоюное, DBCC CheckDB проблем не находит. Места на диске достаточно, единственное оперативки не так много как хотелось бы.  update orders     set orders.IsInternalDeliveryPaid =     (     CASE     WHEN (    (select COUNT(*)         from payments p         where p.OrderId = orders.Id and p.Note = 'Платеж внутренней доставки') = 2     or       (select COUNT(*)         from transactions t         left join transaction_accounting a ON t.Id = a.[Transaction]         where t.OrderId = orders.Id and a.Type = 4 and Note = 'Платеж внутренней доставки') > 0     )     THEN 2     ELSE 3     END     )     where orders.Status NOT IN (7, 8) and orders.IsInternalDeliveryPaid IS NULL and orders.InternalDeliveryCost > 0  Вопрос: насколько я понимаю, проблема в огроной первоначальной выборке. Если так, то поможет ли разбитие по тайм-периодам, аля обёртывания в конструкцию: DECLARE @date2 date = (select MIN(CreatedDate) from orders); WHILE @date2 <= GETDATE() BEGIN     MY_SELECT_WITH_DATE_PERIOD_AS_CONDITION     SET @date2 = DATEADD(year, 1, @date2);  WAITFOR DELAY '00:00:01.000' END  Ведь в данном случае ордера будут выгребаться в цикле по датам, что уменьшит их количество в одной итерации. Спрашиваю, потому что не уверен как работает скл-сервер и не держит ли он все итерации в памяти в любом случае. Тогда это не имеет смысла.
источник

DI

Dmitriy Ivanov in sql_ninja
Yuryi Prune
ребят, есть огромная таблица orders на десятки миллионов записей. Пытаюсь выполнить запрос ниже, получаю Sql Error 596 state 1, Cannot continue the execution because the session is in the kill state. В большиснтве тем в гугле ссылаются  на недостаток места на диске при операции или тому подоюное, DBCC CheckDB проблем не находит. Места на диске достаточно, единственное оперативки не так много как хотелось бы.  update orders     set orders.IsInternalDeliveryPaid =     (     CASE     WHEN (    (select COUNT(*)         from payments p         where p.OrderId = orders.Id and p.Note = 'Платеж внутренней доставки') = 2     or       (select COUNT(*)         from transactions t         left join transaction_accounting a ON t.Id = a.[Transaction]         where t.OrderId = orders.Id and a.Type = 4 and Note = 'Платеж внутренней доставки') > 0     )     THEN 2     ELSE 3     END     )     where orders.Status NOT IN (7, 8) and orders.IsInternalDeliveryPaid IS NULL and orders.InternalDeliveryCost > 0  Вопрос: насколько я понимаю, проблема в огроной первоначальной выборке. Если так, то поможет ли разбитие по тайм-периодам, аля обёртывания в конструкцию: DECLARE @date2 date = (select MIN(CreatedDate) from orders); WHILE @date2 <= GETDATE() BEGIN     MY_SELECT_WITH_DATE_PERIOD_AS_CONDITION     SET @date2 = DATEADD(year, 1, @date2);  WAITFOR DELAY '00:00:01.000' END  Ведь в данном случае ордера будут выгребаться в цикле по датам, что уменьшит их количество в одной итерации. Спрашиваю, потому что не уверен как работает скл-сервер и не держит ли он все итерации в памяти в любом случае. Тогда это не имеет смысла.
Поможет, если эта проблема связана именно с памятью.
В памяти(buffer pool cache) находятся только оперативные данные и если они не нужны или менеджер памяти запросит место, а оно может быть вытесненно(в случае итерации именно так) то в память будет загружен новый кусок данных.
источник

G

Gopneg in sql_ninja
Yuryi Prune
ребят, есть огромная таблица orders на десятки миллионов записей. Пытаюсь выполнить запрос ниже, получаю Sql Error 596 state 1, Cannot continue the execution because the session is in the kill state. В большиснтве тем в гугле ссылаются  на недостаток места на диске при операции или тому подоюное, DBCC CheckDB проблем не находит. Места на диске достаточно, единственное оперативки не так много как хотелось бы.  update orders     set orders.IsInternalDeliveryPaid =     (     CASE     WHEN (    (select COUNT(*)         from payments p         where p.OrderId = orders.Id and p.Note = 'Платеж внутренней доставки') = 2     or       (select COUNT(*)         from transactions t         left join transaction_accounting a ON t.Id = a.[Transaction]         where t.OrderId = orders.Id and a.Type = 4 and Note = 'Платеж внутренней доставки') > 0     )     THEN 2     ELSE 3     END     )     where orders.Status NOT IN (7, 8) and orders.IsInternalDeliveryPaid IS NULL and orders.InternalDeliveryCost > 0  Вопрос: насколько я понимаю, проблема в огроной первоначальной выборке. Если так, то поможет ли разбитие по тайм-периодам, аля обёртывания в конструкцию: DECLARE @date2 date = (select MIN(CreatedDate) from orders); WHILE @date2 <= GETDATE() BEGIN     MY_SELECT_WITH_DATE_PERIOD_AS_CONDITION     SET @date2 = DATEADD(year, 1, @date2);  WAITFOR DELAY '00:00:01.000' END  Ведь в данном случае ордера будут выгребаться в цикле по датам, что уменьшит их количество в одной итерации. Спрашиваю, потому что не уверен как работает скл-сервер и не держит ли он все итерации в памяти в любом случае. Тогда это не имеет смысла.
попробуй через временную таблицу
источник

K

Kostya in sql_ninja
Коллеги, вопрос такой
онлайн перестройка индекса возможна если меняется порядок его построения, т.к. убирается DESC вот отсюда

CREATE UNIQUE NONCLUSTERED INDEX хххх ON [dbo].[хххх]
(
 [id] DESC
)
источник

MC

Max Chistyakov in sql_ninja
rebuild, если память не изменяет, равнозначно DROP + CREATE
источник

MC

Max Chistyakov in sql_ninja
переопределение индекса равнозначно DROP + CREATE
источник

K

Kostya in sql_ninja
Max Chistyakov
rebuild, если память не изменяет, равнозначно DROP + CREATE
я не смогу сделать ребилд, убрав DESC, верно ?
источник

MC

Max Chistyakov in sql_ninja
Нет. Нет такого синтаксиса, в alter index

Ребилд - то же самое, что Drop index хххх; create index хххх   (id desc), вот и лучше сразу так  делать
источник

AC

Alexey Chaykin in sql_ninja
Можно online with drop_existing
источник

K

Kostya in sql_ninja
Сеньк, коллеги
источник

MC

Max Chistyakov in sql_ninja
а блокировки tempdb под sa - это что-то системное, или какой-то дятел запускал запросы под sa?
источник

AS

Alexey Shumkin in sql_ninja
Les
кто в Maven умеет? нужна помощь
не то, чтобы прям умею ))) но шапочно знаком )
источник

F

FlegmaSpirit in sql_ninja
Max Chistyakov
а блокировки tempdb под sa - это что-то системное, или какой-то дятел запускал запросы под sa?
id процессов посмотреть можешь?
источник

MC

Max Chistyakov in sql_ninja
увы, нет, поймано  в профайлер
источник

F

FlegmaSpirit in sql_ninja
думаю, тогда вряд ли можно узнать
источник
2020 April 14

ЕА

Евгений Артемов in sql_ninja
источник

ЕА

Евгений Артемов in sql_ninja
Крик души, решал на sql-ex задачи, на примерно на 50 утомился, уже хотел забросить, но думаю добью до первого сертификата это  до 63 задачи DML.(как я думал), и 20 задачь по DDL

Оказалось что 63 задачи нужно решить из рейтингового этапа, а я решал из обучающего.

Не попадайтесь на мои ошибки 😔
источник

ЕА

Евгений Артемов in sql_ninja
Сертификат в итоге не получил, но задачи решать научился 💪
источник