發表文章

目前顯示的是 2015的文章

[SSRS]安裝開發軟體Business Intelligence

圖片
Business Intelligence 2008 https://www.microsoft.com/zh-tw/download/details.aspx?id=26729 依電腦作業系統位元選擇SQLEXPRADV檔案下載。這檔案會一併安裝SQL Express Database。 Business Intelligence for Visual Studio 2012 https://www.microsoft.com/zh-tw/download/details.aspx?id=36843 只有一個檔案,直接下載即可。

下載Visual Studio Express離線安裝檔方法

下載Visual Studio Express離線安裝檔方法 先下載線上安裝檔後, 執行時增加"/layout"參數即可。 reference web: https://msdn.microsoft.com/library/e2h7fzkw(v=vs.140).aspx#BKMK_Offline

[Batch]利用ping確認網路是否有通

batch file code: @ECHO OFF Ping 168.95.1.1 -n 1 -w 1000 > nul SET CHK_NET_STATUS=N if errorlevel 1 ( echo Not connected SET CHK_NET_STATUS=N ) else ( echo success SET CHK_NET_STATUS=Y ) echo %CHK_NET_STATUS% pause reference web: http://stackoverflow.com/questions/6357515/batch-files-using-ping-to-test-network-connectivity

C# 使用Parameter來避免SQL Injection問題

一般常用的SQL查詢語法,若有需要Client端指定參數名稱,都是使用組字串的方式來達成,但若遇到使用者輸入的資料包含了特殊符號,尤其是單引號,SQL就會出錯,嚴重還會有資安的問題,最好的方法就是使用Parameter的方式來加入參數,這個方法最大的好處是,若資料包含單引號,系統也不會有問題,也可以正常將單引號寫入Table(類以系統自己將1個單引號取代為2個單引號後寫入Table)。 範例如下(使用MSSQL為範例): string sql = "select * from table where a = :a"; using (OleDbConnection Conn = new OleDbConnection(_dbConnString)) { Conn.Open(); using (OleDbCommand oraCmd = new OleDbCommand(sql, Conn)) { oraCmd.Parameters.Add("a", OleDbType.VarChar, 20).Value = "1234"; OleDbDataAdapter da = new OleDbDataAdapter(oraCmd); DataSet ds = new DataSet(); da.Fill(ds); DataTable dtResult = ds.Tables[0]; Console.WriteLine("data row = " + dtResult.Rows.Count.ToString()); Console.ReadKey(); } Conn.Close(); } 而SQL的Parameter符號依每個資料庫或連線方式而有所不同。 .Net For Oracle:使用冒號(:) + Parameter名稱 (若傳入空字串,要先轉為DBNull.Value) .Net For MSSQL:使用小老鼠(@) + Parameter名稱 ODBC:使用問號(?),因為不需指定Parameter名稱

SSRS無法連線Oracle資料庫

圖片
電腦作業系統為64位元, 同時安裝64位元及32位元Oracle Client。 因為是64位元的作業系統,所以想說安裝64位元的SQL SERVER 2008 R2 Express(包含SQL Server Business Intelligence Development Studio)會比較適合。 SQL SERVER 2008 R2 Express 64位元檔案如下, https://www.microsoft.com/zh-tw/download/details.aspx?id=1842 安裝完後,使用SQL Server Business Intelligence Development Studio連線Oracle資料庫,一直出現下面錯誤訊息, 但實際上使用其他資料庫連線工具測試都是正常的,所以可以確定的是只有SSRS有問題。 上網查了一下,有人說因為同時安裝了64位元和32位元的Oracle Client,而SSRS是使用系統環境變數PATH去找Oracle Driver,所以要刪除32位元的Oracle Path,我把是"client_1_x86"那組路徑刪除, C:\app\product\11.2.0\client_1_x64\bin;C:\app\product\11.2.0\client_1_x86\bin; 再測試後發現變成下面的錯誤訊息, 這個讓我覺得很怪,看起來像是位元版本弄錯,試了很多設定後才發現,『SQLEXPRADV_x64_CHT.exe』應該是只有64位元的SQL Express資料庫,而SQL Server Business Intelligence Development Studio應該還是32位元。所以把PATH Oracle路徑又改為32位元那組,結果錯誤訊息又回到『ORA-12557』。 最後才看到原來ORACLE_HOME設定為指到64位元的Oracle Client,指到32位元的Oracle Client就可以連線了。 整理一下, 1. 系統環境變數PATH,其實是可以同時存在64位元和32位元兩個路徑的 2. 『SQLEXPRADV_x64_CHT.exe』雖然是64位元,但指的是64位元的SQL Express資料

