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

Откуда: Tashkent, Uzbekistan
Сообщений: 2845
Приветствую форумчан!

В базе есть таблица "Customer" и куча таблиц (где-то 18-20), которые связаны с данной таблицей через ключевое поле "CustomerID" (1-М), так сказать "подчинённые таблицы".
Мне нужно "подправить" одну "подчинённую" таблицу, а если точнее, то удалить одно поле и добавить другое поле с другим типом данных. Пытаясь делать с помощью SSMS, открываю таблицу в режиме конструктора и вношу все изменения. Когда пытаюсь сохранить, то SSMS зависает конкретно и потом сообщает что не может. Ругается так:
- Unable to delete relationship 'FK_XXX_Customer'.
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Нельзя удалить ограничение. См. предыдущие ошибки.

Я так понимаю проблема в том, что в данный момент пользователи работают в БД. Хоть они и не трогают ту "подчинённую" таблицу в этот момент, но зато работают с другими "подчинёнными" таблицами / запросами, которые обращаются к таблице "Customer" и тем самым происходит "блокирование". Я так понимаю, что SSMS пытается пересоздать таблицу удалив старую, в том числе и старую связь.
Что делать и как быть, чтобы постоянно не выгонять всех юзеров и перезагружать сервер?
24 фев 12, 09:34    [12145026]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2845
Да, забыл написать версию сервера.
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) Apr 2 2010 15:53:02 Copyright (c) Microsoft Corporation Express Edition with Advanced Services on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
24 фев 12, 09:39    [12145049]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
Albert Gor
Member

Откуда: Москва
Сообщений: 250
На ALTER TABLE так же ругается?
24 фев 12, 09:53    [12145105]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Попробуйте сделать это не через конструктор, а через sql-запросы типа alter table ... add/alter columnn/drop column ...
24 фев 12, 09:54    [12145111]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2845
Prolog
Попробуйте сделать это не через конструктор, а через sql-запросы типа alter table ... add/alter columnn/drop column ...

Для меня не вариант. У меня Access как клиент, а он не любит "подправленных" таблиц, предпочитают "оригинальных" таблиц, в смысле "неиспорченные" через "alter". Потом у Access'а то там, то тут глюки с такой таблицей начинаются (а отслеживать в каких именно случаях очень и очень трудно).

DROP Table не помогает, проблема та же. Потому что перед удалением видимо сервер пытается удалить связь.

Ну если совсем, совсем безвыходное положение, то придётся решать проблему либо через "ALTER", либо выгнать всех и перезагружать сервер.
Неужели другого варианта нет?
24 фев 12, 10:07    [12145170]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2845
А как то можно всех "отсоединить" от конкретной таблице (Customer), т.е. временно (достаточно несколько секунд) блокировать от пользователей?
Или такое вообще невозможно на сервере?
24 фев 12, 10:10    [12145183]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
alter table в момент модификации заблокирует таблицу и другие пользователи не смогут к ней обращаться
24 фев 12, 10:17    [12145217]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
iljy
Member

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

вы скрипт, который студия генерит, смотрели? Ну и сервер пропатчить не мешает.
24 фев 12, 10:30    [12145291]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2845
Prolog
alter table в момент модификации заблокирует таблицу и другие пользователи не смогут к ней обращаться

Ну я же не могу "alter" применить к "Customer"? Её как раз не надо трогать. А по другому блокировать таблицу никак? :(

iljy
вы скрипт, который студия генерит, смотрели?

Да, смотрел

iljy
Ну и сервер пропатчить не мешает.

Извиняюсь за неграмотность, а что Вы подразумеваете под словом "пропатчить"? Это как? И как это поможет в решении проблемы?
24 фев 12, 10:36    [12145314]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
alter нужно применить к подчинённой таблице
24 фев 12, 10:40    [12145355]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
iljy
Member

Откуда:
Сообщений: 8711
studieren
iljy
вы скрипт, который студия генерит, смотрели?

Да, смотрел

И что увидели? Пытались выполнить по частям? Нашли ошибочную команду, посмотрели блокировки в конце концов?
studieren
iljy
Ну и сервер пропатчить не мешает.

Извиняюсь за неграмотность, а что Вы подразумеваете под словом "пропатчить"? Это как? И как это поможет в решении проблемы?

Сервиспак поставить.
24 фев 12, 11:01    [12145480]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2845
iljy,

Ошибка как раз и возникает на момент удаления связи.
ALTER TABLE dbo.XXX
	DROP CONSTRAINT FK_XXX_Customer
24 фев 12, 11:15    [12145553]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2845
iljy,

Попробовал ради эксперимента удалить связи и у других таблиц. Такая же история.
24 фев 12, 11:17    [12145567]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с изменением таблицы  [new]
iljy
Member

Откуда:
Сообщений: 8711
studieren
iljy,

Ошибка как раз и возникает на момент удаления связи.
ALTER TABLE dbo.XXX
	DROP CONSTRAINT FK_XXX_Customer

И вы посмотрели наложенные на таблицы блокировки?
24 фев 12, 11:23    [12145603]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить