SQL Server 2000,一個資料表上要建立索引時,出現以下訊息,
不得在一個資料表上建立超過 249 個非叢集索引或資料行統計資料
Cannot create more than 249 nonclustered indices or column statistics on one table.
先查看索引數,當然不可能有249個,所以查詢了統計資訊。
select 'drop statistics '+object_name(a.id)+'.'+a.name
from sysindexes a inner join .sysindexkeys b
on a.id = b.id and a.indid = b.indid inner join syscolumns c
on b.id = c.id and b.colid = c.colid
where indexproperty(a.id, a.name, 'IsStatistics') = 1
and object_name(a.id) = 'your_table'
先確認是否已有249個統計值,如果有,就先刪除不要的,再建一次index應該就行了。
2016年11月8日 星期二
2016年10月20日 星期四
JSON回傳內容含backslash
同事提供一段使用C# MVC 寫的JSON回傳
return Json(JsonConvert.SerializeObject(new { status = "SUCCESS", message = "資料傳送成功" }), "text/html", JsonRequestBehavior.AllowGet);
結果回傳
"{\"status\":\"SUCCESS\",\"message\":\"資料傳送成功\"}"
他問說可否不要反鈄線 及前後的雙引號,要像這樣
{"status":"SUCCESS","message":"資料傳送成功"}
查了一下,原來是JsonConvert.SerializeObject造成的,改用物件傳入就可以解決了。
改成以下這樣,就OK了
var data = new { status = "SUCCESS", message = "資料傳送成功" };
return Json(data, "application/json", JsonRequestBehavior.AllowGet);
記錄一下....
return Json(JsonConvert.SerializeObject(new { status = "SUCCESS", message = "資料傳送成功" }), "text/html", JsonRequestBehavior.AllowGet);
結果回傳
"{\"status\":\"SUCCESS\",\"message\":\"資料傳送成功\"}"
他問說可否不要反鈄線 及前後的雙引號,要像這樣
{"status":"SUCCESS","message":"資料傳送成功"}
查了一下,原來是JsonConvert.SerializeObject造成的,改用物件傳入就可以解決了。
改成以下這樣,就OK了
var data = new { status = "SUCCESS", message = "資料傳送成功" };
return Json(data, "application/json", JsonRequestBehavior.AllowGet);
記錄一下....
2016年9月23日 星期五
IE IFRAME 遺失SESSION問題
在一個ASP開發的網站,以IFRAME方式顯示另一個網站的MVC WEBSITE功能。
結果在部份機器的IE瀏覽器上,會有SESSION遺失的問題。但在FIREFOX或GOOGLE CHROME上則不會有問題。
找了很久,突然想到在之前舊的WEB FORM網站,在頁面Page_Load事件會加入一段程式碼
HttpContext.Current.Response.AddHeader("p3p", "CP=""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT""")
於是在新網站,Global.asax.cs檔加入以下事件及程式碼
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
}
解決問題了.
結果在部份機器的IE瀏覽器上,會有SESSION遺失的問題。但在FIREFOX或GOOGLE CHROME上則不會有問題。
找了很久,突然想到在之前舊的WEB FORM網站,在頁面Page_Load事件會加入一段程式碼
HttpContext.Current.Response.AddHeader("p3p", "CP=""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT""")
於是在新網站,Global.asax.cs檔加入以下事件及程式碼
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
}
解決問題了.
2016年8月22日 星期一
2016年7月7日 星期四
bcp 轉出uft-8 檔案
sql server 2014前的版本的bcp 不支援匯出utf-8格式。
但sql server 2016的bcp則已有支援,以下是MSDN上的說明
13 版之前的版本 (SQL Server 2016) 不支援字碼頁 65001 (UTF-8 編碼)。 開頭為 13 的版本可以將 UTF-8 編碼匯入舊版的 SQL Server。
測了一下,DB仍是用SQL 2014,然後去下載sql 2016的odbc driver 13及command line utilities 13,可轉出UTF-8格式資料。
Microsoft® ODBC Driver 13 (Preview) for SQL Server® – Windows
Microsoft® Command Line Utilities 13 for SQL Server®
安裝後,使用C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\下的bcp 來進行資料轉出,如不確定bcp版本,可執行
bcp -v
最後指定code page完成UFT-8檔的轉出囉.
"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\bcp" "exec zspTest 123" queryout "c:\temp\test.csv" -cC65001 -T -StestServer
但sql server 2016的bcp則已有支援,以下是MSDN上的說明
13 版之前的版本 (SQL Server 2016) 不支援字碼頁 65001 (UTF-8 編碼)。 開頭為 13 的版本可以將 UTF-8 編碼匯入舊版的 SQL Server。
測了一下,DB仍是用SQL 2014,然後去下載sql 2016的odbc driver 13及command line utilities 13,可轉出UTF-8格式資料。
Microsoft® ODBC Driver 13 (Preview) for SQL Server® – Windows
Microsoft® Command Line Utilities 13 for SQL Server®
安裝後,使用C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\下的bcp 來進行資料轉出,如不確定bcp版本,可執行
bcp -v
最後指定code page完成UFT-8檔的轉出囉.
"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\bcp" "exec zspTest 123" queryout "c:\temp\test.csv" -cC65001 -T -StestServer
2016年7月2日 星期六
informix Routine (equal) can not be resolved
使用TSQL慣了,再來寫其他資料庫的SQL時都覺得好痛苦。
尤其是寫INFORMIX的STORED PROCEDURE,更是覺得自已的效率好低。
因為不習慣在VI下編輯(足以證明我年紀還沒老到那個TERMINAL MODE的年代...),所以通常都是用NOTEPAD++寫好,再貼到VI下執行dbaccess(其實是VI不太會用啦...)
今天寫了一個漏漏長的SP,執行後一直有個錯誤
informix Routine (equal) can not be resolved
搞啥啊,找了半天根本也沒有一個叫equal的函數,用debug file方式下trace,才發現原來有一段SQL做了二個欄位的比較,回傳boolean的型態,結果我用了數值0/1來判斷造成的錯誤。(應該要用 variablename = 'T' 或 variablename = 'F'來判斷)
這訊息也太不直覺了吧。
每次寫完一個SP,都有點昏的感覺。
尤其是寫INFORMIX的STORED PROCEDURE,更是覺得自已的效率好低。
因為不習慣在VI下編輯(足以證明我年紀還沒老到那個TERMINAL MODE的年代...),所以通常都是用NOTEPAD++寫好,再貼到VI下執行dbaccess(其實是VI不太會用啦...)
今天寫了一個漏漏長的SP,執行後一直有個錯誤
informix Routine (equal) can not be resolved
搞啥啊,找了半天根本也沒有一個叫equal的函數,用debug file方式下trace,才發現原來有一段SQL做了二個欄位的比較,回傳boolean的型態,結果我用了數值0/1來判斷造成的錯誤。(應該要用 variablename = 'T' 或 variablename = 'F'來判斷)
這訊息也太不直覺了吧。
每次寫完一個SP,都有點昏的感覺。
2016年5月20日 星期五
ASP.MVC dropdownlistfor selected not binding
使用ViewBag方式進行前端VIEW的下拉選單binding。
其中有個欄位的下拉選單一直無法顯示正確的值。
測了半個小時,看到這一篇,才猛然想到....這個問題以前同事講過啊....
http://stackoverflow.com/questions/2278056/dropdownlistfor-not-selecting-value
總之ViewBag的名稱不要取得和欄位名稱一樣,MVC會發瘋的。
其中有個欄位的下拉選單一直無法顯示正確的值。
測了半個小時,看到這一篇,才猛然想到....這個問題以前同事講過啊....
http://stackoverflow.com/questions/2278056/dropdownlistfor-not-selecting-value
總之ViewBag的名稱不要取得和欄位名稱一樣,MVC會發瘋的。
訂閱:
文章 (Atom)
pdf.js 無法顯示部份字
有個檔案在pdf viewer套件中無法顯示內容,但下載檔案後使用工具又可以正常顯示。 本來以為是套件版本太舊的原因,於是去下載pdf viewer套件 https://github.com/mozilla/pdf.js 更新後還是一樣。 覺得應是字型缺漏的問題,於是用PDF-X...
-
上網找了免費的白箱檢測工具,找到了 puma scan 因為支援OWASP TOP 10的檢測,所以這是一個符合客戶需求又能與Visual studio結合的工具(白話說...交差了事矣....) 更重要的是這不用錢....檢測工具都貴森森的,尤其是源碼檢測工具。 ht...
-
建了一個工作排程,定時執行batch檔。 batch中寫了一段xcopy,主要針對有異動較新檔案時才複製。 echo off for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find...
-
改用SQL Server Management Studio 2017有一段時間了。 在執行一段之前寫的SQL要組出一段語法時,里頭包含了使用CHAR(10)當作換行符號的文字,在輸出結果中,使用複製貼上的方式要進行執行時,發現換行符號都失效了。 但如果使用Results...