CSS link與import的差別

差別1:link屬於XHTML標簽,而@import完全是CSS提供的一種方式。 link標簽除了可以加載CSS外,還可以做很多其它的事情,比如定義RSS,定義rel連接屬性等,@import就只能加載CSS了。 差別2:加載順序的差別。當一個頁面被加載的時候(就是被瀏覽者瀏覽的時候),link引用的CSS會同時被加載,而@import引用的CSS會等到頁面全部被下載完再被加載。 差別3:兼容性的差別。由於@import是CSS2.1提出的所以老的瀏覽器不支持,@import只有在IE5以上的才能識別,而link標簽無此問題。 差別4:使用dom控制樣式時的差別。當使用javascript控制dom去改變樣式的時候,只能使用link標簽,因為@import不是dom可以控制的。 標準網頁制作加載CSS文件時,還應該選定要加載的媒體(media),比如screen,print,或者全部all等。 差別5:@import可以在css中再次引入其他樣式表,比如可以創建一個主樣式表,在主樣式表中再引入其他的樣式表,如: main.css ———————- @import “sub.css”; @import “sub1.css”; sub.css ———————- p {color:red;} sub1.css ———————- .myclass {color:blue} 這樣更利於修改和擴展. 提示:這樣做有一個缺點,會對網站服務器產生過多的HTTP請求,以前是一個文件,而現在卻是兩個或更多文件了,服務器的壓力增大,瀏覽量大的網站還是謹慎使用。有興趣的可以觀察一下像新浪等網站的首頁或欄目首頁代碼,他們總會把css或js直接寫在html裏,而不用外部文件。 reference web: https://wefollownews.appspot.com/cittopnews201408_70/5270.html http://www.dreamdu.com/blog/2007/05/11/css_link_import/

Windows XP IIS連線數調整

Windows XP的IIS預設最大連線數是10人, 可以透過下列指令修改, 最大至40人, 超過40視同為10。 CD C:\Inetpub\AdminScripts cscript adsutil.vbs set w3svc/MaxConnections 40 iisreset reference web: http://www.shunze.info/forum/thread.php?boardid=5&threadid=1324&sid=850bdf78205ea8c3aae256b41fafc19b&sid=850bdf78205ea8c3aae256b41fafc19b

MySQL帳號權限相關指定

* create user without password CREATE USER 'abcuser'@'from_ip'; * create user with password CREATE USER 'abcuser'@'from_ip' identified by 'abc_pwd'; * set password to user SET PASSWORD FOR 'abcuser'@'from_ip' = PASSWORD('abc_pwd'); * grant all privilege to all database GRANT ALL PRIVILEGES ON *.* TO 'abcuser'@'from_ip'; * grant all privilege to single database(sdb) GRANT ALL PRIVILEGES ON sdb.* TO 'abcuser'@'from_ip'; * grant select privilege to single database(sdb) GRANT SELECT ON sdb.* TO 'abcuser'@'from_ip'; * drop user DROP USER 'abcuser'@'from_ip';

ASP/VBS 自訂錯誤訊息

圖片
'Call Err.Raise(number, source, description) call err.raise(-99, "source-abc", "description-yyyyyyyyyyyyyyyy")

幫Notepad++安裝佈景主題

圖片
可以找Textmate的佈景主題, 利用網路上的工具來轉換成Notepad++的佈景主題。 在 Themes Gallery 網站可以找到很多好看的佈景主題,依下面步驟產生Notepad++的佈景主題, STEP-01 STEP-02 STEP-03 STEP-04 STEP-05 將上一步驟複製的XML內容貼至 Textmate theme to Notepad++ styler 網站 STEP-06 將檔案下載至Notepad++安裝目錄下的themes(若不存在則自行建立) STEP-07 STEP-08 選擇剛剛產生的主題 Reference Web: Themes Gallery:http://wiki.macromates.com/Themes/UserSubmittedThemes Textmate theme to Notepad++ styler:http://framework.lojcomm.com.br/tmTheme2nppStyler/ http://ilowkey.net/share-notepad-theme/#.Vd0gtPmqqko

Oracle Account Expired

Oracle安裝完後,User Account預設180日後會失效,以下為解開失效狀態,及修改為永不失效的方式 <查詢ABC使用者的Profile> select username, profile from DBA_USERS where username =  'ABC'; <查詢DEFAULT Profile的設定> select resource_name, limit from dba_profiles where profile='DEFAULT' and resource_type='PASSWORD'; <修改為永不失效> alter profile DEFAULT limit password_life_time UNLIMITED; <解開鎖定> alter user ABC identified by abc123 account unlock; reference web: http://xmlandmore.blogspot.tw/2013/02/oracle-how-to-configure-user-accounts.html http://stackoverflow.com/questions/1095871/how-do-i-turn-off-oracle-password-expiration

Oracle 建立臨時VIEW

在Oracle SQL執行時可以使用下列SQL來建立和使用VIEW, 在同一執行Session結束時就消失了。 With [table] AS ( select ..... from XXX ) SELECT * FROM [table] sample code WITH t_bom AS ( SELECT * from bmb_file WHERE bmb01 LIKE 'E80015%' ), t_ima AS ( SELECT ima01, ima02, ima021, ima140, imaacti FROM ima_file WHERE ima01 LIKE 'E80015%' ) SELECT * FROM t_bom, t_ima WHERE bmb01=ima01 ; ※ 這個寫法聽說效能很差

VBS常用常數變數值

'ADO Status '----------------------------- adStateClosed = 0              'The object is closed adStateOpen = 1                'The object is open adStateConnecting = 2          'The object is connecting adStateExecuting = 4          'The object is executing a command adStateFetching = 8            'The rows of the object are being retrieved '----------------------------- 'ADO Data Types '----------------------------- adEmpty = 0                    'No value adSmallInt = 2                'A 2-byte signed integer. adInteger = 3                  'A 4-byte signed integer. adSingle = 4                  'A single-precision floating-point value. adDouble = 5                  'A double-precision floating-point value. adCurrency = 6                'A currency value adDate = 7                    'The number of days since December 30, 1899 + the fraction of a day. adBSTR = 8        

VBS呼叫Stored Procedure(接Output參數值)

假設有一個Oracle Package Stored Procedure,相關架構如下, 名稱:Package1.StoredProcedure1 參數1:input,料號 參數2:output,成本 VBS可以透過下面的寫法取得Output參數的回傳值, SET con = CreateObject("ADODB.Connection") con.Open DB_Connection_String strItemNo = "ABC00001" curItemCost = 0 SET cmd = CreateObject("ADODB.Command") cmd.CommandText = "Package1.StoredProcedure1" cmd.ActiveConnection = con cmd.NamedParameters = true cmd.CommandType = adCmdStoredProc cmd.Parameters.Append(cmd.CreateParameter("ItemNo", adVarChar, adParamInput, 50, strItemNo)) cmd.Parameters.Append(cmd.CreateParameter("ItemCost", adCurrency, adParamOutput, , curItemCost)) cmd.Execute msgbox "Item Cost: " & cmd.Parameters("ItemCost").Value Reference Web: http://docs.starquest.com/Supportdocs/techStarSQL/StarSQLODBC/Programming/SQ055_VBScript.shtml http://stackoverflow.com/questions/10017872/calling-sql-stored-procedure-with-output-parameter-in-vbscript

MS Batch 建立當天日期的資料夾

使用 @echo off REM 取得日期,並刪除/ FOR /F "tokens=1-4 delims=/ " %%a IN ("%date%") DO SET today=%%a%%b%%c%%d REM 依系統變數windir判斷目前作業系統類別(決定星期是在日期前面還是日期後面),再拆出年月日 REM /I: 比對字串不區分大小寫 if /I %windir%==C:\WINDOWS set bkdate=%today:~0,8% if /I %windir%==C:\WINNT set bkdate=%today:~3,10% mkdir %bkdate%

