[筆記]SQL Server 取得強制執行密碼逾期帳號列表

將SQL 帳號設成強制執行密碼逾期通知時,需要在時間到期前更新密碼,否則應用程式會。。。。。。GG

聽到同事和客戶的對話,因為SQL帳號密碼逾期,導致Web出錯,的確,誰會記得SQL帳號要不要改密碼了呀.....

我金魚腦。。。記不得太久的事。。。哈。。。所以查了一下如何取得即將逾期的帳號,把它取出來。。。

可以將資料搭配郵件寄送通知運用,當然啦。。。這裡只筆記如何查出列表囉

有了帳號和即將逾期天數,IT人員即可拿來運用,看是要排個Mail通知或者寫張報表跑(報表沒去跑。。。當然一樣時間到了停用才想到。。。。)

即將逾期天數如果是0,表示帳號已逾期了。。。GG了

Create Procedure CheckExpriaton
	/*======================================================
	建立人員:打雜妹
	建立日期:2019-01-24
	撰寫原因:找出SQL帳號密碼即將逾期天數列表
	exec CheckExpriaton
	*/
as
begin
		
		Declare @Login varchar(100)
		Declare @expiration sql_variant
		Declare @Check int
		Declare @DuyDays    int   --覺得幾天前要通知就設這吧....咱們預設個7天

		set @DuyDays=7     --找出七天內將逾期的帳號


		if object_id('tempdb.dbo.#tblexpiration') is not null  
			drop table #tblexpiration

		Create table #tblexpiration
		(
			
			AccountName varchar(100) --SQL 帳號
			,Expiration int --即將逾期天數
		
		)
		
		--=================================
		-- 查詢設定密碼逾期的登入帳號
		--取得有設密碼到期的
		DECLARE myCursor CURSOR FOR	
			SELECT name 
				FROM sys.sql_logins
				WHERE (type = 's') AND (is_expiration_checked = 1) 
		OPEN myCursor
		FETCH NEXT FROM myCursor  INTO @Login
		WHILE @@FETCH_STATUS = 0
		BEGIN
			
			
			SELECT @expiration=LOGINPROPERTY(@Login, 'DaysUntilExpiration') 

			insert #tblexpiration 
				Select @Login,Convert(int,@expiration)
			FETCH NEXT FROM myCursor  INTO @Login
		end;
		
		CLOSE myCursor
		DEALLOCATE myCursor
		
		select *
			 from #tblexpiration 
				where Expiration<@DuyDays

		if object_id('tempdb.dbo.#tblexpiration') is not null  
			drop table #tblexpiration


end;

 

打雜打久了,就變成打雜妹

程式寫久了,就變成老乞丐