星期二, 5月 28, 2013

IIS 7.5 URL Rewrite設定

在網址列傳值一直都是一個很危險的事情,如果可以把這部分隱藏起來就可以安全很多,在開週會的時候剛好有同事提到 URL Rewrite 的功能,剛好引起我的興趣了,於是就開始動手改自己電腦的環境進行測試。

先到這裡下載 IIS 的元件
http://www.iis.net/downloads/microsoft/url-rewrite

提供了不少語言的版本,安裝完成後,在 Internet Information Services (IIS) 管理員就可以看到多一個設定出來
點選後就可以開始新增規則了,
選擇新增空白規則

然後設定一下內容


在測試模式中可以先測試,就可以知道重寫 URL 中的變數要用哪一個了,這邊只需要最後一個斜線後的資訊,使用的是 {R:2}

這樣只要在網址列輸入 localhost/Product/Test123
然後在 IIS 真正執行的是 localhost/Product.aspx?PdtNo=Test123

這樣也可以把網頁的資訊隱藏起來,只要在 IIS 設定,程式都不需要修改,太方便了。

星期四, 1月 17, 2013

取得各個Table的列數等資料

最討厭的事情發生了,正式環境的資料庫版本比我們在使用的開發及測試環境還高,這時候就累人了,當要把正式環境的資料備份到測試環境時,又是一個浩大的工程,Google 後發現,降級還原是所有人的惡夢呀,產生 Script 之後來導入資料,SQL 檔都超過 1G,SSMS根本就開不起來,最後我決定只針對新增的資料進行匯入就好,於是需要下列這一段了,找出各個 Table 的列數後,我只需要比對後針對有新增的資料進行直接進行匯入即可,修改的資料就不管它了,哈哈~~~~

SET NOCOUNT ON 

--http://msdn.microsoft.com/zh-tw/library/ms188414.aspx
--更新目前資料庫中之所有物件的頁面及 (或) 資料列計數
DBCC UPDATEUSAGE(0) 

-- DB size.
EXEC sp_spaceused

-- Table row counts and sizes.
CREATE TABLE #t 
( 
    [name] NVARCHAR(128),
    [rows] CHAR(11),
    reserved VARCHAR(18), 
    data VARCHAR(18), 
    index_size VARCHAR(18),
    unused VARCHAR(18)
) 
 
--把每個Table使用的資訊存到#t之中
INSERT #t EXEC sys.sp_MSforeachtable 'EXEC sp_spaceused ''?''' 

--依使用空間較大的依序排列並顯示MB
SELECT *
, LTRIM(STR(CAST(LEFT(reserved,LEN(reserved)-3) AS NUMERIC(18,0)) / 1024, 18)) + 'MB' 
AS reservedSize_M
, LTRIM(STR(CAST(LEFT(data,LEN(data)-3) AS NUMERIC(18,0)) / 1024, 18)) + 'MB' 
AS dataSize_M
, LTRIM(STR(CAST(LEFT(index_size,LEN(index_size)-3) AS NUMERIC(18,0)) / 1024, 18)) + 'MB' 
AS indexSize_M
FROM #t
ORDER BY CAST(LEFT(data,LEN(data)-3) AS NUMERIC(18,0)) DESC

-- 顯示總共筆數及總共使用資訊
SELECT SUM(CAST([rows] AS int)) AS [rows]
, LTRIM(STR(SUM(CAST(LEFT(reserved,LEN(reserved)-3) AS NUMERIC(18,0))) / 1024, 18)) + 'MB' 
AS sumOfreservedSize_M
, LTRIM(STR(SUM(CAST(LEFT(data,LEN(data)-3) AS NUMERIC(18,0))) / 1024, 18)) + 'MB' 
AS sumOfdataSize_M
, LTRIM(STR(SUM(CAST(LEFT(index_size,LEN(index_size)-3) AS NUMERIC(18,0))) / 1024, 18)) + 'MB' 
AS sumOfindexSize_M
FROM #t
 
DROP TABLE #t 

出處: http://www.dotblogs.com.tw/rainmaker/archive/2012/02/02/67498.aspx

星期五, 1月 11, 2013

看看SQL Server在跑什麼SQL

最近常常發生sp_who2看到一堆連線,有些還在跑,這時候想要把它Kill掉前就一定要檢查一下它在執行什麼了,偏偏sp_who2就只能看到正在跑,看不到執行什麼指令,還好網路上真的是一個很方便的地方,馬上就找到指令了

  1. SELECT      r.scheduler_id as 排程器識別碼,  
  2.             status         as 要求的狀態,  
  3.             r.session_id   as SPID,  
  4.             r.blocking_session_id as BlkBy,  
  5.             substring(  
  6.                 ltrim(q.text),  
  7.                 r.statement_start_offset/2+1,  
  8.                 (CASE  
  9.                  WHEN r.statement_end_offset = -1  
  10.                  THEN LEN(CONVERT(nvarchar(MAX), q.text)) * 2  
  11.                  ELSE r.statement_end_offset  
  12.                  END - r.statement_start_offset)/2)  
  13.                  AS [正在執行的 T-SQL 命令],  
  14.             r.cpu_time      as [CPU Time(ms)],  
  15.             r.start_time    as [開始時間],  
  16.             r.total_elapsed_time as [執行總時間],  
  17.             r.reads              as [讀取數],  
  18.             r.writes             as [寫入數],  
  19.             r.logical_reads      as [邏輯讀取數],  
  20.             -- q.text, /* 完整的 T-SQL 指令碼 */  
  21.             d.name               as [資料庫名稱]  
  22. FROM        sys.dm_exec_requests r   
  23.             CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS q  
  24.             LEFT JOIN sys.databases d ON (r.database_id=d.database_id)  
  25. WHERE       r.session_id > 50 AND r.session_id <> @@SPID  
  26. ORDER BY    r.total_elapsed_time desc  


結果在執行的時後會發生sql_handle錯誤,原來這指令只能在SQL Server 2005以上使用,但是我們的資料庫相容性設定為SQL Server 2000,所以將資料庫相容性設定為SQL Server 2005就可以執行了。

出處: http://blog.miniasp.com/post/2010/10/13/How-to-get-current-executing-statements-in-SQL-Server.aspx

星期三, 1月 09, 2013

找出資料庫中自動編號的欄位名稱與資料表名稱


最近在做資料庫的移轉,因為資料庫中的東綁西綁的,導致無法很簡單的完成,最後只好土法煉鋼,先將結構建立好後,然後用INSERT INTO去把資料轉過去,討厭的是還有很多自動編號的欄位會造成錯誤,這部份就只好特別挑出來處理,首先就要先找出有哪些Table中有自動編號的欄位了
SELECT QUOTENAME(t.TABLE_SCHEMA) + '.' + QUOTENAME(t.TABLE_NAME)  AS TableName,
  c.COLUMN_NAME AS ColumnName,
  c.DATA_TYPE AS 'DataType',
  IDENT_CURRENT(t.TABLE_SCHEMA  + '.' + t.TABLE_NAME) AS CurrentIdentityValue,
  CASE c.DATA_TYPE
   WHEN 'bigint' THEN (IDENT_CURRENT(t.TABLE_SCHEMA  + '.' + t.TABLE_NAME) * 100.) / 9223372036854775807
   WHEN 'int' THEN (IDENT_CURRENT(t.TABLE_SCHEMA  + '.' + t.TABLE_NAME) * 100.) / 2147483647
   WHEN 'smallint' THEN (IDENT_CURRENT(t.TABLE_SCHEMA  + '.' + t.TABLE_NAME) * 100.) / 32767
   WHEN 'tinyint' THEN (IDENT_CURRENT(t.TABLE_SCHEMA  + '.' + t.TABLE_NAME) * 100.) / 255
  END AS 'PercentageUsed'
 FROM INFORMATION_SCHEMA.COLUMNS AS c
  INNER JOIN
  INFORMATION_SCHEMA.TABLES AS t
  ON c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME
 WHERE COLUMNPROPERTY(OBJECT_ID(t.TABLE_SCHEMA + '.' + t.TABLE_NAME), c.COLUMN_NAME, 'isIdentity') = 1
出處:http://wushinetlife.blogspot.tw/2012/03/blog-post_15.html

星期四, 12月 06, 2012

搜尋Stored Procedure內容

最近在整理 Stored Procedure,順便做系統改版的更新,

所以必須要搜尋有哪些地方用到有修改的欄位,

這時候只好請教 Google,找到一個全文搜尋的方法

select name,text
from syscomments a,sys.objects b
where a.id=b.object_id and b.type='P' and text like '%OOXX%'


原址:http://dba.24zz.com/2012/09/sql-store-procedure.html

星期三, 11月 21, 2012

Sensation XE刷機初體驗

手機用了一年,保固過後,馬上就想要刷機了,原廠的ROM真的太多我用不到的軟體了,
我的第一個步驟就是用官方的解鎖S-off
1.先安裝好HTC Sync,如果沒有,到官方網站可以下載
2.然後到www.htcdev.com申請Unlock
這邊就參考狂少大的解說
3.然後就去找一鍵Root的軟體來取得最高權限囉
找到一個TPSparkyRoot只要手機接著電腦,依照操作,重開機三次即可,
記得每次都要等到開機完成才能按任意鍵進行下一次重開機。

輕鬆的S-off之後,當然就準備刷機了,
這邊我先安裝了4EXTRecoveryUpdater.apk