設定Package讓不同的Schema呼叫執行

Oracle預設是無法直接呼叫執行其他不同Schema的Package/Stored Procedure/Function...的。必需先透過適當的授權才可以,以下使用Package為例。 假設有一個Package "PKG_1"存在SchemaA裡,但SchemaB想要呼叫此Package,該怎麼設定呢? <授權>-單一Schema grant execute on PKG_1 to SchemaB; <授權>-All Schema grant execute on PKG_1 to public; <移除授權> revoke execute on PKG_1 from SchemaB; revoke execute on PKG_1 from public; <瀏覽有哪些授權> select * from DBA_TAB_PRIVS where TABLE_NAME='PKG_1';

如何快速移轉Windows 2003 Server 排定的工作至另一台 Windows 2003 Server

將 C:\Windows\tasks 下的*.job複製到目的Server相同目錄下即可。啟用/停用狀態都會一起複製過去。

[Oracle]怎麼在Stored Procedure裡執行Truncate Table指令

因為Stored Procedure只允許執行DML(Data Manipulation Language)指令,如SELECT、INSERT,而Truncate Table指令屬於DDL(Data Definition Language)指令,如Create Table、Alter Table。 所以若直接在Stored Procedure裡下Truncate Table語法,會發生錯誤, CREATE OR REPLACE PROCEDURE SP_ALEX_TEST AS BEGIN TRUNCATE TABLE tablename; END SP_ALEX_TEST; / 錯誤(3,12): PLS-00103: Encountered the symbol "TABLE" when expecting one of the following: := . ( @ % ; The symbol ":= was inserted before "TABLE" to continue. 所以必需改由下列方法來達到執行效果, --<方法一> execute immediate 'truncate table tablename'; --<方法二> DBMS_UTILITY.EXEC_DDL_STATEMENT('TRUNCATE TABLE tablename;'); 不過實測後,都可以compile,但只有<方法一>會刪除資料,而<方法二>雖有正常執行完成,但資料並未被刪除。 reference web: http://stackoverflow.com/questions/625743/truncating-a-table-in-a-stored-procedure

ASP網頁無法正常執行批次程式或VBS程式

圖片
有時因為一些特殊需求,不得不讓ASP網頁直接執行批次程式或VBS程式,雖然這不是個建議的解法,但在有條件下它卻是個可以快速解決問題的方法。 因為作業系統不同,所以設定方式也不大相同,以下用依作業系統別來說明, 1. Windows XP - IIS step-00 開啟IIS設定(它是要在「電腦管理」裡的「服務及應用程式」才看得到) step-01 可以從預設的網站設定(其以下的目錄均會套用相同權限)或針對特定的目錄設定。基本上中間應該可以只勾選「指令碼來源存取」、「讀取」、「寫入」三個選項,不過我是全選。 step-02 使用權限要選擇「指令碼及執行檔」 step-03 應用程式保護要選擇「低 (IIS處理序)」 step-04 在資料夾的「目錄安全設定」中的匿名存取及驗證控制,點選編輯後,在驗證方法視窗將帳戶改成權限較高的帳號,我是指定本機administrator 2. Windows 2003 Server - IIS step-00 開啟IIS step-01 可以從預設的網站設定(其以下的目錄均會套用相同權限)或針對特定的目錄設定。基本上中間應該可以只勾選「指令碼來源存取」、「讀取」、「寫入」三個選項,不過我是全選。 step-02 執行權限要選擇「指令碼及執行檔」 step-03 依「應用程式程式集區」指定的AppPool設定屬性 step-04 依【step-03】應用程式集區的名稱設定身分識別,並改成本機系統(不過會出現警告訊息,因為等同取得本機執行權限)

TortoiseSVN檔案圖示無法顯示

以前電腦安裝完TortoiseSVN軟體後,重登後Check-Out的檔案都會直接顯示圖示,但這次在電腦上(已經用了好一陣子,也安裝了不少軟體)安裝後,重開機後卻一直無法顯示圖示。 上網找了一下資料才知道,原來Windows Explorer Shell只能顯示15個icon,也就是當電腦灌了很多軟體如,Dropbox, SkyDriver等等也會有檔案圖示的軟體後,會把TortoiseSVN圖示擠到15之後。 以下為解決方法, STEP-01 開啟regedit,找到【HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows >CurrentVersion >Explorer > ShellIconOverlayIdentifiers】 STEP-02 將TortoiseSVN開頭的資料夾相辦法往前移,他是用資料夾名稱第1碼編碼來排序的,所以把其他資料夾名稱前後都加上雙引號,排序就可以往前了(因為TortoiseSVN資料夾前有用數字,所以會排在最前面) STEP-03 重登或重開機都可以生效,但也可以藉由砍掉explorer程序,再重新執行explorer來達到套用剛剛的設定 reference web: http://hsieheric.blogspot.tw/2014/12/tortoisesvn-tortoisegit-icon.html

Oracle 重置sys密碼

有兩種重置sys密碼的方法 <方法一> sqlplus /nolog sql> connect /as sysdba sql> alter user sys identified by "new password"; <方法二> Oracle將sys密碼加密後存在database目錄下, 若以oracle11g為例, 儲存在下面路徑, c:\app\Administrator\product\11.2.0\dbchome_1\database\PWDABC.ora 其中, 檔案名稱為PWD+SID。 要重置前, 必需將此檔案刪除或更名, 否則執行指令後會發生檔案已存在而失敗的錯誤。 1. 打開cmd 2. 進入"c:\app\Administrator\product\11.2.0\dbchome_1\database\"目錄 3. 執行指令"orapwd file=PWDABC.ora password=新密碼 entries=10", 重新產生密碼 4. 停止服務 net stop "OracleServiceABC" 5. 啟動服務 net start "OracleServiceABC" reference web: http://clshangsha.iteye.com/blog/1897789

Oracle中文字如何計算長度

圖片
一般計算英文字的長度,就是一個字元就一個長度,但遇到中文字,Oracle的處理結果就不太相同了,以下是一些測試語法及結果, Oracle會因為資料庫安裝時設定的字元編碼不同,使得在不同的編碼下,定義相同長度的字串欄位,可以寫入的最大長度可能不同。 測試環境如下, 兩台 Oracle資料庫環境,A資料庫編碼為UTF8,B資料庫編碼為Big5。 測式字串為『123測試中文字長度』 首先,可以利用下面SQL查詢目前資料庫的編碼為何? select userenv('language') from dual; TRADITIONAL CHINESE_TAIWAN.AL32UTF8→UTF8 TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5→Big5 在A資料庫執行下面SQL及計算結果, select '123測試中文字長度' as 測試字串,        length('123測試中文字長度') as 直接看字元數,        length(rawtohex(convert('123測試中文字長度', 'AL32UTF8')))/2 as 系統用二進位看 from dual; 在B資料庫執行下面SQL及計算結果, select '123測試中文字長度' as 測試字串,        length('123測試中文字長度') as 直接看字元數,        length(rawtohex(convert('123測試中文字長度', 'ZHT16BIG5')))/2 as 系統用二進位看 from dual; 比較結果,對於UTF8的編碼,1個中文字相當於3個字元,而Big5的編碼,1個中文字相當於2個字元。 reference web: http://blog.darkthread.net/post-2006-11-24-kb-oracle.aspx http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD200911121425027SG.html

PSPad如何新增程式高亮度(Highlighter settings)顯示

圖片
假設有一個如下的Informix 4GL程式碼, 如何加上預設沒有的高顯示(Highlighter settings)呢? 因為Informix 4gl的樣式檔在程式安裝就有包含了,只是沒有設定顯示出來 STPE01 開啟"語法高亮度設定" STEP02 選擇左方沒有使用的項目, 並在右側"規範"頁籤裡, 挑選要使用的樣式名稱(使用者高亮度清單) STEP03 在PSPad下方找到顯示為Text地方, 滑鼠左鍵點一下, 可以選擇要顯示的樣式。 (因為是直接在已開啟的檔案變更顯示樣式, 才需要如此手動設定。下次直接開啟副檔名為4gl時, 則會自已以此樣式呈現) STEP04 完成設定後, 發現顏色已經變了。 reference web: http://forum.pspad.com/read.php?2,16200

[EXCEL]利用COUNTIF計算資料出現次數

圖片
原始資料如下, <工作表1> STEP-01 先將重覆的資料欄位,複製到另一工作表(Sheet),利用移重重覆功能把重覆的資料刪除 <工作表2> STEP-02 在<工作表2>找一欄位輸入下列公式,即可以取得每欄資料出現次數 =COUNTIF(工作表1!A:A,工作表2!A2) reference web: https://www.ptt.cc/bbs/Office/M.1294198106.A.86A.html

MSSQL常用SQL

● 查詢資料庫版本 Select @@version ●

Oracle TNSNames.ora 設定範例

AEHOME = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = aehome) ) )

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

