2013-10-16

調整 Oracle VirtualBox 虛擬硬碟檔(*.vdi)大小

一般新建虛擬硬碟時並不會配置太大的空間,但有時因為測試需要,需較大的硬碟空間安裝軟體,
於Oracle VirtualBox設定值中,無法針對已建立的虛擬硬碟檔調整大小,
需透過指令的方式進行變更

1.開啟命令提示字元
2.將目錄切換至VirtualBox程式安裝路徑
如:cd C:\Program Files\Oracle\VirtualBox
3.使用VBoxManage的modifyhd屬性修改指定路徑的虛擬硬碟vdi檔大小
如:VBoxManage modifyhd D:\vm\winxp.vdi --resize 51200
(複製VDI檔指令 VBoxManage clonevdi D:\winxp.vdi E:\winxp.vdi )
上面指令將存放在D:\下的vdi檔容量修改為50GB

2013-10-09

[敗家]永諾 YN560 II手動閃燈

Nissin Di466 for m43,前幾天順利的出掉了,改入手有窮人閃燈之稱的永諾 YN560 II手動閃燈

為什麼會換掉呢?
1.老實說我也不知道到底是我不會用,還是Di466的TTL不夠準,變成每次我都要手動調整出力
2.Di466不能左右擺頭,當初秉著一見鍾情鬼擋牆狀態還是買了,最後發現還真的不太方便
3.Di466的GN值33,YN560 II可以到58,出力大了不少

