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

Откуда: Тернопіль, Україна
Сообщений: 2102
Доброго времени суток!

Имеется: MSSQL 2012
есть хранимка для удаления юзера:
ALTER PROCEDURE [dbo].[DropLogin] @username varchar(50)
AS
BEGIN
	declare @n varchar(10)=char(13);

	-- disconect login
	DECLARE @dbname varchar(30), @spid varchar(10), @start datetime
	SELECT @start = current_timestamp , @dbname = DB_NAME()
	-- Timeout after 5 mts
	while(exists(Select * FROM sysprocesses WHERE dbid = db_id(@dbname) and loginame=@username) AND
	 datediff(mi, @start, current_timestamp) < 5)
		begin
		 DECLARE spids CURSOR FOR
		  SELECT convert(varchar, spid) FROM sysprocesses
		   WHERE dbid = db_id(@dbname)
		 OPEN spids
		 while(1=1)
		 BEGIN
		  FETCH spids INTO @spid
		  IF @@fetch_status < 0 BREAK
		  exec('kill ' + @spid)
		 END
		 DEALLOCATE spids
	END
	
	-- delete aditional data
	delete 
	from options
	where [slogin]=@username;

	delete 
	from options_sovetperms
	where [name]=@username;

	-- drop login and user

	DECLARE @SQL VARCHAR(4000);
	SET @SQL = 'drop login ['+@username+']'+@n+
				--'go'+@n+
				'drop user ['+@username+']';
	EXECUTE(@SQL);

END


проблема в том что дропать нужно даже если пользователь залогинился, тоесть треубется делать его дисконект, иначе нельзя дропнуть юзера

процедура работает норм. дисконектит и дропает юзера, но почемуто полую ошибку:
автор
Сообщение 6104, уровень 16, состояние 1, строка 1
Невозможно использовать KILL для завершения собственного процесса.


прошу помочь найти и исправить ошибку

П.С. может кто подскажет а почему в 2012 нету профайлера, ставил ентерпрайз версию, а профайлера нету 0_о...

Спасибо!
27 июл 12, 14:49    [12925806]     Ответить | Цитировать Сообщить модератору
 Re: drop login + disconect  [new]
bacalavr
Member

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

SELECT convert(varchar, spid) FROM sysprocesses
WHERE dbid = db_id(@dbname)
and loginame=@username
27 июл 12, 14:51    [12925818]     Ответить | Цитировать Сообщить модератору
 Re: drop login + disconect  [new]
MMM_Corp
Member

Откуда: Тернопіль, Україна
Сообщений: 2102
вот это я слепой... тищу извинений за беспокойство, не досмотрел)
27 июл 12, 14:55    [12925853]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить