September 15, 2012

Software Development Life Cycle

 Software Development Life Cycle (SDLC) also called as the System Development Life Cycle, is a methodology followed while developing or maintaining a software application. These cycles includes all phases of development of software i.e. from its initial stage to delivery and live. Stages of a process may vary company to company policies. To develop application software, it is very important to analyze its risk factors and scope of the project, and to deliver a logical concept into real world application. Off course you need a suitable framework that can manage every stage of development. SDLC is a framework that defines the activities performed at each stage of software service project.

Types of SDLC:
  1. Waterfall Model
  2. V-Shaped Model
  3. Incremental Model
  4. Spiral model
  5. Rapid Application Model (RAD)
  6. Dynamic System Development Method (DSDM)
  7. Adaptive SDLC
  8. Tailored SDLC Model

May 19, 2012

Send SMTP mail using C# & .NET

Sending mail via web application or service, is now a days are very common. Most of user demands for email notifications or similar feature in their applications. There numerous of scripts are available to send mail. If you are using C# and .NET framework, and you want a code behind script to customise or create a dynamic mail using C# classes, you can use the following lines of code to generate and send SMTP mail.
using System.Net.Mail;

MailMessage mail = new MailMessage();
mail.From = new MailAddress("");
mail.Subject = "Test Email";
string Body = "
Hello Navin,
Your online transaction id and password are as:
User Name:
Password: user-name-password
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "";
smtp.Credentials = new System.Net.NetworkCredential("", "");
smtp.EnableSsl = true;
//smtp.Host = ConfigurationManager.AppSettings["SMTP"];

Features of MS SQL Server 2012

Microsoft has introduced SQL Server 2012 to the world and it's time for IT professionals to start to come to speed on what's new in this highly anticipated version of SQL Server. This article posted by Joey D'Antoni in his article that I liked and wish to share with you.

1. AlwaysOn Availability Groups -- This feature takes database mirroring to a whole new level. With AlwaysOn, users will be able to fail over multiple databases in groups instead of individually. Also, secondary copies will be readable, and can be used for database backups. The big win is that your DR environment no longer needs to sit idle.

2. Windows Server Core Support -- If you don't know what Windows Server Core is, you may want to come up to speed before Windows 8 (MS is making a push back to the command line for server products). Core is the GUI-less version of Windows that uses DOS and PowerShell for user interaction. It has a much lower footprint (50% less memory and disk space utilization), requires fewer patches, and is more secure than the full install. Starting with SQL 2012, it is supported for SQL Server.

3. Columnstore Indexes -- This a cool new feature that is completely unique to SQL Server. They are special type of read-only index designed to be use with Data Warehouse queries. Basically, data is grouped and stored in a flat, compressed column index, greatly reducing I/O and memory utilization on large queries.

4. User-Defined Server Roles -- DBAs have always had the ability to create custom database role, but never server wide. For example, if the DBA wanted to give a development team read/write access to every database on a shared server, traditionally the only ways to do it were either manually, or using undocumented procedures. Neither of which were good solutions. Now, the DBA can create a role, which has read/write access on every DB on the server, or any other custom server wide role.

5. Enhanced Auditing Features -- Audit is now available in all editions of SQL Server. Additionally, users can define custom audit specifications to write custom events into the audit log. New filtering features give greater flexibility in choosing which events to write to the log.

6. BI Semantic Model -- This is replacing the Analysis Services Unified Dimensional Model (or cubes most people referred to them). It's a hybrid model that allows one data model will support all BI experiences in SQL Server. Additionally, this will allow for some really neat text infographics

7. Sequence Objects -- For those folks who have worked with Oracle, this has been a long requested feature. A sequence is just an object that is a counter -- a good example of it's use would be to increment values in a table, based a trigger. SQL has always had similar functionality with identity columns, but now this is a discrete object.

8. Enhanced PowerShell Support -- Windows and SQL Server admins should definitely start brushing up on their PowerShell scripting skills. Microsoft is driving a lot of development effort into instrumenting all of their server-based products with PowerShell. SQL 2008 gave DBAs some exposure to it, but there are many more in cmdlets in SQL 2012.

9. Distributed Replay -- Once again this is answer to a feature that Oracle released (Real Application Testing). However, and in my opinion where the real value proposition of SQL Server is, in Oracle it is a (very expensive) cost option to Enterprise Edition. With SQL, when you buy your licenses for Enterprise Edition, you get everything. Distributed replay allows you to capture a workload on a production server, and replay it on another machine. This way changes in underlying schemas, support packs, or hardware changes can be tested under production conditions.

10. PowerView -- You may have heard of this under the name "Project Crescent" it is a fairly powerful self-service BI toolkit that allows users to create mash ups of BI reports from all over the Enterprise.

11. SQL Azure Enhancements -- These don't really go directly with the release of SQL 2012, but Microsoft is making some key enhancements to SQL Azure. Reporting Services for Azure will be available, along with backup to the Windows Azure data store, which is a huge enhancement. The maximum size of an Azure database is now up to 150G. Also Azure data sync allows a better hybrid model of cloud and on-premise solutions

12. Big Data Support -- I saved the biggest for last, introduced at the PASS (Professional Association for SQL Server) conference last year, Microsoft announced a partnership with Hadoop provider Cloudera. One part of this involves MS releasing a ODBC driver for SQL Server that will run on a Linux platform. Additionally, Microsoft is building connectors for Hadoop, which is an extremely popular NoSQL platform. With this announcement, Microsoft has made a clear move into this very rapidly growing space.

SQL 2012 is a big step forward for Microsoft -- the company is positioning itself to be a leader in availability and in the growing area of big data. As a database professional, I look forward to using SQL 2012 to bring new solutions to my clients.

April 19, 2012

Get last day of a given month in SQL Server

One way to find the last day of a given month is to get the next month’s first day and then get the previous day of the particular day. The complete SQL query has given below. The query is not much complex but you may need to do some date calculation here. The query can be written as:

declare @mm varchar(2), @yy varchar(4), @dd varchar(2), @date datetime
set @date=convert(datetime, '4/16/2012')
Set @mm=(Select datepart(M, @date))
Set @yy=(Select datepart(YYYY, @date))
Set @dd= (Select Day(DATEADD(month, 1, DateAdd(day, 1-day(@date), @date))-1))
Select DATENAME(DW, ''+@mm+'/'+@dd+'/'+@yy+'')


For: 4/16/2012 :- Monday
For: 5/16/2012:- Thursday

March 25, 2012

Object reference not set to an instance of an object

With C# .Net, many times you may need to typecast an object value to string. And you might have noticed that it throws null reference exception as ”Object reference not set to an instance of an object”. This is a run time exception & will occur mostly when you try to typecast a null value to string.

For example:
String userId = Session[“user”].ToString();

Above code will run fine until Session[“user”] have some value but throw exception when it has null value. You can sort out these problem by casting it through Convert.ToString().

For example:
String userId = Convert.ToString(Session[“user”]);

Now your code will not throw any such exception even when it has null value and will cast null value to empty string.

Code project reference