Tuesday, April 21, 2009

Batch or VBScript cannot run as scheduled task on Windows 2008/Vista, why?

Have you ever experienced the following problem?

The script file runs fine as a scheduled task under Windows 2003/XP but it fails on Windows 2008/Vista. If you run the script manually on the command prompt on Windows 2008/Vista, it will work perfectly without a problem. It always fails when it runs as a scheduled task regardless of logon. Task Start Failed always occurs with the default error code 2147750687.

The problem spent me almost 2 months to figure out while I was busy with something else. It happened almost 8 months ago from now when everything was being moved from Windows 2003 to Windows 2008.

The followings were the scheduled task settings on Windows 2008/Vista:

  • Run under the local Administrator account
  • Run whether user is logged on or not
  • Run with highest privileges - actually this one shouldn't be needed since it is run under the local Administrator.

Task Scheduler 2.0 took place on Windows 2008 as well as Windows Vista. There are a lot of differences from its predecessor on Windows 2003 or Windows XP. Here is one of them. When you run your script as a scheduled task, the scheduler (2.0) will create an account impersonating as the user you configure/specify for the task. The account is always resided in or runs from %systemroot%\system32\. Therefore, if your script internally uses relative path, it is going to fail 100% because of path/file not found or permission denied. For that reason, there are two options I would suggest:

  • Modify all the relative paths to be fully qualified paths or absolute paths; e.g., c:\tasks\scheduled\output.txt
  • Modify the script to take the directory as an argument when you run it; e.g., c:\tasks\scheduled\taskA.vbs c:\tasks\myappPath\.

In my case, as soon as I've fixed the relative path problems, all scripts with Task Scheduler 2.0 run like a charm.

In sum, checking if the problem is related to a relative path on your mystery task may save you from a million troubles.

Monday, April 13, 2009

How to attach MDF without LDF into SQL 2005 - Part 2

In my part 1, I mentioned to use VS.2008 to generate the data/schema script first and then import the data back to the database. Here is another way to attach MDF back to the SQL 2005 sever without LDF. In this approach, you don't need to install Visual Studio but you may need another tool for help depending on your result by running the following SQL statement.

In the following illustration, I will use AdventureWorks.mdf as an example.

Execute the following statement to attach your MDF on SQL Management Studio:

USE master
GO
CREATE DATABASE AdventureWorks
ON PRIMARY (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks.mdf')
FOR ATTACH_REBUILD_LOG
GO

If everything works fine, you may get the similar message below and have your database attached after execution:

File activation failure. The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf" may be incorrect.
New log file 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.LDF' was created.
Otherwise, you may have the following similar error:
File activation failure. The physical file name "C:\Users\<SomeUserName>\Documents\MyCode\Test\App_Data\AdventureWorks_log.ldf" may be incorrect.
The log cannot be rebuilt when the primary file is read-only.
Msg 1813, Level 16, State 2, Line 3
Could not open new database 'AdventureWorks'. CREATE DATABASE is aborted.

Depending on how or where you get your MDF file (because your MDF may not be detached properly), your LDF rebuilt may fail and so may your database attach command. In this case, you need to download and use the free tool SQL Server Express Utility (SSEUtil) to interact with the server and create the LDF file for you. This tool also works well with the full version of SQL Server 2005. There are two (2) big steps you need to perform in order to make your MDF finally available on SQL Management Studio.

Step 1: Use SSEUtil to attach MDF into the database server

First, you can copy the MDF to the location where you usually store for your SQL server if you like, e.g., C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\, or keep wherever it is now.

Then at the command prompt, run sseutil's attach database command. Before doing it, please be sure to add your path to sseutil.exe. Otherwise, you need to use its absolute path name,., e.g., c:\util\sseutil.exe.

sseutil -s .\SQLExpress -a "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks.mdfAdverureWorks
where
  • -s to specify the instance of SQL server.
  • -a to attach the database by specifying its MDF file path name.
  • The last parameter is optional. It is the name of database you want to call (e.g., AdvantureWorks).
There are several options that you can use with sseutil, like -user and -pwd to specify the usr name and its password for connection. Please see the readme file of SSEUtil for details.

or

You can use sseutil console to interact with the server.

  • To start a sseutil console, at the command prompt, type
    sseutil -c
  • You will see
    Console mode. Type 'help' for more information.
    1>
  • To attach a MDF, type
    !attach "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks.mdf" AdventureWorks
  • Type quit when you're done. This step is necessary to enable you to add the database into the sysdabases in the next step by removing the lock on file.


Step 2: Add MDF into sysdatabases
Now you have MDF attached to the server and have LDF recreated. But the database will still remain hidden from SQL Server Management Studio. In order to make it visible in SQL Server Management Studio, you need to go through the database attach wizard to add the database back to sysdatabases; or in the management studio, run either one of the following SQL statements:
  • USE master
    GO
    EXEC SP_ATTACH_DB
    @filename1=N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks.mdf',
    @dbname=N'AdventureWorks

    or

  • USE master
    GO
    CREATE DATABASE AdventureWorks
    ON PRIMARY (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks.mdf')
    FOR ATTACH
    GO
I hope that you find this guide useful.

Sunday, April 12, 2009

How to attach MDF without LDF into SQL 2005

SQL 2005 does not support DBCC REBUILD_LOG. Thus, you cannot use it to rebuild the LDF. Here is how I do to attach a database only using MDF without LDF present.

If you are only interested in attaching MDF to the SQL 2005 server without data extraction and replication, please see my part 2, which works without Visual Studio installed.

I use VS.2008 to do the trick. VS.2005 doesn't have this ability. This method probably may work in Visual Web Developer 2008 Express Edition.

Open VS.2008 and do the followings:
  1. New a Web site or use the existing one.
  2. Add the file to the project's App_Data folder.
  3. Right click this folder in the Solution Explorer and select Add Existing Item...
  4. Locate the MDF file you want to use.
  5. Then click Add.
  6. Double-click on the MDF file that you just added; it will open Server Explorer for you.
  7. Locate and right-click the MDF file data connection on Server Explorer.
  8. Select Publish to provider...
  9. Go through the wizard; when the wizard asks you where to publish, I select Script to file. It will generate a SQL file that contains all the database schema and its data.
On the SQL 2005 Server (mine is Express version),
  1. Create a database with the same name as your MDF.
  2. Run the SQL file you just created by Server Explorer in VS.2008.
Your database should be revived now!

How to print PDF background as you see on file

Have you ever experienced the following problem when you print a PDF file? The background images appear like regular text. It is not what you see on file when you view it.

You may have a PDF look like this when you view it:

PDF as View

Whenever you try to print, you will get this:

PDF Print without the Setting of Print as image

There is nothing wrong with the PDF. To fix this, use Print as image at your printer option. You may find this option at your Advanced button or tab. Then you should print something as below:

Print as Image

Note that the printer used here is a black and white laser printer, not color print.

Friday, April 10, 2009

Favorite torrent sites

Good torrent sites Bad torrent sites
isohunt.com

torrentportal.com

fulldls.com

If you go there, be careful of running out of CPU usage and you have to kill your browser in order to stop it

How to enable script debugging on Internet Explorer

If you are debugging your code with Internet Explorer, be sure to enable your setting of script debugging.

On Internet Explorer, at the menu bar,

  • Choose Tools -> Internet Options
  • Click Advanced
  • Ensure to uncheck Disable script debugging (Internet Explorer) in the Browsing category.

How to enable script debugging on Internet Explorer

Windows Firewall Settings and IIS for ASP.NET

If you are using the built-in internal development/test server in Visual Web Developer Express or VS.NET for development, testing and debugging, there is nothing you should worry about the Windows Firewall settings. However, if you would like to test your Web application over the network on a local IIS Web server, you need to have the following setting changed on Windows Firewall setting:

On Windows XP,

  • Go Control Panel -> Windows Firewall
  • Select Advanced tab
  • On the Network Connection Services selection list, select one of the connection item, e.g., Local Area Connection, Wireless Network Connection, ... and etc.
  • Then click Settings...
  • Ensure that Web Server (HTTP) is checked.

On Windows Vista,

  • Go Windows Control Panel
  • Select the Exception tab
  • Ensure that World Wide Web Services (HTTP) is checked.

Sunday, April 5, 2009

Can you be that creative?

I wish I could make one of these for fun. When I saw them, I was stunned.

Quoted from the email text I received:

These egg shells were cut with a high intensity precision Laser Beam. This gives a very good idea of what can be achieved with a Laser Beam. This gives you an idea what laser surgery performed on one's eye is all about. Is it any wonder how one's vision can be improved in just a few moments? Science is sometimes wonderful, and it's still on the frontier of gaining new knowledge. Inc redible what can be done with an eggshell and a laser beam.

Saturday, April 4, 2009

Can Your Brain Switch?

turn

Please look at it for at least 30 seconds.

Someone has sent this picture to me recently and asked me what I saw.

Well, my colleague who is left-handed saw both ways after a few seconds. I have another colleague who primarily uses her right hand also saw her turning both ways. Mine is even more interesting. At first, I only saw her turning clock-wise. But after a while, I saw her turning the other way around and then in the half way, she was bouncing back. I saw her turning back and forth a few times. Then I saw her turning completely anti-clockwise. I cannot believe my eyes. It is neat. Now I even make her turn whichever way I want or make her bounce back left and right repeatedly. How about you? Can you make her turn? Which direction do you see?

The following is the explanation of seeing her turning different way quoted from the original text. I don't know how true it is. You're the judge then. To me, I am not sure if there is a trick on the picture. I believe everyone can see her turn both ways. Please give it some time to find your way to see her turn the other way

If you see this lady turning in clockwise you are using your right brain.

If you see it the other way, you are using left brain.

Some people do see both ways, but most people see it only one way.


If you try to see it the other way and if you do see, your IQ is above 160 which is almost a genius.
Then see if you can make her go one way and then the other by shifting the brain's current?


BOTH DIRECTIONS CAN BE SEEN
This was proved at Yale University, over a 5 year study on the human brain and it's functions. Only 14% of the US population can see her move both ways.

LEFT BRAIN FUNCTIONS
uses logic
detail oriented
facts rule
words and language
present and past
math and science
can comprehend
knowing
acknowledges
order/pattern perception
knows object name
reality based
forms strategies
practical
safe
RIGHT BRAIN FUNCTIONS
uses feeling
"big picture" oriented
imagination rules
symbols and images
present and future
philosophy & religion
can "get it" (i.e. meaning)
believes
appreciates
spatial perception
knows object function
fantasy based
presents possibilities
impetuous
risk taking

Friday, April 3, 2009

Cheated by MagicJack

I ordered MagicJack (MJ) on Feb 22, 2009 Sunday when I saw their ad on TV. I am sure that I remember what the ad said because the ad was repeated several times. I wasn't making my decision right away to order it. I made it almost last minute.

What the TV ad said is: $39.95 for the device and one year free subscription. The ad sounds more attractive to say that making an order via the phone number advertised on the TV now would waive shipping and handling. The product provided money back guarantee for 30 days free trial. It also emphasized that within the trial period, the customer could send it back at their expense without paying the shipping cost. Thus, it was absolutely no risk.

Well, I was cheated. Besides $39.95, there is always $6.95 shipping and handling fee. Their representative claimed, the ad maybe said that I could get my money back including shipping cost. The S&H is not free. Okay, I listened incorrectly. The following is the page when I first activated MJ and logged in. It clearly said that S&H is free. Even now, the page is still there. But they said they don't know what I am talking about and claimed the page could be wrong. Gosh, unbelievable!

Their automatic ordering system is horrible and not easy to use. They cannot get my name right and they have my incorrect email address. There is no confirmation number when I placed an order so I wouldn't know if the order is done successfully. When I first received MJ, I called the customer service for installation. It is not as smooth as it is claimed on TV. At the same time, I inquired my account information and asked when I would receive my billing statement; the customer service replied that there is nothing to worry. When I activated MJ, I would sign up an account at the same time. The billing statement will be sent to my account later. Up to this moment, I haven't received my statement yet but my credit card was charged already on the 30th day from the date I placed an order.

I called their billing department for questions. Their real person attitude is horrible. She helped nothing but referred me back to the customer service (via live chat). My account was billed under different name and different email address. It was why I have never got my bill. Lucky them, they have my credit card right!

Chatting to their customer service twice about account data correction, they said they had informed the accounting department to have my file updated and may try re-send me the statement. An email for correction will reach me within 24-48 hours. 4 days already and I hear nothing from them. Their issue service is very bad!

Luckily their phone service is not bad - it is the only comfort.