後來想想,我當初怎麼狠的下心買了一支快四千的閃燈(白色又比黑色貴),
加上裝在舊愛GF2頭重腳輕,拿出來用的次數實在很少,
便把它丟上拍賣轉賣有緣人,兩年過保固折舊了近一千塊賣掉,再把賣掉的錢拿來買YN560 II還有找,
最近開始覺得,東西真的夠用就好,每次都要用到最好,只會加快自己口袋空空的速度...(淚

開箱啦~

2013-10-07

mscorsvw.exe 佔用CPU導致CPU 100%運行

最近桌機和筆電,不約而同在待機(閒置)時風扇狂轉個不停,把螢幕喚醒後又恢復正常,
今天特地坐在電腦前開啟監控程式,等系統閒置看看到底是什麼東西導致風扇狂轉,
結果真的被我抓到,是mscorsvw.exe莫名其妙一直讓CPU跑到100%,使風扇狂轉,

後來google一下看到下面這篇
Wondering why mscorsvw.exe has high CPU usage? You can speed it up.
說明,主要是對系統中使用.Net Framwork開發的軟體進行優化,以加速系統運行,
這讓我想起,是不是因為最近裝了自然輸入法2013免費版的關係,
所以才會我弟沒這狀況,但我的兩台電腦卻不約而同發生此問題,
將下面的指令貼到命令提示字元中執行即可解決

.Net Framwork 4(含)以後版本
x86
c:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems
x64
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems

.Net Framwork 4以前版本
x86
c:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems
x64
c:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems

2013-10-03

Nexus7 2nd-Nexus Root Toolkit 操作紀錄 (UNLOCK、ROOT、UNROOT、LOCK)

想不到Nexus7要ROOT這麼麻煩,要先UNLOCK後才可以ROOT,
以前都用一鍵ROOT的工具,點一下就直接ROOT了,
這次光驅動就搞了我好久,所以還是記錄一下,免得下次換台電腦又忘了..(記性差

因為參考的文章已經寫得相當詳細了,所以針對幾點自己覺得容易遺漏的再特別說明,其餘的則直接帶過!

2013-09-28

[敗家]2013 New Nexus7 16G wifi (美版) & MYRIANN保護套

又敗家了....(窮...
身為半個果粉的我,想不到也有心動想買的android平版,
android手機不是沒用過,在換iphone前,用的就是android的手機,
說實話,android的手機幾乎都得刷機,也得常常重灌,
不然用久了,效能真的是低落到不行,多少夜晚,我都在刷機中度過(淚...

2013年Nexus7比較吸引我的是有2g ram,老婆現在用的是Sony Xperia ZL也是2g,
閒置時的記憶體空間都還有800~1200 mb不等,整個擺脫我舊有的印象,竟然也可以順暢到不行,
不過也不得不說,在android的架構下,必須靠著強大的硬體效能來支撐作業系統,
反觀iOS到最近剛出的iphone 5s記憶體依舊保持1g,帶給使用者仍然是相當順暢的使用感。

Nexus7螢幕大小為7吋,螢幕大小與重量是比較方便帶出門的,
10吋的iPad2出門背久了其實覺得還蠻重的,
再者,每次出遠門過夜我都還要多背一台筆電,為的就是要將照片作備份,
因為實在不放心好幾天不先備份起來,不然記憶卡掛了,真的會欲哭無淚!
將Nexus7封印的OTG功能解除後,就可直接用讀卡機備份記憶卡,這樣就不需再背台筆電了...(大心

2013-09-25

MS SQL Server 使用sp_send_dbmail 發送查詢結果郵件

使用內建的sp_send_dbmail可以直接將查詢的資料已郵件方式發送出去,
不過這個功能要是MS SQL Server 2005以上版本才有支援!!

DECLARE @separator char(1)=char(9)--設定分隔字元

EXEC msdb.dbo.sp_send_dbmail
 @profile_name='ERP_DB',--Database Mail設定檔名稱
 @recipients='dean@xxx.com', --收件者
 @subject='PACK',--主旨
 @body='測試',--內文
 @query='select Top 5 PackNo,Rem from ERP.dbo.Pack',--Query查詢語法 
 --@file_attachments='C:\test.txt',--附件
 @attach_query_result_as_file=1,--將查詢的結果設為附件
 @body_format=HTML,--使用HTML格式
 @query_attachment_filename='Report.txt',--附件檔名
 @query_result_width=10240,--每行長度 
 @query_no_truncate=1,--避免超過256字元文字被截掉
 @query_result_separator = @separator;--以TAB做區隔字元

還有其他參數可使用,可至MSDN說明文件參考!
參考自:
MSDN-sp_send_dbmail (Transact-SQL)
信德隨想-如何使用SQLServer的db mail發信

2013-09-11

[遊記] 2013 夏 東京蜜月 DAY4 箱根一日遊(順時針)

前輩們通常建議箱根最好排個兩天一夜的時間,
才有充裕的時間好好的玩,不至於走馬看花,
這次八天七夜的行程,因為第一次到東京想要去的地方太多了,
實在騰不出兩天的時間待在箱根,後來發現不少人也是用一日遊的方式前往箱根。

台灣與日本當地的旅行社都有針對箱根推出一日遊的套裝行程,
大多由新宿出發,搭乘專車前往,費用大概都要3500台幣以上,
好處是你不需要花時間研究,有專車載你到幾個有名的景點,
原本我們也是打算利用這種方式前往箱根,
不過因為自己希望行程表有彈性一點,避免遇到雨天還得硬著頭皮去戶外的景點,
再加上自己購買"箱根周遊券-二日券"一個人5000 JPY,
換算下來,跟套裝行程還是有不小差距,所以後來還是決定自己排行程前往。

箱根周遊券,分為2日與3日券,沒有1日券,所以低消就是5000 JPY,
內容含括了一趟往返箱根的基本車資,及箱根地區所有的交通工具,可任意搭乘。

我們採用順時針的方式,主要考量
1.蘆之湖下午有起霧的可能,如果霧濛濛的什麼就都看不清
2.海盜船有班次時間限制,如果前面貪玩行程拖太久,怕後面沒船可搭

最後決定行程
-----------------------------------------------------------------------
新宿-->箱根湯本-->元箱根港-->箱根神社-->桃源台-->大涌谷
-->早雲山-->強羅-->箱根湯本-->小田原城-->新宿
-----------------------------------------------------------------------


上圖箱根交通工具導覽取自箱根導航

2013-09-03

stored procedure IF ELSE SELECT INTO 出現 [訊息2714 層級16] 錯誤訊息

--範例
--建立暫存表
IF UPPER(@ServerNa) = 'SERVAER_A'
BEGIN
 IF (SELECT OBJECT_ID('tempdb..#STUL')) IS NOT NULL DROP TABLE #STUL
 select DISTINCT CorpNo,IONo into #STUL
 from [SERVAER_A].InnovaERP.dbo.SysTableUpdateLog
 where PrgType=@PrgType
END
ELSE IF UPPER(@ServerNa) = 'SERVAER_B'
BEGIN
 IF (SELECT OBJECT_ID('tempdb..#STUL')) IS NOT NULL DROP TABLE #STUL
 select DISTINCT CorpNo,IONo into #STUL
 from [SERVAER_B].InnovaERP.dbo.SysTableUpdateLog
 where PrgType=@PrgType
END
--錯誤訊息
訊息 2714,層級 16,狀態 1,程序 SP_XXX,行 24
資料庫中已經有一個名為 '#STUL' 的物件。
通常在不同的IF ELSE判斷子句中,應該可以視為獨立的事件,
不知為什麼MS SQL在stored procedure中,
使用IF ELSE針對不同的條件SELECT INTO到同樣的表格,會有這樣的錯誤訊息,
只好改寫語法,於判斷式前先將暫存表建立,再於子句中INSERT INTO即可

--建立暫存表
IF (SELECT OBJECT_ID('tempdb..#STUL')) IS NOT NULL DROP TABLE #STUL
SELECT TOP 1 CorpNo,IONo
  INTO #STUL
FROM SysTableUpdateLog

IF UPPER(@ServerNa) = 'SERVAER_A'
BEGIN
 INSERT INTO #STUL
 select DISTINCT CorpNo,IONo
 from [SERVAER_A].InnovaERP.dbo.SysTableUpdateLog
 where PrgType=@PrgType
END
ELSE IF UPPER(@ServerNa) = 'SERVAER_B'
BEGIN
 INSERT INTO #STUL 
 select DISTINCT CorpNo,IONo
 from [SERVAER_B].InnovaERP.dbo.SysTableUpdateLog
 where PrgType=@PrgType
END

2013-08-26

2013-夏-東京蜜月-住宿-[大塚] SUPER HOTEL、[新宿] HUNDRED STAY

拖了好久,再不寫怕細節都忘記了(其實也快忘的差不多了XD),
決定要去東京自助旅行後,除了背包客棧有很多資料可以參考,
更是佩服可以把遊記寫出來分享的人,
所以我也為自己立個目標,希望可以把這次的自助經驗寫下來,
除了為自己留下紀錄,也希望可以供其他人參考,
希望不會寫沒幾篇就放棄了...XD
---廢話結束---

---正文開始---
先從最簡單的旅館分享起,八天七夜共分住兩間旅館,
[大塚]SUPER HOTEL及[新宿]HUNDRED STAY
-----------------------------------------------------
6/3-6/8 SUPER HOTEL-大塚-5晚-32400 JPY
-----------------------------------------------------
某天,常常去日本自助的堂哥跟我說,
他已經幫我訂好了SUPER HOTEL的房間,價格超優惠,
不過只有5晚,平常一晚雙人房大約要8000 JPY左右,
早割方案,5晚32400 JPY,平均下來6480 JPY,
以當時去的匯率0.3計算,一晚台幣不到2000,算是相當便宜的,
對於第一次去日本自助的我原本還擔心這麼便宜,品質方面是不是也相對較差,
事實證明我錯了,到現在我和老婆兩個都還念念不忘,
老婆甚至還說,下次若再去東京一樣要住SUPER HOTEL-大塚...XD
林氏壁有寫了一篇SUPER HOTEL各分店的比較,內容也較詳細,可參考
東京十二家Super Hotel商務旅館交通大評比:上野御徒町=池袋西口>池袋北口>新橋烏森口/大塚(新增淺草分店)

2013-08-21

T-SQL 比較 ROW_NUMBER()、RANK()、DENSE_RANK()、NTILE() 次序函數差異

MS SQL中提供ROW_NUMBER()RANK()DENSE_RANK()NTILE()四個次序函數供資料排序使用
簡單說明如下:
ROW_NUMBER():資料列以流水編排序
RANK():資料列依ORDER BY欄位排名
DENSE_RANK():同RANK(),但不跳號
NTILE():資料列依傳入參數作為分組組數分組排名

tempdb 置於RAMDISK提升速度

現在電腦的記憶體價格已不是高不可攀,
新的電腦隨便也裝個8G的RAM來用用,
一部份還可以切做RAMDISK做暫存檔存取使用,
公司SQL主機已經五年了,雖然還沒有故障的跡象,
不過最近還是請購了一台新的,將舊有的退下來當作備援機,
公司小,很多事情都得自己摸索,調教SQL Server也不例外,
這次更換主機,特地將RAM裝到16G,
主要想要將其中的12G做RMADISK存放tempdb使用,
想要提升IO的速度,不過這樣也僅限於tempdb的部分,
之前Google網路上也沒有太多相關的文章,
所以特別寫了這篇記錄一下安裝過程需注意的部分,

1.RAMDISK格式需為NTFS,使用FAT32 SQL Server會啟動失敗
2.重開機tempdb因存於RAMDISK會被清空重新初始化檔案,不影響使用
3.tempdb數量與CPU核心數一致,4核心即切為4個mdf

目前主機已上線一個月,使用一切正常,
不過建立暫存表的速度提升相當多,將近縮短了一倍的時間!

2013-08-20

Stored Procedure 解密

公司同事可能是怕人笑他寫的太差所以不給看...(誤
所以都將自己寫的stored procedure
使用WITH ENCRYPTION進行加密,
導致休假時根本無法幫他排除問題,
後來參考了RiCo大的文章,
安裝SQL Decryptor直接登入後,即可察看加密過的內容

軟體備份

參考自:RiCo技術農場-[SQL SERVER][Tools] SQL 解密軟體-Free

2013-08-14

SQL Agent 跨伺服器排程作業 'NT AUTHORITY\ANONYMOUS LOGON' 登錄失敗

最近想透過SQL Agent自動執行抓取異地資料庫資料的動作,
在一般SQL編輯器模式下使用指令搭配連結的伺服器執行是沒有問題的,
但是新增到SQL Agent讓排程自動執行,一直出現錯誤訊息:
以下列使用者的身分執行: NT AUTHORITY\SYSTEM。
用戶 'NT AUTHORITY\ANONYMOUS LOGON' 登錄失敗。 [SQLSTATE 28000] (錯誤 18456).  步驟失敗。

2013-08-05

查詢MS SQL Server連線狀況

--列出目前連線的資訊
use master--use master系統資料庫
select c.session_id, c.connect_time,s.login_time, c.client_net_address,
s.login_name,s.status
from sys.dm_exec_connections c left join sys.dm_exec_sessions s
on c.session_id = s.session_id

參考自:
Jeff's Memo-查詢SQL Server目前連線(Connection)狀況
MSDN-sys.dm_exec_connections
MSDN-sys.dm_exec_sessions

2013-07-30

Synology DS213j 安裝 Transmission 下載套件

雖然說DSM內的Download Station也是由Transmission為基礎修改過來的,
不過這幾天用起來老是發生BT下載到一半,套件又當掉的感覺,
必須要時時去注意下載狀況,把套件關閉再重啟以恢復正常,
後來爬文可以自行安裝Transmission這個套件,希望可以解決上述的問題。

2013-07-29

修改Synolog DS213j BT 快取值大小

原廠套件預設的快取大小只有4MB,這對硬碟的存取過於頻繁,
google了一下,發現可以透過指令修改系統設定檔的方式來變更,

1.停用Download Station
2.於控制台-->終端機-->啟用SSH功能
3.下載WinSCP-圖形化方式修改Linux檔案,不需瞭解指令
4.執行WinSCP,檔案協定選擇SCP,帳號為root密碼同admin密碼
5.編輯/var/packages/DownloadStation/scripts/start-stop-status檔案
找出"rm ${PACKAGE_DIR}/etc/download/settings.json"在前面加上#,存檔
6.編輯"/var/packages/DownloadStation/etc/download/settings.json"檔案
找出"cache-size-mb": 4, 修改數值,前輩建議不要超過系統RAM的一半,存檔
7.啟動Download Station

[敗家]Synolog DS213j 入手心得

最近終於購入想了很久的Synolog DS213j
想要換掉Zyxel 210主要的原因,
1.檔案傳輸平均只有10 MB/s,實在太慢了
2.想要換成2Bay的機種作RAID 1
3.可用的套件乏善可陳,還會更新失敗= =

換上DS213j後,除了傳檔可以跑到40-50MB/s
最吸引我的是他豐富的套件,也有搭配iOS、Android的app可使用,
所以原本自己組NAS的念頭也放棄了,
沒有那麼多時間再去研究哪些軟體一個一個安裝。

不過入手兩天來到是發現了一些問題,
1.跟WD綠標1 TB水土不服,格式化後同位元檢查一直出錯,
最後直接顯示資料毀損,無法使用,這叫我多年前誤信店員推薦的綠標何去何從>.<
2.Download Station內的BT下載老是不會動,或者一陣子就當掉需重啟服務,
Google一下,發現這部分似乎問題也不少,目前還在尋找最佳解決方案

PS:
之前網路上也有人提到如果NAS硬體掛的,
硬碟內的資料也救不回來,還挺令人擔心的,
不過後來看到下面這篇,說明如何利用Ununtu將資料救回
How can I recover data from my DiskStation using a PC?
這部分的疑慮也就消除了!

2013-07-27

複製檔案時出現"資料錯誤(檢查多餘的循環)"

複製檔案時出現資料錯誤(檢查多餘的循環)訊息導致無法完成作業,
可按照下述步驟將資料檢查修復,

於命令提示字元中輸入
CHKDSK X: /f /r /x 
X:請依照發生錯誤的磁碟代號替換

2013-07-24

Delphi透過RS232讀取資料-安裝MSComm元件

在Delphi中若欲透過RS232讀取機器發送的數值,
可透過VB的MSComm控制項抓取,
依照下列步驟,可將MSComm安裝於Delphi中,供編寫程式使用。

2013-07-23

MS SQL Server備份計畫

一直以來公司的資料庫都使用T-SQL做完整備份,一天一次,非常耗用空間,
當然這作法是不正確,但是因為一直沒有出事,
所以也讓我一直拖到現在才找時間研究該如何正確備份,
在MS SQL Server中可分為完整備份、差異備份、交易檔備份,
這次規劃將公司的備份變更為
1.每週日凌晨作一次完整備份
2.每日早上6點作一次差異備份
3.每日上班時間每小時作一次交易檔備份

2013-05-04

2013-04-17

判斷資料表中特定欄位是否存在


於MS SQL資料庫中可使用sys.sysobjects查詢資料表是否存在,
sys.columns則可查詢資料表中欄位資訊,
--檢查特定資料表是否存在
select OBJECT_ID('Prod')
--或
select * from sys.sysobjects where id=OBJECT_ID('Prod')
--檢查特定資料表中特定欄位是否存在
select * from sys.syscolumns where id=OBJECT_ID('Prod') and name='ProdNo'
如果是要查詢暫存表中的相關資訊,作法如下
--檢查特定暫存資料表是否存在
select OBJECT_ID('tempdb..#Prod')
--或
select * from tempdb..sysobjects where id=OBJECT_ID('tempdb..#Prod')
--檢查特定暫存資料表中特定欄位是否存在
select * from tempdb..syscolumns where id=OBJECT_ID('tempdb..#Prod') and name='ProdNo'

2013-04-07

變更tempdb存放位置

MS SQL Server無法透過Miscorsoft SQL Server Management Studio
修改伺服器中的tempdb的存放位置,
可以透過下述語法達到變更需求

--查詢tempdb存放位置
USE master
SELECT name,physical_name
FROM sys.master_files
WHERE database_id=DB_ID('tempdb')

--修改tempdb存放位置
USE master;
ALTER DATABASE tempdb
MODIFY FILE (NAME=tempdev,FILENAME='X:\tempdb.mdf');
ALTER DATABASE tempdb
MODIFY FILE (NAME=templog,FILENAME='X:\templog.ldf');

2013-02-13

INSERT EXEC 陳述式不可以是巢狀的

最近編寫stored procedure發生
「INSERT EXEC 陳述式不可以是巢狀的」的錯誤訊息,
主因是因為procedure內使用exec將結果寫入tempdb,
又將procedure回傳的結果又寫入tempdb中,
於MS SQL中視為Nested Insert Exec,所以禁止此操作,
解決方法可使用新增本機linkedserver的方式處理。

2013-01-19

GROUPING 回傳是否為GROUP BY彙總資料行

延續前一篇group by 群組小計
可搭配GROUPING使用,區分是否為匯總資料行。
DECLARE @TABLE TABLE (Pname VARCHAR(10),
   SW  VARCHAR(10),
   Qty SMALLINT)
INSERT INTO @TABLE VALUES ('AA','1',50)
INSERT INTO @TABLE VALUES ('AA','2',70)
INSERT INTO @TABLE VALUES ('AA','2',35)
INSERT INTO @TABLE VALUES ('AA','3',36)
INSERT INTO @TABLE VALUES ('BB','1',25)
INSERT INTO @TABLE VALUES ('BB','2',10)
INSERT INTO @TABLE VALUES ('BB','2',20)

SELECT Pname,SW,Qty=SUM(Qty),GP=GROUPING(Pname)
FROM @TABLE
GROUP BY Pname,SW WITH ROLLUP
--查詢結果
Pname      SW         Qty         GP
---------- ---------- ----------- ----
AA         1          50          0
AA         2          105         0
AA         3          36          0
AA         NULL       191         0
BB         1          25          0
BB         2          30          0
BB         NULL       55          0
NULL       NULL       246         1
參考自:MSDN-GROUPING (Transact-SQL)