圖片
環境: [Server] Windows 2008 Server Oracle Database 11g R2 [Client] Windows 7 Oracle Client 11g R2 Oracle Database安裝完後,在Client電腦也完成Oracle Client安裝,tnsnames.ora的配置也都完成了,但是使用sqlplus連線DB時卻出現下面的錯誤訊息。 在排除此問題前先確認,在Oracle Database 的本機使用sqlplus是可以連線的,由此先確定Database Service是有正常運作的。 目前遇過幾個況狀會導致這個錯誤訊息。 <狀況1>Server的主機網域(domain)錯誤或未指定,導致解析不到SID tnsnames.ora的SERVICE_NAME必需加入網域名稱 <狀況2>Oracle Database Listener未定設SID 1. 登入sys帳號後,利用下面指令可以查出SID名稱。 select instance_name from v$instance; INSTANCE_NAME ---------------- aehome 2. 檢查lListener服務狀態 發現沒有aehome的Listener,所以Client端才會無法利用TNS Name的方式連線。 3. 修改listener.ora,加入aehome的監聽。 4. 重新啟動Listener 重啟後發現已經有監聽aehome了。 5. 此時Client已可以正常使用sqlplus連線了。

利用forfiles指令找出指定天數以前的檔案

圖片
有時必需要使用批次程式來定期刪除過時的檔案,就可以利用forfiles這個指令。 目前的系統日期為2015/02/03, 要處理的資料目錄內的檔案如下, 執行下列指令,可以找出建立日期是2015/01/30以後的檔案 forfiles /p . /d "2015/01/30" /c "cmd /c echo @FILE" 執行下列指令,可以找出建立日期是5日以前的檔案 forfiles /p . /d -5 /c "cmd /c echo @FILE" 執行下列指令,可以找出檔案後,並刪除 forfiles /p . /d -5 /c "cmd /c echo deleting @file && del /f @path" reference web: http://4i4u.com/blog/windows-forfiles-bat/

