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

Откуда:
Сообщений: 158
Здравствуйте

Есть проблема с checkpoint на БД. Есть 1С, которая работает с SQL 2008. При обновлении конфы нужно было войти монопольно, но 1С проверяет подключения к базе через запрос Select COUNT(*) from master..sysprocesses where dbid=db_id('MyDB'), а на базе в это время висит checkpoint и 1С не может войти. Checkpoint висит как системный процесс и не удаляется. Подскажите, как можно избавиться от этого процесса? Пробовал детач/атач базе, не помогает, после присоединения базы, опять та же хрень.
3 июн 09, 12:56    [7260225]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Попробуйте запустить сервер в монопольном режиме.
3 июн 09, 12:59    [7260246]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
DeoniS
Member

Откуда:
Сообщений: 158
Вообще-то не очень хотелось бы перезапускать сервер, т.к. очень много работает пользователей с другими БД. Как-нибудь можно по другому победить эту штуку?
3 июн 09, 13:02    [7260261]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Покажите результат:

SELECT DB_NAME(database_id) FROM sys.dm_exec_requests WHERE command = 'CHECKPOINT'
3 июн 09, 13:06    [7260283]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
DeoniS
Member

Откуда:
Сообщений: 158
pkarklin
Покажите результат:

SELECT DB_NAME(database_id) FROM sys.dm_exec_requests WHERE command = 'CHECKPOINT'


Вернул MyDB
3 июн 09, 13:11    [7260314]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
SELECT DB_NAME(database_id), status FROM sys.dm_exec_requests WHERE command LIKE 'CHECKPOINT%'
3 июн 09, 13:14    [7260334]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
DeoniS
Member

Откуда:
Сообщений: 158
pkarklin
SELECT DB_NAME(database_id), status FROM sys.dm_exec_requests WHERE command LIKE 'CHECKPOINT%'


MyDB background
3 июн 09, 13:30    [7260431]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
DeoniS
pkarklin
SELECT DB_NAME(database_id), status FROM sys.dm_exec_requests WHERE command LIKE 'CHECKPOINT%'


MyDB background


При этом database_id <> 1?
3 июн 09, 13:44    [7260484]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
DeoniS
Member

Откуда:
Сообщений: 158
pkarklin
DeoniS
pkarklin
SELECT DB_NAME(database_id), status FROM sys.dm_exec_requests WHERE command LIKE 'CHECKPOINT%'


MyDB background


При этом database_id <> 1?


db_id=8
3 июн 09, 14:07    [7260583]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
RMih
Member

Откуда: Москва
Сообщений: 161
Решил аналогичную проблему путем переключения процесса CHECKPOINT в tempdb
SET NOCOUNT ON

CREATE TABLE #T(
	TestKey int NOT NULL PRIMARY KEY
	,TestData nvarchar(100) NOT NULL
)

DECLARE @i int
SET @i = 1

WHILE @i <= 10000
BEGIN
	INSERT #T VALUES(@i, N'ABCDEFGHJKLMNOPQRSTUVWXYZ_abcdefghjklmnopqrstuvwxyz')
	SET @i = @i + 1
END

GO
CHECKPOINT

GO

DROP TABLE #T
CHECKPOINT

После этого текущей базой чекпоинта становится tempdb, а исходную базу можно переводить в Single User Mode.

P.S. Если не поможет, увеличить число 10000 до 100000
11 июн 09, 10:06    [7288597]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с checkpoint  [new]
RMih
Member

Откуда: Москва
Сообщений: 161
Определить где сейчас чекпоинт, и что он делает, можно следующим запросом, аналогичным запросу уважаемого pkarklin
SELECT Queries.session_id, Queries.command, DBs.name AS DBName, Queries.wait_type
FROM sys.dm_exec_requests AS Queries
LEFT OUTER JOIN sys.databases AS DBs ON DBs.database_id = Queries.database_id
WHERE Queries.command = 'CHECKPOINT'
11 июн 09, 10:12    [7288637]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить