27.2.10

SQL Server Installation issue

Error:

When i am installing Sql server 2005 on Windows XP ,these error come...sqlserver setup failed to compile the Managed Object Format (MOF) file C:\ProgramFiles\MicrosoftSQlserver\90\Shared\sqlmgmproviderxpsp2up.mof.To proceed see Troubleshooting an Installation of SQlserver 2005 or How to:View Sql server 2005 SetUp Log Files "in Sqlserver 2005 Setp Help documentation.

Solution:

1. We need to install the pre-requisite which will take care of providing a correct baseline to install sql server in your machine.
http://support.microsoft.com/kb/926623

2. May be due to corruption in WMI in your Windows Server. Try reinstalling WMI. There's information on how to do this at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/reinstalling_wmi.asp

Cheers,
Venkatesan Prabu .J

Group by clause in SQL Server

Scenario:

I want to fetch the count of people available in the city. How can we achieve it?

Solution: In this case, you need to use group by clause.

create table venkattable(id int,city varchar(100))
insert into venkattable values(1,'Chennai')
insert into venkattable values(2,'Chennai')
insert into venkattable values(3,'Chennai')
insert into venkattable values(4,'Bombay')

select count(*) as [Count],city from venkattable group by city

--------------------------

Count City

--------------------------

1 Bombay

3 Chennai

--------------------------

Cheers,

Venkatesan Prabu .J

26.2.10

Create windows authentication user in SQL Server

Creating/Configuring Windows authetication in SQL Server:

I got a peculiar query in one of the SQL forum and I wish to write a detailed article on this. In SQL Server, there are 3 types of authentication to enter into your database.

1. Windows authentication. (Will take the in built windows account as an authentication)
2. SQL Server authenticaiton (We need to specify the username and password to enter into the server)
3. Mixed mode authentication (Combination of windows and SQL authentication)


Goto Server Explorer -> Security -> Login ->New Login

Click on the Search button and a window will popup to search for the available users in the machine. In the below screenshot, my machine name is venkat and santhi is an administrator in my machine. I am trying to create windows authentication for this user.

Select the "Server Roles", am trying to make this use as sysadmin.

Select the database to which the user needs proper access.


On clicking "OK" the user is created.


Cheers,
Venkatesan Prabu .J

Display Open Transaction in SQL Server

Fetch open transactions in SQL Server:

We will face an usual problem in transactional queries, Open a transaction and forgot to commit or rollback. This creates lot of issues like,
1. Your transaction wont get committed or reflected.

2. Sometimes, the table will get locked and other transaction cant use the table results in deadlock.

3. You log file will be flooded and if its full, It will hang the entire database.

To get all the transactions available in the database use the below command,

DBCC OPENTRAN

BEGIN TRANSACTION
insert into VenkatSample values(100,'Karthi','Karthi')

DBCC OPENTRAN

The above command will list down the transactions pending for commit or rollback. On restarting the server, those transactions will get rollbacked in turn everything will be flushed.

Below DMV will provide the transactions happened in this particular session,


select * from sys.dm_tran_session_transactions


sys.dm_tran_database_transactions will provide all the transactions stored in the database.


Happy Learning!!!

Cheers,

Venkatesan Prabu .J

Covering Index in SQL Server

Covering Index:

Every SQL Server developers used to think about performance. They expect their queries should be fast and they want to write efficient queries. Here is a small tip to improve the performance of your queries.

First thought to improve Performance is to create or modify or rebuild the indexes. Index are special handy objects for the sql developers to improve the performance. Creating an index on the table will improve the accessibility to the tables. Retrieving the values from the table becomes too easy. There are two types of index,

1. Clustered index(On creating primary key, the index will get created)
2. Non-clustered index.

In addtion to the above indexes, we are having another index called Covering index. It's a straight foward index. Considering a query is using 5 columns frequently, In that case we can create a composite index on the table involving all the 5 columns. This will avoid table scan and this will improve the performance of your table access.
Lets see a small code snippet,

drop table VenkatSample
create table VenkatSample(id int, [name] varchar(100),name1 varchar(100))
insert into VenkatSample values(1,'Venkat','Prabu')
insert into VenkatSample values(2,'suba','Venkat')
insert into VenkatSample values(3,'Arun','Arun')
insert into VenkatSample values(4,'Lakshmi','Lakshmi')
insert into VenkatSample values(5,'Santhi','Santhi')
insert into VenkatSample values(7,'Karthi','Karthi')
insert into VenkatSample values(8,'Lakshmi','Lakshmi')
insert into VenkatSample values(3,'Santhi','Santhi')
insert into VenkatSample values(89,'Karthi','Karthi')

select * from VenkatSample
select name,max(id) from VenkatSample group by id,name




Now, am creating an index on the table to force index scan instead of table scan.

create index VenkatIndex_IX on VenkatSample(id,[name])
select name,max(id) from VenkatSample group by id,name


Drawbacks:
1. Considering, am having only 2 columns in a table. Placing a covering index on the 2 columns will not have any major effect in your query performance.

2. Over usage or more covering index will have a reverse effect in the query performance. So, we should have a clear picture on the column usage in the queries.

3. In case of adverse effect, go back to your clustered or non clustered index on specific column.

Happy Learning!!!

Thanks and Regards,
Venkatesan Prabu .J


"svchost (876) The database engine stopped" in sql server

SQL Server typical error:
Some times, Our sql server will get stopped frequently. On checking the event viewer, we will get the following error message "svchost (876) The database engine stopped".

If you got such an error message, check the following.
1. Goto run, type service.msc. You will get services console, check the sql server agent and sql server services. If its not running right click the services and start it.

2. Check for anti virus software, you should get exclusion from the antivirus.

3. Check for "Autoclose option" in the database. If you have option, its advisable to uncheck this option.

Happy Learning!!!

Regards,
Venkatesan Prabu .J