powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скинуть логин
5 сообщений из 5, страница 1 из 1
Скинуть логин
    #39858295
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток

1. Есть процедура которая обновляет данные в таблицах
2. Есть пользователь под логином (ttt) который работает с таблицами через MS access
3. Сервер Microsoft SQL Server 2008 (SP4) - 10.0.6241.0 (X64) Apr 17 2015 10:56:08 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)

При обновлении данных в базе иногда происходит лок таблиц этим пользователем. Мне нужен код, который будет скидывать все соединения пользователя ttt из базы перез запуском обновлений.

Помогите пожалуйста с таким запросом
...
Рейтинг: 0 / 0
Скинуть логин
    #39858308
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alter database ... set restricted_user with rollback immediate
Ну и сисадмина/овнера отобрать у пользователя предварительно.
...
Рейтинг: 0 / 0
Скинуть логин
    #39858317
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,
что-то боязно мне так делать

http://qaru.site/questions/25463/how-do-you-kill-all-current-connections-to-a-sql-server-2005-database
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
USE master
GO

SET NOCOUNT ON
DECLARE @DBName varchar(50)
DECLARE @spidstr varchar(8000)
DECLARE @ConnKilled smallint
SET @ConnKilled=0
SET @spidstr = ''

Set @DBName = 'DB_NAME'
IF db_id(@DBName) < 4
BEGIN
PRINT 'Connections to system databases cannot be killed'
RETURN
END
SELECT @spidstr=coalesce(@spidstr,',' )+'kill '+convert(varchar, spid)+ '; '
FROM master..sysprocesses WHERE dbid=db_id(@DBName)

IF LEN(@spidstr) > 0
BEGIN
EXEC(@spidstr)
SELECT @ConnKilled = COUNT(1)
FROM master..sysprocesses WHERE dbid=db_id(@DBName)
END

Можно так? что скажете?
...
Рейтинг: 0 / 0
Скинуть логин
    #39858321
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandistМожно так? что скажете?

А если юзер переподключится после прибивания сессии и снова заблокирует таблицы - что делать будете?

restricted_user - это опция, предназначенная для ограничения прав пользователей на время регламентных работ (типа обновлений).
...
Рейтинг: 0 / 0
Скинуть логин
    #39858508
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,

Мой вариант реализации, для поиска зависших сессий от определенного логина.
Запускалось по зашедуленному джобу - надо подумать, как и чем вам лучше этот код запускать перед своим процессом, но сам код рабочий и функциональный

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
DECLARE @Session_ID varchar(1000), @SQLCMD nvarchar(4000);

DECLARE Sessions_Cursor CURSOR READ_ONLY FOR 
--##################################################
SELECT DISTINCT 
sp.spid AS 'Session_ID'
FROM sysprocesses AS sp
WHERE sp.loginame = '%INSERT_YOUR_LOGIN_NAME%'
AND DATEDIFF(HOUR, sp.last_batch, GETDATE()) >= 2 --поиск зависших сессий, вариант если сессия работала больше 2х часов. Можно убрать всю эту строку в WHERE
--##################################################

OPEN Sessions_Cursor
FETCH NEXT FROM Sessions_Cursor INTO @Session_ID
WHILE @@FETCH_STATUS = 0
BEGIN
	SET @SQLCMD = 'KILL ' + @Session_ID
	
	PRINT @SQLCMD -- закомментировать опционально - только отображает
	--EXEC sp_executesql @SQLCMD -- раскомментировать для выполнения
	
FETCH NEXT FROM Sessions_Cursor INTO @Session_ID
END

CLOSE Sessions_Cursor
DEALLOCATE Sessions_Cursor
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скинуть логин
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]