Friday, August 03, 2007
Do you know that you cannot just change a normal column into an identity column in SQL Server? This is because that identity columns can only be created when creating new tables.
Now some people will say that how cannot that be? Because they are used to change using the SQL Server Management Studio (SQLSMS). What management studio will do is, it will create a temporary table with the Identity column and copy all your existing data there. Later it will delete the original table and will rename the temporary table to the original.
For example we will take Sales.Individual table in the AdventureWorks database.
Think that we need to add a column named Id as an identity column. What we will do is just type after ModifiedDate column and make the new column an identity column.
In such a case when we save the change SQLSMS will first create a temporary table which matches the new schema with the identity column.
Then it will set IDENTITY INSERT OFF and will copy the data from the original table to the newly created temporary table.
After this it will delete the original table and will rename the temporary table as the original table.
Did any one thought that the SQLSMS is doing this much of work for us without our knowledge?
There are very limited features offered in SQL Compact Edition (SQL CE). But with those offered you can do many things if you know what is there and what is not there.
Following are some views available in SQL CE which you can use to retrieve information about the tables in the database.
-- Gets the list of Columns with their associated Tables. You will be able to retrieve the column properties such as Data Type, Allow Null, Default Values, etc.
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
-- Retrieves information about the indexes contained in the database.
SELECT * FROM INFORMATION_SCHEMA.INDEXES
-- Retrieves information about the Primary Keys used in the tables.
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
-- Retrieves all the Tables in the database including the System tables.
SELECT * FROM INFORMATION_SCHEMA.TABLES
-- Retrieves all the Constrains in the database.
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
-- Retrieves all the Data Types available in the database.
SELECT * FROM INFORMATION_SCHEMA.PROVIDER_TYPES
-- If you have any referential integrity constraints in your database defined, those will be returned by this.
SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
Visit this link and find out more.
http://www.smh.com.au/news/big-questions/why-do-you-wish-a-person-many-happy-returns-of-the-day-on-theirbirthday/2005/08/25/1124562965035.html
Thursday, August 02, 2007
As I normally need several Operating Systems installed in my machine, after installing Vista also I tried the same. This made me to find, that the Vista boot loader is different to the earlier OS boot loaders. Because of this difference if you install earlier version of OS after installing Vista, you will not be able to start Vista.
These are the things which I found out.
If you need to multi boot Vista, then first install the oldest OS first. If the OSes are Windows XP, Windows 2003 and Windows Vista then install Windows XP first then Windows 2003 and finally Windows Vista.
Also note that if you install any earlier version after installing Vista you will have to fix the Vista boot loader. This can be done by booting the computer using the Vista installation CD and trying a start up recovery.
A good article is located at http://www.itnews.com.au/News/NewsStory.aspx?story=55148.
Recently I have seen that getting the MAC address of a Pocket PC network card using the .Net Compact Framework requires calling to the API 'iphlpapi.dll'. This is because the Windows Management Instrumentation (WMI) classes are not in Compact Framework. Otherwise you should have used WMI to get the MAC address.
But believe me that the process involved in Compact Framework to get the MAC address is complex. So as a suggestion I would say to use the OpenNETCF class libraries. You have to use OpenNETCF.Net and OpenNETCF to successfully get the MAC address. If you want to know what is happening underneath you also can download the OpenNETCF source code too.
OpenNETCF web site is http://www.opennetcf.com/, visit them and see.
The code for getting the MAC address of the first adapter using OpenNETCF would be,
' Creating a variable to hold all the retrieved adapters.
Dim adpcol As OpenNETCF.Net.AdapterCollection = OpenNETCF.Net.Networking.GetAdapters
If adpcol.Count = 1 Then
' adpcol.Item(0).MacAddress will be returning in Byte stream, you have to use Bit Converter to convert the stream to string.
GetDeviceMAC = BitConverter.ToString(adpcol.Item(0).MacAddress)
Else
GetDeviceMAC = "No Adapters Fetched"
End If
(You have to refer OpenNETCF.Net and OpenNETCF to make this code run.)
Have you tried Yahoo Go 2.0? It has many new additions than the earlier version of Yahoo Go. In supported areas you can even get the traffic reports and maps.
Also note that Yahoo Go 1 service will be stopped on 27th of August 2007.
Try it out at http://mobile.yahoo.com/go.
I am sure that you will like the new version with many new features.
Thursday, July 12, 2007
Recently I tried analyzing my applications' performance running on a Pocket PC. This can be achieved using .Net Compact Framework (.Net CF) Remote Performance Monitor (RPM). .Net CF RPM provides facility to monitor applications which run on devices that are connected to the computer using Active Sync or by general network.
To monitor your device application performance you have to have at least .Net CF SP1 since .Net CF RPM will come with .Net CF Service Pack 1. If you have not yet installed .Net CF SPs then download the SP2 from Microsoft using the following link.
http://www.microsoft.com/downloads/details.aspx?FamilyID=aea55f2f-07b5-4a8c-8a44-b4e1b196d5c0&DisplayLang=en
RPM consists of 3 main files.
1. NetCFRPM.exe - This is the application file which will run on your computer. This will show performance related data of the device application. This file can be found at C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\bin if you installed the Service Packs to the default location.
2. netcflaunch.exe - This will give you the connection parameters to the device. The details provided will be in handy if the device is not connected to the computer using Active Sync.
3. netcfrtl.dll - This dll facilitates the connection between the computer and the device.
You have to copy both above files to the device Windows folder (\Windows).
If you need more information on how to use .Net CF RPM visit Steven Pratschner's .Net CF weblog articles.
http://blogs.msdn.com/stevenpr/archive/2006/04/17/577636.aspx
http://blogs.msdn.com/stevenpr/archive/2007/03/08/finding-managed-memory-leaks-using-the-net-cf-remote-performance-monitor.aspx
Tuesday, July 10, 2007
After sometime the setup will request for the files which are missing (My case it asked for ExcelLR.cab). This time it will allow you to browse for the file. Be careful this will allow you only once to browse, if you select the wrong location then it will give setup fail message and you have to restart setup after pressing Abort. When browsing for the file remember to just point to the folder above the actual file not to the actual file it is requesting. (In my case I directed to the folder CD:\English\OfficeSystem2007\ULTIMATE2007\Excel.en-us.)
Tuesday, June 19, 2007
Recently I had to edit several hundred images. The point was that I had to do the same thing to all the images. So I struggled a bit to find a way to automate the process. In this way Adobe Photoshop will do the same actions to all the images without my involvement. Cool right, Ok then before explaining the way to do this I'll explain what I am going to do.
To make things simple, just imagine that you need to put some text to some images and needs to save the images as Jpeg. First things first, so open one image from your image set after starting Adobe Photoshop (Please note that I am using Adobe Photoshop CS2).
1. We need to record our actions to make Photoshop repeat them on other images.
Open the Actions pane by clicking on Window -> Actions or pressing Alt + F9.
Now create a new Set by clicking on the folder like icon at the bottom of the actions pane. When new set window comes put a name that you want. I kept the default name which was Set 1.
Then create a new Action by clicking on the small icon located little right to the New Set icon.
In the New Action window you can specify a name (Action 1), a set which this action will belong, a key combination to initiate the action and a color for the action if you want.
Now you are ready to record the actions. After double checking whether the Begin Record button (Circuler button as the second button from the left in the Action pane.) is activated, use the Horizontal Type Tool (T) to insert the required text into the image. Format the text as you want.
Since now we are done with the required actions, stop the Recording by clicking on the Stop Playing/Recording button (The left most button [rectangular] on the Action pane.) Note that not only putting text, you can do many things available in Photoshop at this point and record to Automate later.
2. Now you have successfully created the repitative tasks. What you have to do now is to perform all these tasks on the images you have.
If all the images you want to change are not in the same folder put all of them to one folder. Having images inside sub folders are ok.
Then Click on File -> Scripts -> Image Processor.
In Image Processor select the second radio button at Step 1 and click on Select Folder... button and select the folder where your images are.
Select the Step 2 as you like. (What I choose is to save the images on a folder named New Folder under my original folder)
Select the Save as Jpeg check box and type appropriate quality in Step 3 (5 in my case).
In the Step 4 select the set (Set 1) and action (Action 1) you have created above.
If you want any Copyright information you can enter them also.
After selecting everything click on Run to start the batch process.
You will be able to see Photoshop automating. How helpful is this? Was a lot to me.
Happy playing with images.
Did you try installing SP1 for Visual Studio without any errors? If not or if you are still did not start the installation some of the following details will help.
The list of things that Microsoft had fixed in Visual Studio 2005 SP1 is located at http://support.microsoft.com/?kbid=918526.
Most of the time the setup will fail due to the insufficient disk space. So before trying to install the SP1 check whether you have at least 6.3 GBs of free disk space. If you have installed VS in other partition than Windows I recommend to check for free disk space in both partitions.
Another common error which can happen when installing this is,
Error 1718. File FileName was rejected by digital signature policy.
This error is due to the Software Restriction Policies (also known as SAFER) that exist in the operating systems that came after Windows XP. This was introduced to help users avoid running unsafer files. SAFER will be used by Windows Installer to check the file signatures to confirm that the files were not tampered. Note that this error can happen when installing any large Windows installer package or Windows installer patch.
This error occurs when there is no contiguous piece of virtual memory to accommodate the file. Then the Windows installer will fail to validate the file and result in this error.
There are few things you can do to fix this,
1. You can edit the registry to make the PolicyScope value to 1 before you install the package.
2. By changing the SAFER settings to allow administrators to install the package.
3. Installing the hotfix if you are running Windows 2003,
For any of this you can get more information from Microsoft by visiting http://support.microsoft.com/?kbid=925336.
Apart from that Visual Studio SP1 release note can be found at http://support.microsoft.com/?kbid=928957.
Also I suggest that you refer Heath Stewart's articles for more installation tips. Heath is Technical Lead working at Microsoft http://blogs.msdn.com/heaths/archive/tags/VS+2005+SP1/default.aspx.
Even though I had no luck recovering the applications without formatting the system which crashed with the failed installation of Visual Studio SP1, I guess you will have much more luck after reading these articles.
Wednesday, June 13, 2007
Google Analytics is a free tool provided by Google which will analyze your web site usage. It will monitor your site and will generate reports such as
* number of users visited
* number of minutes spent on the site
* peak times
* place where users came
* what explorer used, etc.
This list is simply a short list of features. See for your self by visiting,
https://www.google.com/analytics/home.
You can log in using your GMail Id and password. Then you have to add your site to analytics and it will give you a script file which you needs to put in to your site. That's all to worry then Google will do the reporting to you.
Happy analysis.
Tuesday, June 12, 2007
-
If you are wondering a way to change the column header appearing in the .Net GridView control in run time then this post will help you to ge...
-
Last week I spent few hours to figure out why Samsung Galaxy S2 was not connecting to Samsung Kies through USB cable. I could browse phone c...