2014年6月16日 星期一
2014年6月12日 星期四
[Sql][Error] 無法解析 equal to 作業中 Latin1_General_CI_AI 與 Chinese_Taiwan_Stroke_CI_AS 之間的定序衝突
Q : 無法解析 equal to 作業中 Latin1_General_CI_AI 與 Chinese_Taiwan_Stroke_CI_AS 之間的定序衝突
A:
0.google得知,可能是資料庫有升級產生版本差異,但是網頁中只有特定一頁有問題,所以聚焦在那頁的SQL語句
1. 觀察錯誤頁面裡面資訊....會找到是哪一個page出問題...最後發現在某個uc_control 預存程序內。
2.觀察預存程序的SQL ,有開暫存的table,這在網路上有看到相似問題,因為資料庫tempdb定序與當下定序不同。
3.參考此網站 -> 將temptable 後面加上 COLLATE database_default
ex.
4.更新後,即解決定序不同的問題
A:
0.google得知,可能是資料庫有升級產生版本差異,但是網頁中只有特定一頁有問題,所以聚焦在那頁的SQL語句
1. 觀察錯誤頁面裡面資訊....會找到是哪一個page出問題...最後發現在某個uc_control 預存程序內。
2.觀察預存程序的SQL ,有開暫存的table,這在網路上有看到相似問題,因為資料庫tempdb定序與當下定序不同。
3.參考此網站 -> 將temptable 後面加上 COLLATE database_default
ex.
- CREATE TABLE #TmpCategory ( [ContentId] CHAR(36) COLLATE database_default)
- CREATE CLUSTERED INDEX CIX_#TmpCategory ON #TmpCategory([ContentId] ASC)
4.更新後,即解決定序不同的問題
2014年6月11日 星期三
[Sql] trigger 簽到資料表練習~ after 與 instead of 差別
Q: after 與 instead of 的差別
A: 顧名思義,after 會先把資料insert到資料表,然後在去判斷trigger裡面的邏輯
instead of 則是執行的sql會先暫存,然後執行trigger,並依trigger 的sql去寫入。
我的狀況是一個簽到狀況,當使用者是第一次簽到,則增加積分,如果使用instead of的話,我還要額外再寫一次insert into到簽到的資料表,這也會衍生其他問題,例如之後有新增簽到欄位,這邊也要跟著改。
所以這邊使用after(請看SQL第三行)較好。
A: 顧名思義,after 會先把資料insert到資料表,然後在去判斷trigger裡面的邏輯
instead of 則是執行的sql會先暫存,然後執行trigger,並依trigger 的sql去寫入。
我的狀況是一個簽到狀況,當使用者是第一次簽到,則增加積分,如果使用instead of的話,我還要額外再寫一次insert into到簽到的資料表,這也會衍生其他問題,例如之後有新增簽到欄位,這邊也要跟著改。
所以這邊使用after(請看SQL第三行)較好。
- CREATE TRIGGER Tri_Demo
- ON Gps_SignIn
- AFTER INSERT
- AS
- BEGIN
- IF (SELECT COUNT(g.account)
- FROM Gps_SignIn g
- INNER JOIN INSERTED i ON i.OID = g.OID AND g.account = i.account
- ) <= 1
- BEGIN
- --新增簽到分數
- INSERT INTO Bonus (ContentId,Account,TYPE,CreateTime,Bonus)
- SELECT '', i.account, 1, GETDATE(), 999
- FROM INSERTED i
- END
- END
2014年6月3日 星期二
[C#] 用Gmail Stmp 發送信件
- private void button1_Click(object sender, EventArgs e)
- {
- MailMessage mail = new MailMessage();
- NetworkCredential cred = new NetworkCredential("帳號@tech.com.tw", "密碼");
- //收件者
- mail.To.Add("mess@gmail.com");
- mail.Subject = "subject";
- //寄件者
- mail.From = new System.Net.Mail.MailAddress("mess@gmail.com");
- mail.IsBodyHtml = true;
- mail.Body = "message";
- //設定SMTP
- SmtpClient smtp = new SmtpClient("smtp.gmail.com");
- smtp.UseDefaultCredentials = false;
- smtp.EnableSsl = true;
- smtp.Credentials = cred;
- smtp.Port = 587;
- //送出Mail
- smtp.Send(mail);
- }
訂閱:
文章 (Atom)