Bali Trip!

I just back from bali for my holiday. It was a nice trip. I spent 4 days there. I didnt went to a lot tourist spot. Just take a rest there. Here the beach in front of my hotel!

Kuta Beach

Updates on AJAXWorkspace 0.9.5

Recently, I had release beta version 0.9.5.  I had fixed quite number of bugs in various modules cause by MS ASP.NET AJAX Jan CTP (MS ASP.NET AJAX v1.0 valiVator issues). This is only a temporary work around.  Hopefully, it will be solved once my hosting company ready to patch the HotFix. Besides, I also add in workspace and project statistic section which I think is a “nice to have” features.

Workspace Statistic

AjaxWorkspace Statistic

Project Statistic

AjaxWorkspace Project Statistic

Custom properties for custom webpart in wss 3.0

Writing custom properties for your own web part isn’t that complex. Here is a simple example to do that.

using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Serialization;
using System.Web.UI.WebControls.WebParts;

namespace SampleWebPart
      ToolboxData("<{0}:Sample runat=server></{0}:Sample>"),
       XmlRoot(Namespace = "SampleWebPart")]
    public class Sample : WebPart
        private string displayText = “Hello World!”;
        [WebBrowsable(true), Personalizable(true)]
        public string DisplayText
            get { return displayText; }
            set { displayText = value; }
        protected override void Render(System.Web.UI.HtmlTextWriter writer)

MS ASP.NET AJAX v1.0 validator issues

I guess everybody know that MS ASP.NET AJAX is having problem validation controls.  This issues exists long time ago and become a hot topic in community forum. What happen to Microsoft? The final release is put up with no notice about the fact that this requires some other update which has not been released.

Now, there is a HotFix to solve this problem:

Does this mean that all my problems solved? Unfortunately, it is not. My web hosting upgraded ASP.NET AJAX from RC version to v1.0. That time, I have to recompile all my sources and upload it. Then, all my application’s validation failed.  Now, there is a HotFix from Microsoft.  But my hosting company does not want to install the patch due to overall stability reason.  In that case, if Microsoft does not release the update until end of the year, does this means that I need to use the corrupted AJAX version until that time?  I am waiting their reply after submit and explain my second request. If they still do not want to patch the HotFix, I think is time for me to switch away from them. This kind of AJAX features means nothing to us since the simple validation failed.

“Function sequence error” in bcp with xp_cmdshell

Do you ever get “Function sequence error” when running bcp with xp_cmdshell? The stored procedure executed fine.

SQLState = HY010, NativeError = 0
Error = [Microsoft][SQL Native Client]Function sequence error

I am not sure my solution can 100% solve the error, but it works in my machine. The trick is to turn on “Database Mail (Enable database stored procedures)” in “Surface Area Configuration for Features”. Try to run again and the error will gone!

Function sequence error in BCP

*You may encounter this error while testing on the sample in “How to import multiple CSV files using MS SQL store procedure?

Posted in MS SQL. 1 Comment »

Task Management in Ajax Workspace Collaboration

I believe task management play a very important role in project management and online collaboration. Task management can be very simple such as your personal task which reminds you do something. It also can be very complex which involves multiple parties, getting approval from someone, running parallel, etc. Each type of task management is targeting to different type of user group. Hence, the task management under (which explained in online collaboration for teamwork and project management) is targeting to intermediate user such as freelancer and small-midsized project.

Task management allows user organize task including simple task, checked task and approval task among your team members by project or organization. Here the details:

Simple Task
Simple task is selected when creator does not need to verify the task’s result. E.g. task remind someone to read a proposal.


  • Simple task involved 2 processes- Create, Realize.
  • Create – Task create by someone
  • Realize – Responsible user does and realizes a task.

Checked Task
Checked task is selected when creator or someone need to verify the task’s result. E.g. task request someone to complete a presentation document. Once completed, the task will route back to person who process for verification.


  • Checked task involved 3 processes – Create, Realize, Process
  • Create – Task create by someone
  • Realize – Responsible user does and realizes a task.
  • Process – Responsible user checks and verifies all the requests in this task are done correctly.

Approval Task
Approval task is selected when the task need approval before it can be start. Someone also needs to verify the task’s result at the end. E.g. task request someone to update a new sales quotation after get an approval from sales manager.


  • Approval task involved 4 processes – Create, Approve, Realize, Process
  • Create – Task create by someone
  • Approve – Responsible user approve a task before it continue to next process.
  • Realize – Responsible user does and realizes a task.
  • Process – Responsible user checks and verifies all the requests in this task are done correctly.

