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

Откуда:
Сообщений: 30
У меня в таблице MS SQL Server получилась копия строки, то есть две строки стали одинаковыми после случайного нажатия клавиш. Теперь не могу удалить ни первую, ни вторую строку, ни обе вместе, и изменить не могу ни первую, ни вторую, ни обе вместе. Что сделать, подскажите, пожалуйста?
11 сен 14, 10:46    [16562763]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21251
Почему не могёшь-то? рука не поднимается? ну так соберись с духом и сделай. Или попроси кого менее впечатлительного...
11 сен 14, 10:49    [16562770]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
refqso8h
Member

Откуда:
Сообщений: 30
Я имею ввиду не удаляется, сколько не пробовал!
11 сен 14, 10:50    [16562773]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
Glory
Member

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

И как вы пробовали ?
11 сен 14, 10:51    [16562776]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
refqso8h
Member

Откуда:
Сообщений: 30
Удалением напрямую при изменении строк в таблице.
Можно ещё попробовать через T-SQL, но думаю выдаст ошибку, потому что эти строки стали как связанные и при удалении постоянно ошибка.
11 сен 14, 10:54    [16562781]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
refqso8h
Удалением напрямую при изменении строк в таблице.

Силой мысли ? Или какие то кнопочки где-то нажимаете ?

refqso8h
Можно ещё попробовать через T-SQL, но думаю выдаст ошибку,

Вы круты. Еще не попробовали, но уже знаете результат
11 сен 14, 10:55    [16562785]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
invm
Member

Откуда: Москва
Сообщений: 9842
refqso8h
потому что эти строки стали как связанные
Таблица у вас без ПК.
11 сен 14, 11:11    [16562843]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
refqso8h
Member

Откуда:
Сообщений: 30
Glory
refqso8h
Удалением напрямую при изменении строк в таблице.

Силой мысли ? Или какие то кнопочки где-то нажимаете ?

refqso8h
Можно ещё попробовать через T-SQL, но думаю выдаст ошибку,

Вы круты. Еще не попробовали, но уже знаете результат


Не нужно, думаю, поясничать, это некрасивое поведение. Конечно выделял строку и удалял через контекстное меню.
11 сен 14, 11:20    [16562877]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
refqso8h
Не нужно, думаю, поясничать, это некрасивое поведение.

А вы думаете красиво, чтобы все за вас придумали, что и где вы делаете ?
Или вы считаете, что из фразы "Господи ! Я не могу ее удалить" сразу все понятно ?

refqso8h
Конечно выделял строку и удалял через контекстное меню.

В Нотепаде ?
11 сен 14, 11:22    [16562886]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
refqso8h
Можно ещё попробовать через T-SQL, но думаю выдаст ошибку, потому что эти строки стали как связанные и при удалении постоянно ошибка.


Зря так думаете, если у Вас нет каких-то хитрых констрейнтов - нормально удалится.
Удалить обе строки cразу - элементарно, удалить только одну - чуть похитрее, но тоже не big deal.
11 сен 14, 11:38    [16562956]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
refqso8h,

Первичный ключ
DELETE (Transact-SQL)
11 сен 14, 22:57    [16566230]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
o-o
Guest
invm
refqso8h
потому что эти строки стали как связанные
Таблица у вас без ПК.

ему об этом уже писали, студия же поэтому и не выполняет
(картинка в доказательство)
просто вкус устриц следует обсуждать с теми, кто их ел.

refqso8h, сто раз бы уже попробовали "через T-SQL".
в моем примере на выбор:

delete from dbo.t1
where id = 1

либо
delete from dbo.t1
where val = 2


>>>Не нужно, думаю, поясничать, это некрасивое поведение. Конечно выделял строку и удалял через контекстное меню.
это вам "конечно".
ни один из присутствующих до такого изврата не додумался бы, поэтому людям и непонятно, какие проблемы с удалением.

К сообщению приложен файл. Размер - 23Kb
12 сен 14, 01:29    [16566511]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
refqso8h
Member

Откуда:
Сообщений: 30
o-o
invm
пропущено...
Таблица у вас без ПК.

ему об этом уже писали, студия же поэтому и не выполняет
(картинка в доказательство)
просто вкус устриц следует обсуждать с теми, кто их ел.

