2018年11月5日 星期一

[tenable] Terminal Services Doesn't Use Network Level Authentication (NLA) Only

前言
因為某家客戶掃了tenable的弱點掃描,紀錄一下處理方法



Terminal Services Doesn't Use Network Level Authentication (NLA) Only
終端服務不僅使用網絡級別身份驗證(NLA)



檔案總管>本機>空白處右鍵>內容>遠端設定
開啟系統內容>遠端
遠端桌面選項選擇"允許遠端連線到此電腦"
勾選"僅允許來自執行含有網路層級驗證之遠端桌面的電腦進行連線"

[tenable] SMB Signing not required

前言
因為某家客戶掃了tenable的弱點掃描,紀錄一下處理方法



SMB Signing not required(不需要SMB簽名)



執行>gpedit.msc
開啟"本機群組原則編輯器"

電腦設定>Windows設定>安全性設定>本機原則>安全性選項
Microsoft 網路伺服器:數位簽章伺服器的通訊(自動) 啟用

2018年8月1日 星期三

[SQL] 備份檔刪除 多資料夾執行

前言

因為同時有多個資料庫備份檔分別放在不同資料夾
設定清除工作一直找不到一個好的設定方式(沒辦法同時搜尋多個資料夾)
所以我點進去檢視T-SQL發現了這段指令

EXECUTE master.dbo.xp_delete_file
0 --刪除備份檔案
,N'D:\SQLBak' --檢查路徑
,N'bak' --副檔名(千萬不可以打.bak,會刪不掉)
,N'2018-07-30T10:33:57'--早於這個時間點
,0--是否含子資料夾刪除,不打預設為0

用法

將指令做成一份設定好各個路徑的指令,再使用執行T-SQL陳述式執行

declare @Date Datetime =GetDate()-5
EXECUTE master.dbo.xp_delete_file 0,N'D:\SQLBak\AA',N'bak',@Date
EXECUTE master.dbo.xp_delete_file 0,N'D:\SQLBak\BB',N'bak',@Date
EXECUTE master.dbo.xp_delete_file 0,N'D:\SQLBak\CC',N'bak',@Date
EXECUTE master.dbo.xp_delete_file 0,N'D:\SQLBak\DD',N'bak',@Date

2018年7月11日 星期三

[SQL] FETCH 應用

前言

在一個匯入中想取得流水號並且逐筆加一的情況下
單純使用Insert 時取得的流水號皆為同一組
原因為SQL執行一批資料時取得的最大值皆會是同一個
意思就是進行一批資料的Insert時並不是一筆一筆進入資料庫的
update 同理
所以來試試FETCH吧~


用法

Declare @SN int
DECLARE PDAgreeSN CURSOR FOR --建立FETCH、取得Key值
select SN from aa_Bee2

OPEN PDAgreeSN;--開啟FETCH
FETCH NEXT FROM PDAgreeSN --塞入第一筆數值
INTO @SN;
WHILE @@FETCH_STATUS = 0 --FETCH成功則繼續
BEGIN
--取到SN了想幹嘛就幹嘛
update aa_Bee2 set PDAgreeSN=dbo.GetPDSN(30030,GETDATE()) --取流水號的某個FN
where SN=@SN

FETCH NEXT FROM PDAgreeSN --塞入下筆數值
INTO  @SN;
END
CLOSE PDAgreeSN; --關閉FETCH
DEALLOCATE PDAgreeSN; --刪除FETCH

2018年7月8日 星期日

[CMD] 取得日期

前言

某客戶要求我所有的換版指令只能使用bat檔執行
簡單來說他想要一鍵執行換版
在現場執行時我原本以為我指令寫得很完美了
結果沒想到因為產生資料夾時使用%Date%參數
在對方Server的日期排列跟我電腦不同
YYYY-MM-DD>MM-DD-YYYY
之類的所以正常用%date:~0,4%
很容易抓歪,或著抓到空白造成產檔問題
造成產生檔名時有空白,無法順利執行指令

正文

運用%Date% 與%Time%
取代掉不符合檔名原則之字元

//指令
set dt=%Date%_%Time%

set dt=%dt: =%
set dt=%dt:/=%
set dt=%dt::=%
set dt=%dt:.=%

echo %dt%

//產出
set dt=2020/04/25 週六_15:45:17.27
set dt=2020/04/25週六_15:45:17.27
set dt=20200425週六_15:45:17.27
set dt=20200425週六_154517.27
set dt=20200425週六_15451727
echo 20200425週六_15451727

2018年5月28日 星期一

[SQL] 使用者群組或角色在XXX的目前資料庫中已經存在



exec sp_change_users_login 'Update_One','XXX','XXX'

詳解sp_change_users_login參數
https://docs.microsoft.com/zh-tw/sql/relational-databases/system-stored-procedures/sp-change-users-login-transact-sql?view=sql-server-2017

查詢被遺棄的使用者
SELECT dp.type_desc, dp.SID, dp.name AS user_name 
FROM sys.database_principals AS dp 
LEFT JOIN sys.server_principals AS sp 
    ON dp.SID = sp.SID 
WHERE sp.SID IS NULL 
    AND authentication_type_desc = 'INSTANCE'; 



[SQL] Agent XPs 無法建立維護計畫

在新增維護計畫時遇到此訊息


Agent XPs 元件已經由此伺服器的安全性組態關閉




sp_configure 'show advanced options', 1;  GO  RECONFIGURE;  GO  sp_configure 'Agent XPs', 1;  GO  RECONFIGURE  GO


執行後出現以下訊息代表成功開啟

組態選項 'show advanced options' 從 0 變更為 1。請執行 RECONFIGURE 陳述式來安裝。


組態選項 'Agent XPs' 從 0 變更為 1。請執行 RECONFIGURE 陳述式來安裝。


參考文獻>

https://docs.microsoft.com/zh-tw/sql/database-engine/configure-windows/agent-xps-server-configuration-option?view=sql-server-2017



再來還會遇到這個問題

SQLServerAgent 目前不在執行中,因此無法通知它這個動作。 (Microsoft SQL Server, 錯誤: 22022)



開始 → 系統管理工具 → 服務 → SQL Agent啟動