Each task contains different type of actions:

  • Approve - Approve task for further action. Once approved, person who responsible to realize will take over and proceed to complete the task.
  • Reject - Reject task to stop this task. Once rejected, this task will return back to task creator.
  • Realize - Realize this task when users have finish all the requests in this task.
  • Process - Process task when users have verify all the requests are done correctly.
  • Re-Submit - Re-submit a task where it rejected from approval process.
  • Remark – User may remark this task to other to request further information before complete this task. Once remarked, this task will appear in responsible user’s task list.

Anyone who interested to use this task management can go to It is free. Feel free to drop me any comment so that I can improve it!

Convert text to speech on the fly

Do you ever come across customer’s requirement to convert text (like NEWS) to speech files such as wav, mp3, etc easily?  Especially the customer wants to create mp3 directly and attaches it to the news he has just published in MOSS. Here is a good start…

In this project they made an application program for Text-to-Speech Conversion. To build this application, we must install the SDK speech from Microsoft on our computer (download Speech SDK (it’s free) from

The SAPI API provides a high-level interface between an application and speech engines. SAPI implements all the low-level details needed to control and manage the real-time operations of various speech engines. As mentioned it will required some custom code.

Linked server issue from SQL Server 2005 to Oracle

“It is very troublesome to set up a link server to oracle”. I totally agree with that. Once you get any error from that, it is very hard to find out the actual problem out there. Here is a link that lists out steps to set up and troubleshoot a linked server to an Oracle database in SQL Server:

If these steps do not able to solve your problem, you probably will stop at there. So far I do not find a better one online unless getting help for some guru.

Large MS SQL transaction log problem

You probably encounter issue where you have large transaction log but small data file, e.g 40GB transaction log and 60MB database.

Take a look at:

Unreplicated transactions
The transaction log size of the publisher database can expand if you are using replication. Transactions that affect the objects that are replicated are marked as “For Replication.” These transactions, such as uncommitted transactions, are not deleted after checkpoint or after you back up the transaction log until the log-reader task copies the transactions to the distribution database and unmarks them. If an issue with the log-reader task prevents it from reading these transactions in the publisher database, the size of the transaction log may continue to expand as the number of non-replicated transactions increases. You can use the DBCC OPENTRAN Transact-SQL reference to identify the oldest non-replicated transaction.

For more information about troubleshooting unreplicated transactions, see the “sp_replcounters” and “sp_repldone” topics in SQL Server Books Online.

For more information, click the following article number to view the article in the Microsoft Knowledge Base:

306769 FIX: Transaction log of snapshot published database cannot be truncated
240039 FIX: DBCC OPENTRAN does not report replication information
198514 FIX: Restore to new server causes transactions to remain in log

These are some of the actions they took to solve the problems:

  • Creating a new transaction log (other disk)
  • Limiting the growth of the original log
  • Triggering replication to clear the log.
Posted in MS SQL. 2 Comments »

Converting DT_TEXT into DT_NTEXT

If you trying to extract data from a flat file and got the following error:

Error 1 Validation error. Extract Interface Message ID Data: Extract Interface Message ID Data [1]: The data type for “output column “InterfaceMessageBody” (54)” is DT_NTEXT, which is not supported with ANSI files. Use DT_TEXT instead and convert the data to DT_NTEXT using the data conversion component.

It looks like one or more column datatype in the FlatFile Source has become DT_NTEXT instead of DT_STR.
You can try the following steps to rectify the error:

  1. Right Click the Flat File Source Component that is generating this error.
  2. Choose “Show Advanced Editor” from the context menu and then the “input and output properties” tab on the dialog box that appears.
  3. Click on the + sign beside “Flat File Source Output” node in the treeview on the left side of the dialog box.
  4. Click on the + sign beside “output columns” node in the treeview just below “Flat File Source Output” node. You would see all the columns available in the text file.
  5. Select each column one after another and check their dataType property on the Right side of the Dialog box.
  6. If the datatype is DT_NTEXT then change it to DT_STR.
  7. Repeat step 6 for the all the columns where if columns datatype is DT_NTEXT.

* Thanks to Ritesh Modi for the solution.