利用ZXing.Net元件產生圖片

圖片
Google官方有提供一個API可以依據傳入的參數, 產生對應的QRCODE圖檔, 讓網站可以快速的做出屬於自己的QRCODE圖片。不過這個技術要是需要應用在公司系統裡, 就可能面臨許多未知數了。 萬一Google哪天這個API不玩了或是網址修改了, 系統是否有對應的方針呢? 萬一公司網路的ISP業者維修線路, 暫停網路服務, 公司是否可以忍受這期間系統無法使用的情況呢? 萬一公司對外網路設備掛點了, 是否可以忍受這期間系統無法使用的情況呢? 萬一...應該還有其他萬一... 所以基於我對自己程式的完美要求, 就想辦法去找找有沒有免費的QRCODE元件可以做到這個服務。 皇天不負苦心人呀, 花了2個小時就試出這個功能了, 只能說哥哥(Google)有你真好。 開發平台:Visual Studio 2010 元件:ZXing.Net ( https://zxingnet.codeplex.com/ ) step-01 將下載的元件(dll)放到網站bin目錄裡 step-02 加入參考 step-03 程式碼如下, using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using ZXing; using ZXing.Common; using System.Drawing; using System.Drawing.Imaging; public partial class _Default : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {         try         {             //QRCODE內容             string strQRstring = Request.QueryString["d"];             //QRCODE圖片高度             string strH