星期三, 6月 05, 2019

SQL Server ERRORLOG 太大


SQL Server 因為硬碟壞掉,造成了ErrorLog 成長速度飛快,直接把 C 槽吃到沒有空間,一路長到21.6 GB,還有一大堆 Dump 檔案就佔了 40 G

 
只好把有問題的 DB 都刪掉或是卸載掉,把 Dump 的紀錄檔都刪除,剩下就是這個肥大的 ERRORLOG 了。

為了不重啟服務,只好用來回收當前的 Log,因為 ERRORLOG 數量最少為 6,所以跑七次後就都清空了。

EXEC sp_cycle_errorlog;



兒子的第一次發燒

兒子在 9/30 打完滿兩個月的預防針五合一、肺炎鏈球菌跟口服輪狀疫苗,當天下午都還好,晚上體溫就開始一路往上飆,直達 38.5 度,嚇的我立刻幫兒子洗一個溫水澡,降降溫,洗完之後有降一些,沒多久要標到 38度 XXDD。

醫生也沒特別說明會發燒還怎麼樣,女兒以前打也都很正常,上網查了一下,很多小孩都是這針發燒的,寶寶手冊上面還寫發燒是罕見,這個罕見發生機率頗高,我問了身邊至少有五成以上都有,又是一個 OOXX。

好在 10/01 早上兒子已將降到 37.5 了,比正常高一點而已,就沒有立刻帶他去看醫生。

結果下午三點多,托嬰中心老師打電話說兒子的耳溫有量到39度,半小時了都在 38.5度之上,我一聽,立刻請假衝回家拿健保卡接兒子去台安掛急診。

在急診室等了一下,還被急診醫生告誡這種情況應該早上有門診的時候就帶給專科醫生檢查,應該只有兩個月大,發燒就是要住 NICU,但目前滿床,小兒科不收小於四個月大的,醫生問我要轉診還是回家觀察,看了看兒子,已經沒那麼燒了,而且食慾還不錯都有把奶喝完,

我就帶著兒子跟退燒藥回家了 (急診醫生總算 開了退燒藥了),兒子整晚暖烘烘的在 37.5度上下徘徊,到了 10/02 早上,燒退了,正常了,在 37度上下。

這次真的很嚇人,好在沒有吃退燒藥自己降下來了。



星期四, 7月 12, 2018

電子發票 Turnkey 軟體憑證更新

軟體憑證到期後,紀錄一下如何變更傳送憑證,前面軟體憑證申請下來之後,
最後會得到一個 PFX 檔,從『系統管理』中的『憑證管理』這邊點選「新增」,
之後將新的憑證加入。


接著在 『系統管理』中的『送方管理』選擇要變更的送方點選「編輯」,在送方憑證選擇新的憑證,接著就會用新的憑證進行上傳了。

最後,還要到電子發票整合服務平台網站上傳軟體憑證,路徑在『營業人功能清單』->『基本資料』->『軟體憑證登錄作業』,選擇剛剛新憑證的 CER 檔案,這邊就會需要主卡的工商憑證來進行驗證,驗證完成後就真的可以上傳成功了。


申請軟體憑證的方法請參考:申請軟體憑證手冊

星期二, 5月 22, 2018

SQL Server MSDB 檔案太大

發現硬碟空間不足,一查之下才知道是 MSDB 用去太多空間了,



根據 微軟的說法 msdb  應該就是我們存放太多紀錄了


查了一下,原來是 SQL Server Agent 的 Job 紀錄從來就沒有刪除過


只好開始刪除

 EXEC msdb.dbo.sp_purge_jobhistory @oldest_date = '20180101';


最後在設定 Agent 的屬性避免再次發生

這次找了一堆的參考,MSDB 跟 TempDB 都換位置了,才有空間可以給 Log 去成長,特別紀錄一下這次參考的網站們。

參考:
MSDB Log File Very Large - In Simple Recovery Mode
How to move the MSDB database
[MSSQL] 好胖的MSDB
一鍵幫你收縮所有DB文檔大小
MSDB数据库太大的问题
介紹 SQL Server 的系統資料庫



星期三, 4月 18, 2018

SQL Server Log 檔損毀

遇到一次硬碟掛掉真的會讓人嚇到吃手手,還好 DATA 跟 LOG 是放在不同資料夾,所以只是有可能有資料遺失,想說先把資料庫卸離之後在移除 LOG 掛載回來,產生新的 LOG 就好。

於是就先轉乘 Emergency Mode,接著卸離,很順利的完成的,

