У меня есть простая таблица в MS SQL Server.
CREATE TABLE [dbo].[Personas] (
[Name] varchar(250) NOT NULL,
[ID] varchar(250) NOT NULL,
[IntranetID] varchar(250) NULL,
[eMail] varchar(250) NULL,
[Number] varchar(50) NULL,
[ModifDate] datetime NULL)
ON [PRIMARY];
После усечения и повторной вставки данных в эту таблицу я не могу выполнить простой запрос выбора или простой запрос подсчета. Задачи процесса продолжают работать без остановки. Однако я могу успешно запрашивать другие таблицы, кроме этой.
select * from Personas;
select count(*) from Personas;
Как я могу узнать причину, почему это происходит, и как я могу это исправить? В запросах нет сообщений об ошибках, поэтому я не знаю, в чем заключаются ошибки. Как узнать, повреждена ли таблица?
Я не эксперт в администрировании SQL Server, но я попытался выполнить ниже. Я не уверен, является ли это причиной, и как это исправить, если это так.
DBCC SQLPERF(logspace)
Result:
Log Size (MB) = 19.6
Log Space Used (%) = 78.79
Status = 0
Пожалуйста, помогите. Заранее спасибо.
SELECT @@TRANCOUNT
. Должно быть0
. Если это не так, это может привести к зависанию оператора select на неопределенный срок. - person Tom Chantler   schedule 05.05.2015SELECT session_id,status FROM sys.dm_exec_sessions WHERE open_transaction_count > 0
- person ughai   schedule 05.05.2015@@TRANCOUNT
даст вам, только если в текущем сеансе есть какая-либо открытая транзакция. для блокировки нам нужно будет проверить все сеансы - person ughai   schedule 05.05.2015@@TRANCOUNT
в текущем соединении. - person ughai   schedule 05.05.2015EXEC sp_who2
и найдите значение SPID в столбцеBlkBy
. - person ughai   schedule 05.05.2015