星期三, 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

C# DateTime 相減

每次用到都要去 Google,這次決定把他記下來

當兩個 DateTime 要相加減時就需要用到 TimeSpan

DateTime begDate = DateTime.Now;
TimeSpan ts = DateTime.Now - begDate;
string diff = ts.Minutes.ToString() + "分" + ts.Second.ToString() + "秒";

星期一, 6月 05, 2017

Transaction Log 備份失敗 - 因為沒有目前的資料庫備份

昨天突然 Transaction Log 備份出現了錯誤:因為沒有目前的資料庫備份。 BACKUP LOG 正在異常結束。

只好求助 Google 了,才知道原來是當時的資料庫的復原模式重簡單改成完整之後都沒有進行過完整備份或差異備份,所以 Transaction Log 沒有一個紀錄點,才會有這個錯誤發生。



Reference: https://dotblogs.com.tw/terrychuang/2013/08/28/115722

星期三, 5月 17, 2017

刪除重複的資料

在各分公司資料同步的過程,為了避免資料出問題,都沒有設定 PK,偶而就會造成資料重複傳送的問題,偶而就會需要刪除重複
SELECT DISTINCT * FROM [TableName]
通常我會很搞剛的先放到另一個 Table 去,然後清空資料再到回來

SELECT DISTINCT * INTO [Temp_TableName] FROM [TableName]
DELETE FROM [TableName]
INSERT INTO [TableName] SELECT * FROM [Temp_TableName]
DROP TABLE [Temp_TableName]

就這樣完成!!

星期四, 5月 11, 2017

不登入也能關機,遠端重開機

今天遇到要連到使用者的電腦時候,怎麼連線都是登入後就斷線,只好想辦法重開機看看,可是不能登入怎麼重開機呢?

在 Google 搜尋了一下發現還真的有

先打開命令提示字元,

然後輸入 net use \\PCName /user:loginaccount

接著輸入密碼,就可以登入成功了。

接著就是使用 shutdown 來進行重開機了,

shutdown -m \\\\PCName -f -r -t 10

還真的就成功了。