Monday, August 26, 2013

SQL Database Backup with Query

The tail of the transaction log usually refers to the contents of the database's transaction log that has not been backed up.  Basically, every time you perform a transaction log backup, you are backing up the tail of the transaction log.

Then why all the fuss over this?  Well, the complication starts when the database's data files are no longer available, perhaps due to a media failure.  When this occurs, the next logical step is to back up the current transaction log, and apply this backup to the standby database.  You can back up the transaction log even though the data files are no longer available, using the NO_TRUNCATE option e.g.

BACKUP LOG AdventureWorks TO DISK = 'G:\Backups\AdventureWorks_log_tail.bak' WITH NO_TRUNCATE

You can then use the resulting log backup to bring the standby database to the state the database was in before the failure.

This is another good reason to place your transaction log files on different disks from the data files.  If they were on the same disks, a disk failure would prevent you from taking a backup of the transaction log.

Another complication is when your database is using the bulk-logged recovery model, and the current transaction log contains minimally logged transactions.  In this situation, a transaction log backup needs to store the modified data pages (extents).  If the data files are not available, you cannot back up the transaction log, even with the NO_TRUNCATE option.

Lastly, in SQL Server 2005 and above, every time you try to restore a database which already exists, is using the full or bulk-logged recovery models, and the transaction log contains active transactions, an error similar to the following is displayed:

Server: Msg 3159, Level 16, State 1, Line 1

The tail of the log for the database "AdventureWorks" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log.
Server: Msg 3013, Level 16, State 1, Line 1

RESTORE DATABASE is terminating abnormally.

This is just SQL Server's way of telling you that there are log records in the transaction log that have not been backed up. If the current transaction log can be discarded, you can use the REPLACE option to tell SQL Server to ignore the current transaction log e.g.

RESTORE DATABASE AdventureWorks FROM DISK = 'G:\Backups\AdventureWorks_full.bak' WITH REPLACE

Reference Page : http://www.sqlbackuprestore.com/backingupthetail.htm
Reference Site: SQLBackupRestore.com


Thursday, August 1, 2013

Microsoft Visual Studio "Debug" VS "Release" mode

When we want to deploy our web application to live/local server, then we have two options for making built – Release mode and Debug mode. Both the modes have own importance and characteristics. The details about Release mode and Debug mode are as.

Debug Mode
Developer use debug mode for debugging the web application on live/local server. Debug mode allow developers to break the execution of program using interrupt 3 and step through the code. Debug mode has below features:
  • Less optimized code
  • Some additional instructions are added to enable the developer to set a break-point on every source code line.
  • More memory is used by the source code at run-time.
  • Scripts & images downloaded by webresource.axd are not cached.
  • It has big size, and runs slower.


Release Mode
Developer use release mode for final deployment of source code on live server. Release mode Dlls contain optimized code and it is for customers. Release mode has below features:
  • More optimized code
  • Some additional instructions are removed and developer can’t set a break-point on every source code line.
  • Less memory is used by the source code at run-time.
  • Scripts & images downloaded by webresource.axd are cached.
  • It has small size, and runs fast.


There is no difference in functionality of a debug dll and a release dll. usually, when we compile code in debug mode, we have a corresponding .pdb (program database) file. This .pdb file contains information that enables the debugger to map the generated IL (intermediate language) to source code line number. It also contains the names of local variables in the source code.

The Release mode enables optimizations and generates without any debug data, so it is fully optimized. . Lots of your code could be completely removed or rewritten in Release mode. The resulting executable will most likely not match up with your written code. Because of this release mode will run faster than debug mode due to the optimizations.