2016年3月25日 星期五

[Error] System.Net.Mail.SmtpException: 信箱名稱錯誤。 伺服器回應為: 5.7.1 Reject due to authentication failure of

 

對方提供smtp時遇到發送email三個問題 :

2016-03-25_163917

原因 :  因為之前帳號跟信箱是同一組,這次帳號跟信箱分開,所以報此錯誤

 

2016-03-25_163853

原因 : 過往我們帳號跟信箱往往是一樣,這次遇到的狀況是帳號跟信箱不同,所以以下要做調整

client.Credentials = new NetworkCredential(emailAccount, emailPassword);
MailMessage mail = new MailMessage();
mail.From = new MailAddress(smailEmail);
 
 
2016-03-25_161920
//client.EnableSsl = true;
 

2016年3月23日 星期三

[SQL] sql分頁


分頁sql參考

1.sqlserver 2012 以上-使用offset fetch next  (只是之前在百萬筆資料時,讀取最後頁面此法慢慢的QQ)
                        WITH K AS                           
                       (
                            SELECT {0}
                         FROM Data t
                            where t.IsPublish = 1 
                         {4}
                         ORDER BY {0} {1}
                         OFFSET ({2} - 1) * {3} ROWS FETCH NEXT {3} ROWS ONLY 
                        )
                        SELECT c.[ID]
                        FROM dbo.Data AS c
                        INNER JOIN K ON c.{0} = K.{0}
                        ORDER BY c.{0} {1};
2. 之前使用的 ROW_NUMBER()
                       select *
                        from (
                         SELECT
                          t.ID,
                          ROW_NUMBER() OVER ( ORDER BY  t.{0} {1} ) RN
                         FROM Data t
                         where t.IsPublish = 1 
                         {4} 
                        ) data
                        WHERE RN BETWEEN {2} AND {3} ORDER BY RN";

2016年3月16日 星期三

[NPOI] .Net 匯出到 Excel 利用 NPOI 變更字體尺寸及樣式

 

資料來源http://www.ez2o.com/Blog/Post/csharp-Excel-NPOI-Font-Style

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("工作表名稱");

HSSFRow Row = (HSSFRow)sheet.CreateRow(0);

Row.CreateCell(0).SetCellValue("測試文字");

HSSFCellStyle cs = (HSSFCellStyle)workbook.CreateCellStyle();

//啟動多行文字

cs.WrapText = true;

//文字置中

cs.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;

cs.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;

//框線樣式及顏色

cs.BorderBottom = NPOI.SS.UserModel.BorderStyle.DOUBLE;

cs.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;

cs.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;

cs.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;

cs.BottomBorderColor = NPOI.HSSF.Util.HSSFColor.GREY_50_PERCENT.index;

cs.LeftBorderColor = NPOI.HSSF.Util.HSSFColor.GREY_50_PERCENT.index;

cs.RightBorderColor = NPOI.HSSF.Util.HSSFColor.GREY_50_PERCENT.index;

cs.TopBorderColor = NPOI.HSSF.Util.HSSFColor.GREY_50_PERCENT.index;

//背景顏色

cs.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.GREY_25_PERCENT.index;

cs.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;

HSSFFont font1 = (HSSFFont)workbook.CreateFont();

//字體顏色

font1.Color = NPOI.HSSF.Util.HSSFColor.DARK_BLUE.index;

//字體粗體

font1.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD;

//字體尺寸

font1.FontHeightInPoints = 25;

cs.SetFont(font1);

Row.GetCell(0).CellStyle = cs;

[SQL] 使用者 'sa' 登入失敗。原因: 帳戶已停用。

 

2016-03-16_153201

 

請確認sa 這個帳號是否有啟用

2016-03-16_153452

2016年3月15日 星期二

[SQL] 遇到百萬筆資料搜尋太慢怎麼辦? 加入索引(Index)

 

最近遇到資料庫主Table有快兩百萬筆資料,然後join的資料表也是百萬級,我使用EF6來做資料查詢,結果一個查詢要5~8秒,實在是不符合需求阿!!

所以最好的改善方式就是加索引,先來看下面的圖

2016-03-15_114910

使用熱鍵ctrl + l 叫出執行計畫,SQLServer2014 很貼心會幫我們分析一句sql,我們可以看出哪邊的會花較多的成本,並建議我們加入索引(圖上綠色部分),真的很貼心。

 

依照建議加入索引後,再執行一次如下圖

2016-03-15_114933

有沒有發現,他的查詢成本變0%,同理我們在把大部分需要查詢的欄位以及常join的FK加入索引,就能很明顯的改善的查詢效能囉。

 

現在我的查詢速度又回到500ms以下,真是太令人開心了。

 

整理一下重點 :

  • 常用join table, 記得幫FK加入index
  • 常搜尋的欄位也記得加入index
  • 注意索引是需要維護的,如果常常會CUD,要記得定期維護!

2016年3月14日 星期一

[SQL] 重灌sql server 2014 遇到資料庫無法還原

 

用很久的sql server 2008r2 終於功成身退,換成sql2014 (其實是被逼的)

然後備份2008的db ,並刪除2008 安裝2014,再還原時發生錯誤!!

 

2016-03-14_131223

 

答案 :

其實最原始的錯誤好像不是上圖的錯誤,這是重製版QQ,內容比較像是說xxxx無法存取,

所以我就發現舊的DATA資料夾內還有原本DB檔案,必須把他移除才能重新還原成功

2016-03-14_131124

提供參考

2016年3月7日 星期一

[MVC] Global 建立排程


如果有定期需要發信或是備份等排程工作,可以開新專案用 WindowService來做,除此之外,這裡用一個偷懶的方式,就是直接在global的Application_Start加入timer 做排程,更進階的排程framework可以參考 ASP.NET 程式中的背景工作 (3) - 使用 Quartz.NET
 
以下展示簡易的方法 :