alter database 資料庫名稱 set emergency
go

但事情才沒有想像中的順利,在附加的時候,因為原本的路徑已經不見了,就算我在附加時把 LOG 檔移除,他還是只會產生在原本的路徑,

這麼臨時,去哪生個硬碟來接,還好德瑞克大大才剛寫過一個強制產生 LOG 的介紹
FOR ATTACH_FOURCE_REBUILD_LOG 就可以重建 LOG 檔並指定路徑
CREATE DATABASE [資料庫名稱] ON
(FILENAME = N'F:\SQLData\MSSQL\資料庫名稱_Data.MDF')
FOR ATTACH_FORCE_REBUILD_LOG


參考:
SQLSERVER 資料庫損壞修復-1

[SQL Server] Fix: File activation failure. Msg 1813 Could not open new database. CREATE DATABASE is aborted.

星期四, 3月 22, 2018

Integration Services Access Denied

新安裝一台 SQL Server 2012,當要登入 Integration Services 的時候竟然發生 Access Denied 的情形,無法登入

馬上進廟拜神, Google 之後就得到答案了,把權限設定之後就可以登入了。



星期四, 1月 11, 2018

IIS - FTP 534 Policy requires SSL

在 Windows Server 2012 的 IIS 中設定好新的 FTP 站台,連線的時候卻遇到 534 Policy requires SSL 的錯誤,原來又是預設值搞的鬼,




從 IIS 管理員中 FTP SSL 設定進行調整


將 SSL 原則從 "需要 SSL 連線" 調整到 "允許 SSL 連線" 就可以了。


星期一, 9月 11, 2017

Backup and Sync from Google 無法啟動

Google 最近將 Google Drive 的電腦版改成了 Backup and Sync from Google,結果新電腦安裝後啟動就遇到問題了,明明檔案存在,但是卻讀不到的錯誤,


只好 Google 一下,Visual C++ Redistributable for Visual Studio 沒有安裝,於是我安裝了
for Visual Studio 2008 一樣不能啟動
for Visual Studio 2012 還是不能啟動
最後安裝到  for Visual Studio 2015 ,就可以正常啟動了

https://www.microsoft.com/en-us/download/details.aspx?id=48145


星期四, 7月 13, 2017

VB6.0 專案開啟出現"無法載入mscomctl.ocx"

安裝好新的開發環境後,開啟 VB6 的專案竟然出現"無法載入 mscomctl.ocx" 的錯誤,
奇怪,我連 SP6 都已經安裝了呀,怎麼會有這種錯誤呢?

後來找到了一個 SP6 的安全彙總更新 ( 什麼鬼啦,都到SP6了還有安全問題唷 )


安裝之後就可以順利開啟專案了


參考:http://heryla.tian.yam.com/posts/56195148 

星期二, 6月 27, 2017

SQL Trigger 來紀錄哪些欄位被修改了


SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER TRIGGER [dbo].[TR_TestTable_Modify] on [dbo].[TestTable]

   AFTER UPDATE

AS

BEGIN

  DECLARE @DBTableID int;

  DECLARE @Columnid int;

  DECLARE @ColumnCount int;

  DECLARE @i int;

  DECLARE @ColumnName varchar(20);

  DECLARE @SQL varchar(4000);

  DECLARE @LogTime datetime;

  DECLARE @program nvarchar(200)





  SELECT @DBTableID=id from sysobjects where name='TestTable'

  SELECT @ColumnCount=MAX(column_id) FROM sys.columns WHERE [object_id]=@DBTableID

  SELECT @program=program_name from sys.dm_exec_sessions where session_id=@@SPID



  select * into #inserted from inserted;

  select * into #deleted from deleted;



  SET @i = 0

  SET @LogTime=GETDATE()



  WHILE @i < @ColumnCount

  BEGIN

   SET @i = @i+1



   SELECT @ColumnName=name FROM sys.columns WHERE [object_id]=@DBTableID AND column_id=@i

   SET @SQL = 'INSERT INTO LogTable SELECT a.invno,''‘TestTable'',''' + @ColumnName + ''',a.' + @ColumnName + ',b.'+ @ColumnName + ',''' + convert(varchar(30), @LogTime,121) + ''',''' + @program + ''' FROM #deleted a,#inserted b WHERE a.PK=b.PK AND a.' + @ColumnName + ' <> b.' + @ColumnName

   EXEC (@SQL)

  END



  drop table #inserted;

  drop table #deleted;



END

GO