Forum
Merhabalar,
Bir database'de bir kullanıcıya sınır sürede geçerlilik vermek istiyorum. 1 ay sonra userı silecek veya disable edecek.
Aklıma bir job ile kullanıcıya ait tüm sessionları kill edip, şifresini değiştirmek geliyor ama ne kadar sağlıklı emin olamadım. Fikirlerini almak istedim.
şöyle bir sorgu yazdım. İş görüyor gibi.Fikirlerinizi rica ederim.
DECLARE @Query NVARCHAR(MAX)
DECLARE QueryCursor CURSOR
FOR
SELECT N'KILL '+ CONVERT(VARCHAR(11), session_id) + N';' FROM sys.dm_exec_sessions WHERE login_name = 'Login_Name'
OPEN QueryCursor
FETCH NEXT FROM QueryCursor INTO @Query
WHILE @@FETCH_STATUS = 0
BEGIN
--PRINT @Query
EXEC sp_executesql @Query
FETCH NEXT FROM QueryCursor INTO @Query
END
CLOSE QueryCursor
DEALLOCATE QueryCursor
alter login Login_Name with password = 'Login_Name'
Merhaba,
Sunucunuz domainde ise ve siz kullanıcıları domainden yetkilendiriyorsanız bu işi domain controller üzerinde yapmak daha akıllıca.
Ancak sql server user söz konusu ise disable etmek için processlerini kill etmenize gerek yok. Direk disable edebilirsiniz. Bir SQL Agent job la bu işi otomatize hale getirebilirsiniz.
disable etmek için bu yeterlidir.
USE [master]
GO
DENY CONNECT SQL TO [Login_Name ]
GO
ALTER LOGIN [Login_Name ] DISABLE
GO
ancak aktif olarak oturumu açıksa kullanıcının paylaşmış olduğunuz kod blogu işinizi görecektir. Bir cursorla tüm sessionlarını öldürüp kullanıcıyı silebilirsiniz.
Şifresini değiştirmeniz için açık sessionları kill etmenize gerek yok. Silmek için aşağıdaki değişikliği yapmanız yeterli olacaktır
alter login Login_Name with password = 'Login_Name'
bu kodu
DROP LOGIN [Login_Name ]
Cevabını için teşekkür ederim Can bey,
Sunucu tarafımıza ait değil, sql yönetimini ben yapıyorum sadece. Domain benim tarafımda olsa kullanıcıya expire date verebilirim çok rahatlıkla.