今天在informix 做一個簡單的查詢時竟然對這個查詢結果懷疑了起來
create table test(col1 char(1) not null, col2 char(1));
insert into test values ('1' ,null);
insert into test values ('1' ,'1');
select * from test where col2 <> '1' ;
原本以為會回傳第一筆資料. 但卻回傳0筆.
以為是informix才會這樣,結果到sql server也是如此.
我的頭腦真是老化了,怎麼懷疑起這樣的結果呢.
null 與任何值比較應都是無法比的.
欄位值有null先轉型再比較唄
--tsql
select * from test where coalesce(col2,'') <> '1' ;
--informix
select * from test where nvl(col2,'') <> '1' ;
參考NULL 值說明
2013年2月21日 星期四
2013年2月5日 星期二
SSIS 連接管理員呼叫 AcquireConnection 方法失敗
[Oracle xxxx_sc [1]] 錯誤: SSIS 錯誤碼 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。
對 "testOracle" 連接管理員呼叫 AcquireConnection 方法失敗,錯誤碼為 0xC0202009。
在此之前可能已公佈過錯誤訊息,說明 AcquireConnection 方法呼叫為何失敗的詳細資訊。
在工具列,專案下點選封裝名稱屬性,進入後,在組態屬性下的偵錯中,將Run64bitRunTime改為False即可。如下圖:
對 "testOracle" 連接管理員呼叫 AcquireConnection 方法失敗,錯誤碼為 0xC0202009。
在此之前可能已公佈過錯誤訊息,說明 AcquireConnection 方法呼叫為何失敗的詳細資訊。
在工具列,專案下點選封裝名稱屬性,進入後,在組態屬性下的偵錯中,將Run64bitRunTime改為False即可。如下圖:
2013年1月22日 星期二
Could not update a row in the table.
利用datatable讀取及異動資料.
結果exception message為
ERROR [HY000] [Informix][Informix ODBC Driver][Informix]Could not update a row in the table.
錯在哪一筆也看不出來?
是資料被lock?
查了半天毫無頭緒.
最後只好一筆一筆loop逐筆檢查看是哪一筆寫不進去
結果這個錯誤緣自於unique index duplicate 造成的.
昏+暈....................................
結果exception message為
ERROR [HY000] [Informix][Informix ODBC Driver][Informix]Could not update a row in the table.
錯在哪一筆也看不出來?
是資料被lock?
查了半天毫無頭緒.
最後只好一筆一筆loop逐筆檢查看是哪一筆寫不進去
結果這個錯誤緣自於unique index duplicate 造成的.
昏+暈....................................
2012年12月23日 星期日
需要執行物件,才能進行這項操作
人客的環境最近更新的informix ODBC的版本,由原來的3.11換成3.70 TC4。
在做DTS資料轉入時出現了以下的錯誤
步驟錯誤來源: Microsoft Data Transformation Services (DTS) Package
步驟錯誤描述:需要執行物件,才能進行這項操作
(Microsoft Data Transformation Services (DTS) Package (80040005): 提供者產生的程式碼發生執行例外: EXCEPTION_ACCESS_VIOLATION)
步驟錯誤碼: 80040005
Step Error Source: Microsoft Data Transformation Services (DTS) Package
Step Error Description:Need to run the object to perform this operation
(Microsoft Data Transformation Services (DTS) Package (80040005): Need to run the object to perform this operation
) (Microsoft Data Transformation Services (DTS) Data Pump (80040005): Code execution exception: EXCEPTION_ACCESS_VIOLATION)
Step Error code: 80040005
一如往常,這個錯誤訊息令人丈二金剛摸不著頭腦,用中文google半天,找不出什麼蛛絲馬跡可以測。換成英文去查,也都和遇到的狀況不太相同。
後來直接VNC過去,看到ODBC的設定才發現原來他的機器中,相同名稱的DSN,一個放在【使用者資料來源名稱】下使用的是舊版的DRIVER,另一個放在【系統資料來源名稱】下使用的是新版的DRIVER。
新舊版本同時存在沒什麼問題,但DSN名稱相同,我想這就讓DTS搞混了吧。
移除掉舊版的DSN,DTS就正常囉。
在做DTS資料轉入時出現了以下的錯誤
步驟錯誤來源: Microsoft Data Transformation Services (DTS) Package
步驟錯誤描述:需要執行物件,才能進行這項操作
(Microsoft Data Transformation Services (DTS) Package (80040005): 提供者產生的程式碼發生執行例外: EXCEPTION_ACCESS_VIOLATION)
步驟錯誤碼: 80040005
Step Error Source: Microsoft Data Transformation Services (DTS) Package
Step Error Description:Need to run the object to perform this operation
(Microsoft Data Transformation Services (DTS) Package (80040005): Need to run the object to perform this operation
) (Microsoft Data Transformation Services (DTS) Data Pump (80040005): Code execution exception: EXCEPTION_ACCESS_VIOLATION)
Step Error code: 80040005
一如往常,這個錯誤訊息令人丈二金剛摸不著頭腦,用中文google半天,找不出什麼蛛絲馬跡可以測。換成英文去查,也都和遇到的狀況不太相同。
後來直接VNC過去,看到ODBC的設定才發現原來他的機器中,相同名稱的DSN,一個放在【使用者資料來源名稱】下使用的是舊版的DRIVER,另一個放在【系統資料來源名稱】下使用的是新版的DRIVER。
新舊版本同時存在沒什麼問題,但DSN名稱相同,我想這就讓DTS搞混了吧。
移除掉舊版的DSN,DTS就正常囉。
2012年12月15日 星期六
AS2000, Cannot connect to the repository.
在人客的主機上,做了幾件事
1.更改了sa 的密碼
2.更改DTS封裝檔中,動態屬性工件使用\\127.0.0.1\myWork$ 隱藏目錄 (因為資安限制,要把Server服務關掉了,所以無法再使用網芳)
好不容易把DTS都改完了, 接著要進入分析伺服器進行維護時,
哇列,剉屎....
分析管理員竟然無法連線...出現了以下這個錯誤
Cannot connect to the repository.
OLAP server: MYAS2000
Error:
[Microsoft][ODBC 驅動程式管理員] 找不到資料來源名稱且未指定預設的驅動程式
[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified
什麼跟什麼啊...
根本還沒動到AS的任何東西啊.
而且關ODBC什麼事啊. AS repository 也不是用sa的帳號進行連線.
另外也測試了一下系統中,讀取MDX的功能, 明明連到AS就很正常..
但要進行partition process或者連線到分析伺服主機時, 就是有錯.
前前後後花了近3個小時GOOGLE...反覆關機開機測試..也把sa密碼改回來..
就是一直出錯.
最後心想,那重裝一下sql sever AS sp4看看好了, 結果竟然就OK了.
TMD. 這是我最後的結論. 但那3個小時實在是讓我嚇了一身冷汗啊。
2013/01/08 後記:
今天在公司的測試環境上,也出現了一樣的狀況,但訊息顯示為
[Microsoft][ODBC 驅動程式管理員] 資料來源名稱太
幸好有之前的經驗,先重裝AS SP4,馬上就解決了.
2012年11月10日 星期六
informix 11.5 charindex
informix 11.5(含)版本以前沒有提供charindex功能.
因為想要依傳入的尋找 字元組合來取得符合的position,所以為了方便,自已寫了一個湊合著用
以下function是區分大小寫尋找的..
--DOP FUNCTION uf_charindex;
/*
in_str:被搜尋的字元
in_delimiter;尋找字元
in_occurence:被找到的次數
in_exact:是否依in_delimiter逐字尋找
*/
CREATE FUNCTION uf_charindex
(in_str VARCHAR(255),in_delimiter VARCHAR(255)
,in_occurence INTEGER, in_exact CHAR(1) )
RETURNING INTEGER ;
DEFINE q_pos INTEGER;
DEFINE i INTEGER;
DEFINE q_len INTEGER;
DEFINE q_time INTEGER;
DEFINE j INTEGER;
DEFINE q_len_del INTEGER;
DEFINE q_found CHAR(1);
DEFINE q_str VARCHAR(255);
DEFINE q_step INTEGER;
IF nvl(in_occurence,1) <=1 THEN
LET in_occurence = 1;
END IF;
LET q_time=0;
LET i = 1;
LET q_pos = 0;
LET j = 1;
LET q_found = '0';
LET q_step = 1;
LET q_len = char_length(in_str);
LET q_len_del = char_length(in_delimiter);
--是否依in_delimiter逐字尋找符合字
IF in_exact = '1' THEN --完全符合
LET q_step = q_len_del;--先記下完整字長度
LET q_len_del = 1; --最外層只跑一次即可
END IF ;
FOR j = 1 TO q_len_del STEP 1
LET i = 1;
LET q_time = 0;
LET q_pos = 0;
LET q_found = '0';
--取比較字(若in_exact='1'則全部符合)
IF in_exact = '1' THEN
LET q_str = in_delimiter;
ELSE --否則逐字找直到找到in_occurence為止
LET q_str = substr(in_delimiter,j,1);
END IF;
FOR i = 1 TO q_len STEP 1
IF substr(in_str,i,q_step) = q_str THEN
LET q_pos = i;
LET q_time = q_time +1;
--找到後若與指定出現次數相符則結束
IF q_time = in_occurence THEN
LET q_found = '1';
EXIT FOR;
END IF;
END IF;
END FOR;
IF q_found = '1' THEN
EXIT FOR;
END iF;
END FOR;
RETURN q_pos;
END FUNCTION;
測試一下
SELECT FIRST 1 uf_charindex("臺東縣臺東市","縣市",1,'0') FROM systables;
傳回3
SELECT FIRST 1 uf_charindex("臺北市信義區","縣市",1,'0') FROM systables;
傳回3
SELECT FIRST 1 uf_charindex("臺東縣臺東市","市縣",1,'0') FROM systables;
傳回6
SELECT FIRST 1 uf_charindex("This is a book","book",1,'1') FROM systables;
傳回11
SELECT FIRST 1 uf_charindex("This are a lot of bOOks","O",2,'1') FROM systables;
傳回21
因為想要依傳入的尋找 字元組合來取得符合的position,所以為了方便,自已寫了一個湊合著用
以下function是區分大小寫尋找的..
--DOP FUNCTION uf_charindex;
/*
in_str:被搜尋的字元
in_delimiter;尋找字元
in_occurence:被找到的次數
in_exact:是否依in_delimiter逐字尋找
*/
CREATE FUNCTION uf_charindex
(in_str VARCHAR(255),in_delimiter VARCHAR(255)
,in_occurence INTEGER, in_exact CHAR(1) )
RETURNING INTEGER ;
DEFINE q_pos INTEGER;
DEFINE i INTEGER;
DEFINE q_len INTEGER;
DEFINE q_time INTEGER;
DEFINE j INTEGER;
DEFINE q_len_del INTEGER;
DEFINE q_found CHAR(1);
DEFINE q_str VARCHAR(255);
DEFINE q_step INTEGER;
IF nvl(in_occurence,1) <=1 THEN
LET in_occurence = 1;
END IF;
LET q_time=0;
LET i = 1;
LET q_pos = 0;
LET j = 1;
LET q_found = '0';
LET q_step = 1;
LET q_len = char_length(in_str);
LET q_len_del = char_length(in_delimiter);
--是否依in_delimiter逐字尋找符合字
IF in_exact = '1' THEN --完全符合
LET q_step = q_len_del;--先記下完整字長度
LET q_len_del = 1; --最外層只跑一次即可
END IF ;
FOR j = 1 TO q_len_del STEP 1
LET i = 1;
LET q_time = 0;
LET q_pos = 0;
LET q_found = '0';
--取比較字(若in_exact='1'則全部符合)
IF in_exact = '1' THEN
LET q_str = in_delimiter;
ELSE --否則逐字找直到找到in_occurence為止
LET q_str = substr(in_delimiter,j,1);
END IF;
FOR i = 1 TO q_len STEP 1
IF substr(in_str,i,q_step) = q_str THEN
LET q_pos = i;
LET q_time = q_time +1;
--找到後若與指定出現次數相符則結束
IF q_time = in_occurence THEN
LET q_found = '1';
EXIT FOR;
END IF;
END IF;
END FOR;
IF q_found = '1' THEN
EXIT FOR;
END iF;
END FOR;
RETURN q_pos;
END FUNCTION;
測試一下
SELECT FIRST 1 uf_charindex("臺東縣臺東市","縣市",1,'0') FROM systables;
傳回3
SELECT FIRST 1 uf_charindex("臺北市信義區","縣市",1,'0') FROM systables;
傳回3
SELECT FIRST 1 uf_charindex("臺東縣臺東市","市縣",1,'0') FROM systables;
傳回6
SELECT FIRST 1 uf_charindex("This is a book","book",1,'1') FROM systables;
傳回11
SELECT FIRST 1 uf_charindex("This are a lot of bOOks","O",2,'1') FROM systables;
傳回21
SSRS 2008 R2 網站很慢
下載了Report Builder 3.0進行測試
安裝過程中,需要設定report server
結果在進入 http://servername/reportserver 網頁的過程中,好慢好慢.
試了半天,以為是自已的SSRS 2008 R2安裝有問題.
結果竟是因為防毒軟體NOD32 Web存取防護中,HTTP、HTTPS掃描設定中啟用了HTTP檢查.
雖然試著位址管理想要排除本機HTTP的掃描. 但似乎都無效??
只好先關閉啟用了HTTP檢查的功能.
關閉後,Report Server變得飛快..當然Report Builder Preview也變快了
另外, 在http://localhost/reports/ 下, 按下報表產生器後, 出現了以下訊息
安裝過程中,需要設定report server
結果在進入 http://servername/reportserver 網頁的過程中,好慢好慢.
試了半天,以為是自已的SSRS 2008 R2安裝有問題.
結果竟是因為防毒軟體NOD32 Web存取防護中,HTTP、HTTPS掃描設定中啟用了HTTP檢查.
雖然試著位址管理想要排除本機HTTP的掃描. 但似乎都無效??
只好先關閉啟用了HTTP檢查的功能.
關閉後,Report Server變得飛快..當然Report Builder Preview也變快了
另外, 在http://localhost/reports/ 下, 按下報表產生器後, 出現了以下訊息
若使用報表產生器,您必須在此電腦上安裝.Net Framework 3.5
但本機的.net framework明明就是上到了4.0
結果在切換成相容性檢視後,就正常了.
雖然我之前sql server 2008 r2安裝的是英文版,
但report manger web site的介面是跟著IE的語言設定而定的,所以介面就出現了中文
如果想要變回英文,則在IE網際網路選項中, 一般頁籤最下方的語言鍵,新增英文[en]語言,並調整序順到第一位
即可切換為英文介面.
另外,由 http://localhost/reports/ 下安裝報表產生器會自動安裝中文版report builder 3.0
若要使用英文版介面,則需再下載安裝英文版report builder後,再自行開啟即可.
訂閱:
文章 (Atom)
VS CODE離線安裝套件方式-續
去年 vscode離線安裝 powershell nupkg 今年在一台無外網的 windwos 2025上安裝時遇到了powershell版本一直讀取到了5.1的版本,鬼打牆了一下午,在VM還原重測測了好幾回,應該是可行了。 將下載到的免安裝powershell 解壓縮到...
-
一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...
-
freeFTPd是套免費的SFTP SERVER支援22 port SFTP及21port FTP,一般找到免費的都不支援SFTP只有技援FTPS。 之前一直有個困擾在幾台主機安裝後,有幾台重開機後,SFTP SERVER必須手動去啟動,一直以來老是搞不懂為什麼,今天看到一篇文...
-
Row.Cells[2].Text == "abc" ? "ok" : "not ok" ; 或加入Microsoft. VisualBasic 參考使用 vb namespace using Microsoft...
