infmrox 更改欄位型態时, 因為有些table 太大,若在buffer log下使用alter 方式來修改,容易造成long transaction
有時即使切換成nolog模式, alter也不見會成功
所以應使用unload and dbload的方法來重轉資料
informix沒有GUI的管理介面, shell又不太熟, 就土法煉鋼一步一步做吧.
(心中不禁佩服那些在unix terminal mode下做事的偉人...,慶幸我活在SQL Server 的陰影下)
1.unload data (可以包成shell, 用nohup backgroud執行,若筆數過大,建議放成幾個.unl檔)
set isolation to dirty read;
unload to a.unl delimiter ';'
select * from yourTable;
事後要再切割.unl檔,可以使用 split -10000 a.unl
表示將a.unl 每10000筆切割一個檔案, 會產生xaa,xab,xac......的檔案
2.create your temp table (要放unload的資料)
3.create a.com ( dbload要用到的command file, 其中160是欄位數)
FILE a.unl DELIMITER ';' 160;
INSERT INTO table_tmp;
4.prepare dbload.sh (執行a.com,將資料轉入 table_tmp, 每1000筆commit一次, errorlog 寫到 a.err
dbload -d yourdb -c a.com -l a.err -e 0 -n 1000
以上可都可寫成shell後,用nohup time sh xx.sh >> xx.out 2>&1 &的方式執行, 一來可background作業, 二來可以記錄每次作業的時間, 就不用一直守著陽光守著結果了.. ..
ps.為什麼不用SSIS呢? 因為用SSIS 轉informix資料真是一大折磨,問題多多, 原本SQL 2000 DTS連結informix超級完美, 但SSIS 2005後,問題一堆... 使用官方的driver測試後的效果實在差到不行, 光是一個簡單的單一table 做data flow task, 就嗝屁了. 是我程度太LOW嗎?
2010年10月26日 星期二
SQLServer 2008R2 修復失敗
因為vs2008無法debug的問題,昨天重裝window 7,
也因為手上幾個專案橫跨sql2000 - sql 2008, 除了sql 2000是放在VPC外, 我在這台windows 7分別案裝了SSMS2005和SSMS2008, 安裝時,忘了記取上回SSMS類別未登錄的教訓, 結果裝完sql 2008R2後,才發現, 順序又弄錯了, 造成開啟SSMS 2005的project時出現類別未登錄的錯.
我真是腦殘.....OS仍是.法克....
在MS connect 上看到一篇相關的解法方法,依法處理.
Start /wait E:\Software\MicroSoft\SQL2005\StandardENG\DISC1\setup.exe /qb INSTANCENAME=yourserver REINSTALL=ALL REINSTALLMODE=omus SAPWD=yourpwd
結果SSMS 2005修好了, 但現在變成SSMS 2008 沒法開solution了. 我真是手賤....
也想如法泡製重新安裝SSMS 2008,結果這個安裝指令不適用在SQL 2008
那就repair一下SQL 2008 R2吧, 執行一半出現
Error 1316.A network error occurred while attempting to read from the file F:\1033_ENU_LP\x64\setup\SSCERuntime_x86-enu.msi
看了一下 安裝光碟根本沒有這個檔案..只有SSCERuntime.msi.
唉, again ........殘念. ......Remove and Reinstall. 又是瞎忙的一天. OS.....仍是法客
也因為手上幾個專案橫跨sql2000 - sql 2008, 除了sql 2000是放在VPC外, 我在這台windows 7分別案裝了SSMS2005和SSMS2008, 安裝時,忘了記取上回SSMS類別未登錄的教訓, 結果裝完sql 2008R2後,才發現, 順序又弄錯了, 造成開啟SSMS 2005的project時出現類別未登錄的錯.
我真是腦殘.....OS仍是.法克....
在MS connect 上看到一篇相關的解法方法,依法處理.
Start /wait E:\Software\MicroSoft\SQL2005\StandardENG\DISC1\setup.exe /qb INSTANCENAME=yourserver REINSTALL=ALL REINSTALLMODE=omus SAPWD=yourpwd
結果SSMS 2005修好了, 但現在變成SSMS 2008 沒法開solution了. 我真是手賤....
也想如法泡製重新安裝SSMS 2008,結果這個安裝指令不適用在SQL 2008
那就repair一下SQL 2008 R2吧, 執行一半出現
Error 1316.A network error occurred while attempting to read from the file F:\1033_ENU_LP\x64\setup\SSCERuntime_x86-enu.msi
看了一下 安裝光碟根本沒有這個檔案..只有SSCERuntime.msi.
唉, again ........殘念. ......Remove and Reinstall. 又是瞎忙的一天. OS.....仍是法客
VS2008無法進入debug 模式
前幾天,想要debug一下某個vs2008的專案檔.
按F5進入debug後, 原本應該disable變成灰色的綠色執行鍵, 在一開啟ie後, 就變回綠色,完全無法進入debug模式.
試了二天, 網路上一堆相同問題,但各有不同解決的方法, 我都試過而且還將windows 7重裝,vs2008重裝.....實在很雖小,在那麼clean的環境下, 仍然無法debug, 強烈懷疑是某個windows 更新造成的?
幹....這一個月來我得了電腦災害, 一堆問題突然湧現, 我心中吶喊這個字不止上千遍了.
今天, 試最後一招, 用run as administrator開啟vs2008......
太神奇....我明明就是用adminstrators的帳號登入本機的啊... WHY, 開過一次後, 這個無法debug的問題就解決了..
一頭霧水................................................法客
按F5進入debug後, 原本應該disable變成灰色的綠色執行鍵, 在一開啟ie後, 就變回綠色,完全無法進入debug模式.
試了二天, 網路上一堆相同問題,但各有不同解決的方法, 我都試過而且還將windows 7重裝,vs2008重裝.....實在很雖小,在那麼clean的環境下, 仍然無法debug, 強烈懷疑是某個windows 更新造成的?
幹....這一個月來我得了電腦災害, 一堆問題突然湧現, 我心中吶喊這個字不止上千遍了.
今天, 試最後一招, 用run as administrator開啟vs2008......
太神奇....我明明就是用adminstrators的帳號登入本機的啊... WHY, 開過一次後, 這個無法debug的問題就解決了..
一頭霧水................................................法客
2010年10月23日 星期六
BugNet Email寄送
啟用寄發Email通知的功能
1.在 /Administration/Host/Settings.aspx 下的 Mail / SMTP 設定mail server , host email
2.在web.config 將
<system.net>
<mailsettings>
</mailsettings>
</system.net>
改成
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
</smtp>
</mailSettings>
</system.net>
3.新增issue時,assigned to 時, Notify 要checked (default is true)
4.自已assign給自已的issue異動,你不會收到mail通知的, 但若是別人異動這個issue則會收到.
You won't receive email notifications for your own actions, but others will.
1.在 /Administration/Host/Settings.aspx 下的 Mail / SMTP 設定mail server , host email
2.在web.config 將
<system.net>
<mailsettings>
<smtp deliverymethod="SpecifiedPickupDirectory">
<specifiedpickupdirectory pickupdirectorylocation="C:\Email">
</specifiedpickupdirectory>
</smtp>
<specifiedpickupdirectory pickupdirectorylocation="C:\Email">
</specifiedpickupdirectory>
</smtp>
</mailsettings>
</system.net>
改成
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
</smtp>
</mailSettings>
</system.net>
3.新增issue時,assigned to 時, Notify 要checked (default is true)
4.自已assign給自已的issue異動,你不會收到mail通知的, 但若是別人異動這個issue則會收到.
You won't receive email notifications for your own actions, but others will.
2010年10月18日 星期一
已經為連結伺服器 "test" 的提供者 "SQLNCLI" 指定無效的結構描述或目錄
更改了server test 中的某一個table schema
因為資料量很大,所以通常都是先create 新table後,再用匯入匯出精靈將資料轉到新table, 轉換完畢後再將舊的table drop , 然後rename 新table.
以前都直接在Enterprise Manager上做reanme的動作, 但這次改用sp_reanme來更名.
結果今天查詢linkd db時, select count(*) from test.mydb.dbo.old_table
出現了以下的錯誤
sp_tables_ex 執行時, 如果出現
伺服器 'MOJSS' 並未設定給 DATA ACCESS
請執行 exec sp_serveroption 'your server name','data access',true
因為資料量很大,所以通常都是先create 新table後,再用匯入匯出精靈將資料轉到新table, 轉換完畢後再將舊的table drop , 然後rename 新table.
以前都直接在Enterprise Manager上做reanme的動作, 但這次改用sp_reanme來更名.
sp_rename 'new_table', 'old_table '
結果今天查詢linkd db時, select count(*) from test.mydb.dbo.old_table
出現了以下的錯誤
已經為連結伺服器 "test" 的提供者 "SQLNCLI" 指定無效的結構描述或目錄。
參考 NSDN這篇文章,
How to set up and troubleshoot a linked server to an Oracle database in SQL Server
里頭提到, 要嗎沒有permission,要嗎就是table name 不存在......
利用 sp_tables_ex @table_server=test, @table_name='old_table'
來查看linkdb中的table是否存在, 結果竟然沒有半筆資料......可是table 明明都在啊
直接用select * from openquery (test, 'select count(*) from old_tab') 來查詢,卻又有筆數..
與select count(*) from test.mydb.dbo.old_table 比較
以結果筆數來說,這二個語法不應該是相同的嗎? 真是沒道理啊....
再來, select * from sysobjects where name like '%old_table%'
table也是存在的. select 其他table都OK, 唯獨這個table都查不到....WHY????
回頭檢查了一那天跑的sql syntax...
原來 sp_rename 'new_table', 'old_table ' , 'old_table ' 後面多了一個空白,
這個空白,讓linkdb 不認得了....
sp_tables_ex 執行時, 如果出現
伺服器 'MOJSS' 並未設定給 DATA ACCESS
請執行 exec sp_serveroption 'your server name','data access',true
CInt vs Int
完成參考 Microsoft® Visual Basic® Scripting Edition
其中附註說明
附註 CInt 函數與 Fix 及 Int 函數不同,Fix 和 Int 函數會將小數部分去除,然後傳回整數值。當小數部分恰好為 0.5 時, CInt 函數會將它轉換成最接近的偶數值。例如,0.5 轉換成 0,而 1.5 轉換成 2。
其中附註說明
附註 CInt 函數與 Fix 及 Int 函數不同,Fix 和 Int 函數會將小數部分去除,然後傳回整數值。當小數部分恰好為 0.5 時, CInt 函數會將它轉換成最接近的偶數值。例如,0.5 轉換成 0,而 1.5 轉換成 2。
2010年10月6日 星期三
SQL Server Job查看
--查看job SELECT job_id, [name] FROM msdb.dbo.sysjobs
--查看job step
SELECT job.job_id,notify_level_email ,name,
enabled,description ,step_name,command,SERVER,database_name
FROM msdb.dbo.sysjobs job JOIN msdb.dbo.sysjobsteps steps
ON job.job_id = steps.job_id
--查看job history 歷程1, 最多1000筆(可在agent設size)
SELECT j.job_id, j.name, h.run_duration,h.step_id FROM sysjobs j
INNER JOIN sysjobhistory h ON h.job_id=j.job_id
INNER JOIN (
SELECT job_id, MAX(STR(run_date,8)+STR(run_time,8)) AS LastRunDate
FROM sysjobhistory GROUP BY job_id
) x ON j.job_id=x.job_id
WHERE h.step_id=0
AND STR(h.run_date,8)+STR(h.run_time,8)=x.LastRunDate
--查看job history 歷程2
SELECT run_date, run_time FROM sysjobhistory a INNER JOIN sysjobs b
ON a.job_id = b.job_id
WHERE name LIKE 'OLAP%'
--查看job sysjobschedules
SELECT b.name,active_start_date,active_start_time,active_end_date,active_end_time
FROM sysjobschedules a INNER JOIN sysjobs b
ON a.job_id = b.job_id
WHERE b.name LIKE 'OLAP%'
訂閱:
文章 (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...