Wednesday, June 22, 2011

Free Website monitoring:

I developed a website monitoring tool. This tool keep monitors others servers or website. As you know, the basic thing, the availability of website is very importance for website owner. They will lose money of their website went down. They(and i) need to keeps monitor my server.

The real problem is that my customers asked me how you detect your service is always available. What is SLA that I can give them? 1/2 hour downtime? How do I detect my service is available or not. They worry about their money(me too). I found similar software in market. Some of them are not free service. Or if free, they don’t give enough quality of detection of website faulty to me. I got fault alarm many time and west my time to look at it.

I decided to build up a monitoring service to monitor my server/website. I call the service as The BasicUptime provides monitoring service for your website. BasicUptime ping your Web sites, servers, network services and ports every 5 minutes. If BasicUtime detects a connection faulty, an alert is sent to you. When your website is active again, you are notified as well. Following failure detection, e-mail, Twitter, SMS and other contacts are notified.

Just sign up a new account Or sign in with Twitter account



- E-mail


-Twitter: Private message


- SMS(via Twitter)

Turning Mobile Twitter Updates Off and On

  • ON: turns ALL your authorized Twitter updates and notifications on.
  • OFF:turns off all updates except direct messages. Send STOP again to turn off direct messages too.
  • STOP, QUIT, End, Cancel, Arret or Unsubscribe: turns ALL phone notifications off
  • ON username: turns on notifications for a specific person on your phone. Example: ON basicuptime
  • OFF username: turns off notifications for a specific person on your phone. Example: OFF basicuptime
  • LEAVE username:this command allows you to stop receiving SMS notifications for a specific user. Example: LEAVE basicuptime
  • More information

This is free service and very good service.

Follow us: @basicuptime

Sunday, February 13, 2011

Fix MSDTC (Microsoft Distributed transaction coordinator)

As everyone knows, in production environment is difference with development environment. I have got problem when I was setting up the servers, application server and database server.

I got the below error message when I pointed application’s connection string to database server.


[SqlException (0x80131904): MSDTC on server 'MYDATABASESERVER' is unavailable.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +857306
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +734918
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +188
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1838
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +31
System.Data.SqlClient.SqlDataReader.get_MetaData() +62
System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[] buffer, TransactionManagerRequestType request, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32 timeout, SqlInternalTransaction transaction, TdsParserStateObject stateObj) +600
System.Data.SqlClient.TdsParser.GetDTCAddress(Int32 timeout, TdsParserStateObject stateObj) +41
System.Data.SqlClient.SqlInternalConnectionTds.GetDTCAddress() +25
System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) +370
System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx) +735804
System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction) +730135
System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction) +30
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +1209
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +82
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +105
System.Data.SqlClient.SqlConnection.Open() +111
System.Data.DLinq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) +38
System.Data.DLinq.SqlClient.SqlContext.get_IsServer2KOrEarlier() +31
System.Data.DLinq.SqlClient.SqlContext.Execute(Expression query) +351
System.Data.DLinq.SimpleChangeDirector.Update(TrackedObject item) +147
System.Data.DLinq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) +462
System.Data.DLinq.DataContext.SubmitChanges(ConflictMode failureMode) +229System.Data.DLinq.DataContext.SubmitChanges() +6

Note that, application server and database server are on Windows 2008 R2.


1. Start “Distributed Transaction Coordinator” (MSDTC) on application server and database server.


2. Config MSDTC over network security


3. Open fire wall for Distributed transaction coordinator (both Inbound and out bound)



4. If your DSDTC run on “Network service” account, you need to grant ACL to the MSDTC service.

This can be checked in the ACL (Access Control List) using the tool named "subinacl" and downloaded from:

The command for checking the permissions on the msdtc service is:
"subinacl.exe /Service msdtc"

-F -> Full Control
-R -> Generic Read
-W -> Generic Write
-X -> Generic eXecute
-L -> Read controL
-Q -> Query Service Configuration
-S -> Query Service Status
-E -> Enumerate Dependent Services
-C -> Service Change Configuration
-T -> Start Service
-O -> Stop Service
-P -> Pause/Continue Service
-I -> Interrogate Service
-U -> Service User-Defined Control Commands
You need permission on QSETIL for the MSDTC service.

I hope this help when you got a problem with MDSTC setting up. Please share if you have better idea or any suggestions.