這邊我因為要刷BOA Sensation One V6.2

這邊因為BOA大建議要先WIPE,所以先將Super_Wipe_Sensation.zip跟ROM都先放到SD卡裡面後,

用4EXTRecovery重新開機,選擇Install From SDCard,第一次先選擇Super_Wipe_Sensation.zip

跑完之後,會自動重開機,再進來一次後在選擇BOA Sensation One V6.2.zip

在經過一些安裝的設定選擇之後,就開始安裝了,

裝完後就出現這個畫面,蠻開心,結果過了20分鐘還是一樣,

繼續爬文發現,原來官解還要在刷boot.img,所以從BOA Sensation One V6.2.zip把boot.img抓出來之後,

又去找了一個一鍵刷boot的軟體, HTC官方解鎖的注意了!!超方便的一鍵刷入boot.img!!

然後就可以順利的進入系統了,我的手機又升級了~~

速度變快了,畫面也變漂亮了,HTC Sense也升成了4.1

星期一, 5月 07, 2012

天天富羅

今天中午去老媽老闆開的餐廳用餐,提前慶祝母親節



星期六, 1月 14, 2012

Canon EOS 60D入手

2012年01月14日,不只是總統與立委的投票日,這天也是我失心瘋去把60D帶回家的日子,回家的時候外面還下著雨,所以又有了一個擋雨的塑膠袋
 這家的服務真的還不錯,至少去的這兩次我覺得介紹的還蠻詳細的,而且態度也都蠻好的
盒子來驗明正身,我只買機身,18-135我買不起,年終領太少了,尾牙又沒抽到大獎(哭哭~~~)
 盒子上一堆60D的規格與特色介紹
 這邊說明了有盒子內有什麼東西(當然,我沒有18-135的鏡頭摟)
 打開盒子映入眼簾的就是一堆的說明書、保固卡及光碟片了
 下層就是60D的機身本身加上原廠相機帶、充電企與電池了
 準備揭開面紗了~~~
驗明正身彩虹代理的公司貨右邊有EOS 60D,因為水貨漲價了,公司貨降價了,所以機身的價差剩下一千五百元,所以本來想買水貨的我就換成買公司貨了
 背面的按鈕還是那麼多,我想我要花不少時間來熟悉
 Made In Japan,發現有個小小的貼紙應該是保固標籤吧,應該是用來確認有沒有拆過機身的
機身的左邊就是一些輸出線要接的地方了
 電池跟充電器都是Made In China的啦(好歹電池要MIJ呀><'')
 在店裡面拍了好幾張所以沒電了,所以回家第一件事就是充電摟
 鏡頭也是MIJ的(大心......)
 我的第一顆鏡頭(目前我也只有這一顆鏡頭了,政廷等你借我摟!!!)
 沒有電池,外面又下雨,所以只好放到防潮箱先摟
 這本使用說明書超厚的,我想我應該要看很久吧XD
接下來看到我拿著相機,請讓我拍照吧!!!

星期三, 11月 30, 2011

[ASP.Net]GridView Updated與Deleted事件

習慣用GridView來顯示及處理資料,通常資料也都不是那麼簡單的直接存下來就好,幾乎都會需要一些動作先處理完後才能儲存,如此對於我來說Updated跟Deleted的事件就很重要了。

最近幾乎都不是使用DataSource來當作GridView的DataSource,所以就發現為什麼我寫的程式都不會觸發Updated與Deleted的事件,只好去Google一下了,這時候就發現,原來Updated與Deleted只有在使用DataSource的情況下才會觸發,如果是我自己動態設定從後端連結的資料就不能觸發這兩個事件了,所以就只好改到Updating跟Deleting去處理了,或是自己寫個觸發的方法來完成這個動作也行!

很好用參考

星期日, 11月 20, 2011

Golla手機套

有了昨天不小心手機整個從口袋滑出來正面著地後,我決定馬上去幫他買個家來保護它,之前在看iPad的保護套就有看到這家的設計,可惜他們的iPad攜行袋居多,所以就沒買了,今天在光華晃了晃還是決定晃去他們家看看,就有了這個紙袋跟我回家摟!!!
 低調的設計,應該算是深灰色吧
芬蘭設計中國製造XD
 內附一本敗家指南,告訴你3C商品的配件有哪些牌子可以選擇
 相當的簡單的設計
 驗明正身Golla,我記得白色的圖案不是g是四葉的幸運草
 提把的部份有有個Logo在這裡
  背面就是壓出來的Logo了
 是用黏的,如果是釦子還要擔心壓壞螢幕呢,我不喜歡磁鐵的
 內裡的部份有絨毛的設計,可以幫人擦拭一下螢幕
 入厝摟!!!!
 哎呀,因為設計是前高後低,所以頭會露出一點點
 這就是黑白配了!!!