refqso8h, сто раз бы уже попробовали "через T-SQL".
в моем примере на выбор:

delete from dbo.t1
where id = 1

либо
delete from dbo.t1
where val = 2


>>>Не нужно, думаю, поясничать, это некрасивое поведение. Конечно выделял строку и удалял через контекстное меню.
это вам "конечно".
ни один из присутствующих до такого изврата не додумался бы, поэтому людям и непонятно, какие проблемы с удалением.


Спасибо, всё получилось.
12 сен 14, 05:44    [16566582]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
ZaloJNik
Member

Откуда:
Сообщений: 50
Добрый день товарищи. Заинтересовал один момент, в msdn написано про операцию delete (By default, a DELETE statement always acquires an exclusive (X) lock on the table it modifies, and holds that lock until the transaction completes), значит я ничего выбрать с таблицы не могу во время удаления(если хинты не использовать), но по факту, если индекс есть, то все прекрасно выбирается, кроме значения которое удаляется. Подскажи пожалуйста как это понимать?
23 сен 14, 13:53    [16610216]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
ZaloJNik
Подскажи пожалуйста как это понимать?

Смотреть, где и какие есть блокировки. И что в действительности использует ваш запрос для выборки. Может он только индекс и использует.
23 сен 14, 13:58    [16610244]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
ZaloJNik
Member

Откуда:
Сообщений: 50
Причем запись "Locking behavior" в msdn присутствует только для версий MSSQL2012 и 2014
23 сен 14, 13:58    [16610250]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
ZaloJNik
Добрый день товарищи. Заинтересовал один момент, в msdn написано про операцию delete (By default, a DELETE statement always acquires an exclusive (X) lock on the table it modifies, and holds that lock until the transaction completes), значит я ничего выбрать с таблицы не могу во время удаления(если хинты не использовать), но по факту, если индекс есть, то все прекрасно выбирается, кроме значения которое удаляется. Подскажи пожалуйста как это понимать?


А что у вас вызвало удивление?
Если индекс покрывает ваш запрос, почему он не должен выполняться?
Посмотрите блокировки, которые накладывает команда delete и план запроса с select, думаю вопросы отпадут сами собой.
23 сен 14, 14:03    [16610286]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
ZaloJNik
Member

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

Так меня собственно удивляет почему в msdn написано про монопольную блокировку при удалении.
23 сен 14, 14:06    [16610313]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
ZaloJNik
Так меня собственно удивляет почему в msdn написано про монопольную блокировку при удалении.

А что, вы установили, что никакой монопольной блокировки таблицы нет ?
Приведите репро
23 сен 14, 14:18    [16610399]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
ZaloJNik
Member

Откуда:
Сообщений: 50
Glory
ZaloJNik
Подскажи пожалуйста как это понимать?

Смотреть, где и какие есть блокировки.


Посмотрел, транзакция с delete в моем случае использует X блокировку по ключу, а не по всей таблице, как написано в msdn.
23 сен 14, 14:19    [16610406]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
ZaloJNik
WarAnt,

Так меня собственно удивляет почему в msdn написано про монопольную блокировку при удалении.


а дальше msdn читать не пробовали?
When rows are deleted from a heap the Database Engine may use row or page locking for the operation. As a result, the pages made empty by the delete operation remain allocated to the heap. When empty pages are not deallocated, the associated space cannot be reused by other objects in the database.
23 сен 14, 15:53    [16611123]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
ZaloJNik
Member

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

Ok, но у таблице есть кластерный индекс.
23 сен 14, 16:01    [16611170]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ZaloJNik
Ok, но у таблице есть кластерный индекс.

еееее..аааа...прикольна.. и что у етих 2 строк значения его совпадають?
23 сен 14, 16:02    [16611180]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
ZaloJNik
WarAnt,

Ok, но у таблице есть кластерный индекс.


Может уже начнете выкладывать данные и тесты?
23 сен 14, 16:03    [16611185]     Ответить | Цитировать Сообщить модератору
 Re: Удаление строки в таблице  [new]
ZaloJNik
Member

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

значение чего совпадают?
23 сен 14, 16:04    [16611187]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить