Showing posts with label SQL Server. Show all posts
Showing posts with label SQL Server. Show all posts


Top 10 Frequently asked SQL Query Interview Questions


In this article, I am giving a few cases of SQL inquiries which is frequently approached when you go for a programming interviews, having maybe a couple year experience on this field. Regardless of whether you go for Java engineer position, QA, BA, supports professional,project manager or some other specialised position, may questioner anticipate that you will answer essential inquiries from Database and SQL. It's likewise clear that in the event that you are working from maybe a couple a long time on any venture there is great possibility that you run over to deal with database, composing SQL queries to insert, refresh, erase and select records. One straightforward yet viable approach to check competitor's SQL aptitude is by soliciting these sorts from basic inquiry. They are neither  complex nor big, yet they cover all key idea a software engineer should think about SQL.
Top 10 Frequently asked SQL Query Interview Questions

Earlier articles on Interview Questions and Answers frequently asked on MVC and OOPS as below:

SQL Query Interview Questions and Answers

• How to find second highest salary of Employee by SQL?
Second highest salary of an employee can be found in many ways, one can use either SQL Join or Sub-query in order to solve this problem.
select MAX(Salary) FROM tblEmployee WHERE Salary NOT IN (select MAX(Salary) from tblEmployee);

• How to find maximum salary from each office by SQL query?

One can find the maximum salary for every office by gathering all records by DepartmentID and afterward utilizing MAX() function to compute greatest salary in each group or each office.
SELECT DeptID, MAX(Salary) FROM tblEmployee GROUP BY DeparmentID.

• Compose SQL Query to show the present date.

SQL has inbuilt function called GetDate() which returns the current timestamp. This will work in Microsoft SQL Server, different sellers like Oracle and MySQL also has comparable capacities.
SELECT GetDate(); 

• Compose a SQL Query to check whether date is of given format or not.

SQL has IsDate() function which is utilised to check passed value is a date or not of determined arrangement, it returns 1(true) or 0(false) in like manner.
SELECT  ISDATE('09/09/2017') AS "MM/DD/YYYY";

• Compose a SQL Query to print the name of the employee whose DOB is between 09/09/2016 to 09/09/2017.

This SQL question is precarious, however you can use BETWEEN condition to get all records whose date fall between two dates.
SELECT DISTINCT EmployeeName FROM tblEmployees WHERE DOB  BETWEEN ‘09/09/2016’ AND ‘09/09/2017’;

• Compose a SQL query to seek out names of employee begin with ‘T’ .

-- this will search only employee name starts from character 'T'
SELECT * FROM EmployeeName WHERE EmployeeName like 'T%';
-- OR you can also write a query to find all EmployeeName those who have character 'T' 
SELECT * FROM EmployeeName WHERE EmployeeName like '%T%';

• What is SQL Server Agent?

SQL Server agent plays a vital role within the every day tasks of a info administrator (DBA). Its purpose is to ease the implementation of tasks for the DBA, with its full-perform planning engine, that permits you to schedule your own jobs and scripts.

What is Trigger?

Trigger permits us to execute a batch of SQL code once AN insert, update or delete command is dead against a selected table. Triggers square measure special varieties of keep procedures that square measure outlined to execute mechanically in situation of or once knowledge modifications. They will be dead mechanically on the insert, delete and update operation.

• What is a Temporary table in SQL Server?

More or less, a temp table is a transitory storage structure. It implies you can utilise a temp table to store information incidentally so you can control and change it before it achieves its destination format.

• Types of Temporary Tables?

  • Local Temp Table
  • Global Temp Table
Local temporary tables can be available to current user connection and they are automatically deleted once the user connection discontinue from database. Local temp tables are used with (#) sign.
Global Temporary tables are like permanent tables in database and it is available to any user by any connection and it can be deleted only when all connections are close.


Despite the fact that requesting that hopefuls compose SQL query is a superior approach to check one's SQL abilities, some of the time it likewise pays to make theoretical inquiries just to check whether knows about fundamental ideas or not, especially amid telephone interviews.

Relevant Reading




SQL query performance improvement is an extremely intriguing topic amongst developers and the client group. Clients dependably needs a quick reaction on their data recovery actions and developers set forth their earnest attempts to give the information in the most brief time, be that as it may, there is no clear approach to characterise what is the best performance. At some point it's easily proven wrong what is good and what is bad execution of a question however generally on the off chance that you take after prescribed procedures amid development, you can give the best inquiry reaction to clients and avoid such discussions about optimal performance.


There are multiple approaches to improve SQL query performance, which falls under different classes like re-composing the SQL query, creation and use of Indexes, management of statistics, etc.
Here are some SQL best practices to ensure query optimisation:
Avoid multiple joins: Avoid writing a SQL query using multiple joins with outer joins, cross apply, outer apply and other complex sub queries.
Eliminate cursors: Remove cursors from query and opt for set-based query as it is more efficient than cursor-based.
Avoid using non-correlated Scalar Sub query: Re-write query to eliminate non-correlated scalar sub query as a separate query and store output in a variable.
Avoid Multi-statement Table Valued Functions: Avoid Multi-statement TVFs as they are costlier than inline TFVs.
Clustered and Non-Clustered index: Create Clustered and Non-clustered index in SQL. These allows SQL server to rapidly and proficiently discover rows associated with key values.
Restrict size of working data set: Analyse the tables utilised as a part of the SELECT statement to check whether you can apply filters in the WHERE clause of your statement. An example case will be when a query initially functioned well when there were just a few  thousand lines in the table. As the application grew the query slowed. The answer might be as basic as limiting the query to look  at the present month's data. When you have queries that have sub-selects, apply filters to the internal statement of the sub-selects rather than the external statements.
Eliminate unnecessary tables: Writing SQL statements is a procedure that generally takes various iterations as you write and test your SQL statements. Amid development it is conceivable that you add tables to the query that might not have any effect on the data returned by the SQL code. By deleting these unnecessary tables you decrease the degree of processing the database has to do.
Exclude prefix “sp_”: Avoid prefix “sp_” with user defined stored process name since SQL server search the user defined process in the master database before in the current session database.
UNION ALL in place of UNION: UNION ALL does not need to make the additional stride of checking the result sets and separating just the unique values, so use UNION ALL over UNION, since it doesn't need to sort the result set.

SQL Performance

Specify All Primary Keys and Foreign Key Relationships: Primary keys and foreign key relationships that are effectively characterised help ensure that you can compose optimal queries. One common consequence of incorrect relationships is adding DISTINCT clauses to dispose of excess data from result sets.
Examine Your Server Specifications and Performance: You should have a database maintenance plan with focus on index management and database reduction. Your database server should have required RAM to support SQL Server. SSIS ETL processes should run on an ETL or staging server if they are memory/CPU intensive for long periods of time.
Use Stored Procedures or Parameterized Queries: The SQL server saves execution plans for stored procedures and parameterized queries under most circumstances. This allows them to be reused on later calls.

Add Schema Name before your SQL object name
To improve your SQL query performance, you are required to apply schema name followed by  “.”
 -- dbo is here used as schema name
SELECT col_1, col_2, col_3 from dbo.tblMyTable;
-- Should Avoid T-SQL statement like this
SELECT col_1, col_2, col_3 from tblMyTable;
Best Practice by Applying SET NOCOUNT ON
After applying SET NOCOUNT ON, it is quite sure to improve your SQL statement performance. SQL Server returns no of rows affected after statements SELECT, INSERT, UPDATE and DELETE statement, after applying SET NOCOUNT ON we can stop it.
Always Apply TRY-Catch
By practising TRY-Catch, we can cut deadlocks caused by complex queries.
     { sql_statement | statement_block }  
     [ { sql_statement | statement_block } ]  


These are some quick and simple techniques for enhancing query performance for some long-running process. While these systems won't have any significant bearing to each issue you may experience but, they will help in a few cases.

Relevant Reading



From time to time and there is a need to join information from numerous tables or perspectives into one extensive data set. This might be for tables with comparable data inside a similar database or perhaps there is a need to consolidate comparative data crosswise over databases or even across servers. In this article we will analyse how to use UNION versus UNION ALL commands and how they contrast. In my previous article, I explained differences between a clustered and a non-clustered index.

Optimal Performance Comparison Union vs. Union All

The UNION command is utilised to choose the related data from two tables, which resembles a JOIN command. In any case, when utilising UNION order, all the chose columns should be of similar data type. With UNION, just distinct values are chosen.
UNION ALL command is equivalent to UNION command, aside from that UNION ALL chooses every values. Hence, it does not remove any duplicate values.
Since this does not evacuate duplicate values this procedure is speedier, but rather on the off chance that you don't need duplicate records you should utilise the UNION command.
The decision is easy if you know the answer to the Question "Would i like to take out duplicate rows when I join 2 result sets with this operation?”
On the off chance that yes, at that point use UNION . In any case, know that a UNION will make the additional stride of checking the outcome set and giving you ONLY unmistakable rows. So it will perform slower on the grounds that it needs to sort the result set.
On the off chance that its ensured that your two result sets which you need to join won't have any overlapping rows, or you couldn't care less if there are duplicate/over lapping rows, at that point you should use UNION ALL. Since UNION ALL does not need to make the additional stride of checking the result sets and separating just the unique values, so UNION ALL is generally preferable performing over UNION, since it doesn't need to sort the result set.


Creating Database Tables For Check Comparison

create table compareUnionvUnionaAll (col varchar(10))

insert into compareUnionvUnionaAll values ('technology')
insert into compareUnionvUnionaAll values ('crowds')
insert into compareUnionvUnionaAll values ('sql')
insert into compareUnionvUnionaAll values ('.net')

create table compareUnionvUnionaAll1 (col varchar(10))

insert into compareUnionvUnionaAll1 values ('android')
insert into compareUnionvUnionaAll1 values ('MEAN')
insert into compareUnionvUnionaAll1 values ('sql')
insert into compareUnionvUnionaAll1 values ('.net')
List Records From Both Tables
SELECT * FROM compareUnionvUnionaAll;
SELECT * FROM compareUnionvUnionaAll1;

Results Overview

Table Results Overview

Lets Execute Union All Command

select * from compareUnionvUnionaAll
Union ALL
select * from compareUnionvUnionaAll1

Result Overview of Union ALL Command

Result Overview of Union ALL Command

Lets Check Execution Plan For Union ALL Optimal Comparison

Check Execution Plan For Union ALL Optimal Comparison

UNION Command Results Overview

select * from compareUnionvUnionaAll
select * from compareUnionvUnionaAll1
UNION Command Results Overview

Lets Check For Union Optimal Comparison

Check For Union Optimal Comparison

I think you may notice that UNION query cost is more than UNION ALL which is marked red (63%).


UNION and UNION ALL collated as they are completely apart from each other, they both have different purposes.

Relevant Reading


What are the differences between a clustered and a non-clustered index


Hope you liked my previous article on Understanding The Relationships in SQL Server. In this article, I am going to discuss clustered and non-clustered indexes in SQL. An index is a disk structure related with a table or view that accelerates the extraction of rows from the table or view. It contains keys created from one or more columns in the table or view. These keys are stored in a B-tree structure that allows SQL Server to rapidly and proficiently discover the rows associated with the key values.
differences between a clustered and a non-clustered index

SQL supports two types of indexes:

  • Clustered index
  • Non-clustered index

Clustered index

Clustered indexes sorts and stores data in table or view based on their key values. There is only one clustered index per table and this table with clustered index is known as clustered table.

Non-Clustered index

Non-clustered indexes have a separate structure from data rows. A non-clustered index comprises of non-clustered index key values. Each one of these key value entry has a pointer to the data rows that includes the key value. It is important for columns that have repeated values.

Difference between Clustered and Non-clustered index in SQL

The difference between clustered and non-clustered indexes is one of the most asked questions during interviews.
Given below are some of the differences between clustered and non-clustered indexes:
  1. Clustered index sorts data rows whereas non-clustered doesn't.
  2. One table can have one clustered index, but there is no such condition on non-clustered index.
  3. In many databases, a clustered index is directly made on primary key.
  4. Clustered Index is more faster to non clustered index because non clustered  physically stored in index order. 
  5. Non clustered index is more faster for insert and update rather than clustered index.
  6. Clustered index is stored logical so it don't require extra storage.


That’s all on difference between clustered and non-clustered indexes in SQL. Both indexes are extremely critical in SQL.

Relevant Reading


Key Relationships: Understanding The Relationships in SQL Server

A web application is a client-server software application in which the user interface runs in a web browser.Modern web applications today interact with databases , usually with a language called SQL. SQL (Structure Query Language) is a language designed for interacting with relational database management systems (RDBMS) like SQL Server, MySQL, Oracle, Sq Lite etc. In my earlier article, I explained about how to fix SQL network error 26.


The Relational database management systems are based on relational model. The relational model for database management is an approach to managing data using a structure and language consistent with first-order predicate logic. It is a prescription for how to represent and manipulate data. The purpose of the relational model is to provide a declarative method for specifying data and queries: users directly state what information the database contains and what information they want from it, and allow database management software ensure that it describes data structures for storing the data and retrieval procedures for answering queries.
Most relational databases use the SQL data definition and query language; these systems implement what can be regarded as an engineering approximation to the relational model. A table in an SQL database scheme corresponds to a predicate variable; the contents of a table to a relation; key constraints, other constraints, and SQL queries correspond to predicates.
Database designs are closely associated with database relationships, the association among two columns in a single or more tables.In SQL server, these relationships are defined using Primary Key-Foreign Key constraints. A link is created between two tables where the primary key of one table is associated with the foreign key of another table using database relationships.Now you must be wondering what is the key? Well Key is a set of one or more columns whose combined values are unique among all occurrences in a given table. A key is the relational means of specifying uniqueness.

What are the different types of relationships in SQL?

  • One-to-One
  • One-to-Many
  • Many-to-Many

One-to-One Relationships

This is relationship between the primary and foreign keys relationships with primary key relating to foreign key only one record. A One-to-One relationship means that we have two tables that have a relationship, but that relationship only exists in such a way that any given row from Table A can have at most one matching row in Table B.
A real world example of this could be the relationship between a person and a drivers license. A person cannot have more than one driving licence and in reverse a licence cannot be owned by more than one person. This is a one-to-one relationship. Other examples could be: Person-to-mailing address , school-to-principal , person-to-passport,etc. It is called one-to-one because you can have only one record pointing to one other record.
one-to-one relationship
A generic example of a one-to-one relationship.

One-to-Many Relationships

This is the most commonly used type of relationship.This is also relationship between primary & foreign keys relationships but here primary key relating to multiple records.The One-to-Many relationship is defined as a relationship between two tables where a row from one table can have multiple matching rows in another table.
The common example of a one to many relationship is when we're talking about Users and Addresses. A User can have one or more addresses (mailing and billing address).The key here is that any one address can only belong to one user and only one user.
A one-to-many relationship
A one-to-many relationship from the perspective of TABLE B

Many-to-Many Relationships

In a Many-to-Many relationship, a record in Table B can potentially belong to several records in Table A. And vice versa, a record in Table A can potentially belong to several records in Table B. A simple many-to-many relationship includes two dimensions.
The many-to-many database relationship is used when the rows in the first table can map to multiple rows in the second table and those rows in the second table can also map to multiple different rows in the first table.

Common examples of Many-to-Many include:

  • Doctors have many patients; patients have many doctors.
  • Customers have many bank accounts; bank accounts might belong to more than one customer.
  • Students are enrolled in many courses; each course has many students.

many-to-many relationship
A typical example of a many-to-many relationship


There are, without a doubt, any number of ways in which you can relate the tables in these examples , depending on each table's role within a given database. The manner in which we use the examples here is not important; But the technique we use establish the relationship between these tables is. Once we learn these techniques, we can identify and establish relationships between the tables .

Relevant Reading


Fix SQL error: 26 - A network-related error occurred in SQL Server


This article explains how to configure an instance of the SQL Server Database Engine to listen on a particular fixed port by utilising the SQL Server Configuration Manager to fix SQL error 26. In my earlier article, I have thoroughly highlighted how to get database tables size in SQL Server. The default example of the SQL Server Database Engine responses (listens) especially on TCP port 1433. Named instances of the Database Engine and SQL Server Compact are arranged for dynamic ports. This implies they select an accessible port when the SQL Server administration is started over. When you are interacting with a named instance through a firewall, configure the Database Engine to listen on a particular port, so that the fitting port can be opened in the firewall.


Know About Transparent Data Encryption (TDE) in SQL Server


The basic purpose of encryption feature ensures the confidentiality of any digital data stored on a system. Also, the data, which is transmitted through the internet or via network of another computer. Encryption brings data in such a state that it becomes very difficult to read or analyse it. It is not possible for a user to access the encrypted data without access to decryption key/password/certificates. In the following section we will learn what is transparent data encryption (TDE) in SQL Server, the method to enable TDE and also, its advantage and disadvantages.

What Is Transparent Data Encryption

SQL Server has various built-in technologies for data protection, and one of the most essential is Transparent Data Encryption. This feature is introduced in SQL Server 2008 and present in all the later versions for bulk encryption at the database file level, which includes logs, data and backup file. Moreover, to fulfil the demands of corporate data security standards, SQL Server provides the option to enable TDE on the database level or at column/cell level. This feature is completely transparent to your application. Users can even use file level encryption, which is provided by Windows for database files. In the following section we will discuss the method to enable Transparent Data Encryption along with the advantage and disadvantages of TDE.

How To Enable Transparent Data Encryption

These are the mentioned steps you need to perform to enable TDE on a database. You can follow these steps only if, you have the permission to create a database master key and certificates in the master database and also, control permissions on the user database.
  • Firstly, you need to create a master key: It is a very symmetrical to the key that is used to create certificates and also, asymmetric keys.
  • Then, obtain or create a certificate protected by the master key: Certificates can be used for the encryption of data directly or to create symmetric keys to encrypt the database.
  • Generate a key of database encryption for the protection by the certificate.
  • Next, set the database to use encryption: Encryption, for tempdb data, is automatically enabled once you enable TDE on any of the user database. This results in the prevention of temporary objects (used by the user database) from leaking to disk unencrypted via tempdb database. System databases other than tempdb cannot currently be encrypted by using TDE.

Transparent Data Encryption (TDE) in SQL Server

It’s very essential to take backup of the keys and certificates. This restores the encrypted database on another instance of SQL Server after restoring the keys or certificates there.
Whenever you try to use a certificate without taking a backup of it, SQL Server gives a warning like this:

The certificate used for encrypting the database encrption key has not been backed up

Pros And Cons Of Transparent Data Encryption

  • Quite simple to implement.
  • No modification is needed for the application tier.
  • Is invisible to the user.
  • Works with high availability features, such as mirroring, AlwaysOn and log shipping.
  • Overall database is encrypted not only the data, which is sensitive.
  • There is a small performance impact.
  • File Stream data is not encrypted.
  • Data, which is in motion or held within the application is not encrypted


After considering the need of encryption we have discussed the Transparent data encryption (TDE), which is a feature of SQL Server. We have gone through the process to enable TDE in SQL Server. We have also learned about the advantages and disadvantages of TDE. This article provides a deep understanding of Transparent data encryption in SQL.

Suggested Reading


Fix Error 9002: Transaction Log Full For SQL Server

Overview of SQL Server Error 9002

Sometimes while working on SQL Server database we come across an error 9002. Which indicates that Transaction log for SQL Server is full. There may be several reasons through which the log file may become very large and run out of space or become full. Transaction log error 9002 generally occur when a log file is full or the disk space in which log file stored is full and cannot expand the log files further. In such circumstances, database remains online, but can only be read and no update operation can be performed. If this error occur while recovery then databases marked as resource pending.

Error 9002 msg:
The log file for database '%*Is' is full. Back up the transaction log for the database to free up some log space.
SQL Server database records all the transactions and the modifications done by each transaction. Transaction log must be regularly truncated to maintain the log space and keep it away from filling up. Some operations can be minimally logged to reduce their impact on transaction log size.
If the error 9002 occurred, when database was in recovery mode then after resolving problem ALTER DATABASE database_name SET ONLINE must be used.

How to Fix SQL Server Error 9002?

Following action can be performed for troubleshooting SQL Server transaction log full Error 9002:
  • Log backup can be done.
  • Log file can be moved to some other disk having sufficient space.
  • Log file size can be increased.
  • Freeing disk space so that the log file may grow automatically.
  • Long running transactions could be killed.
  • Adding a log file to other disk.
However, Transaction log is an essential part of database, which is required to return the database in consistent state if any system failure occurred. That’s why shrinking, deleting or moving transaction log be done after fully understanding the outcome of the action performed.
The above actions performed for troubleshooting t-sql error 9002 described below:

Transaction Log Backup

In case database uses the full or bulk-logged recovery model, and transaction log backup has not been done recently. Then there is need to take recent backup of the transaction log to free some space and supports restoring the database from a specific point. Log backup should be taken frequently to keep the log from filling up again.

Moving Log File to Another Disk

If creating enough space on the disk that containing the log file is not possible, then log file should be moved to some other disk having sufficient space. While moving log file one should never place the log file on a compressed file system. The log file can be moved by using concept of database detach and attach.
sp_detach_db executed to detach database.
sp_attach_db executed to attach database.

Increase Log File Size

As maximum size for log file is two terabytes(TB). So if space available on the disk log file size can be increased. Size can be increased manually to produce a single grow increment in case autogrow disable and a database is online. Also, we can enable autogrow by using ALTER DATABASE statement.

Freeing Disk Space

The disk containing the transaction log file can be freed by deleting or moving some files from that disk to another disk. Freeing the disk space will enlarge the log file automatically on that disc.

Add Log file to Another Disk

A new log file can be added to the database on the different disk by using ALTER DATABASE ADD LOG FILE.


We get to know about SQL Server Transaction Log Error 9002. Error 9002 in SQL Server occurred when the transaction log file is full. While moving or deleting a transaction log file the outcome of the action performed should be kept in mind. Several actions which can be performed to solve this error are discussed briefly.

Suggested Reading


Fix SQL error: 26 - A network-related error occurred in SQL Server


This article explains how to configure an instance of the SQL Server Database Engine to listen on a particular fixed port by utilizing the SQL Server Configuration Manager. The default example of the SQL Server Database Engine listens on TCP port 1433. Named instances of the Database Engine and SQL Server Compact are arranged for dynamic ports. This implies they select an accessible port when the SQL Server administration is begun. When you are interfacing with a named instance through a firewall, setup the Database Engine to listen on a particular port, so that the fitting port can be opened in the firewall. Here are given 5 different approaches to get resolution of 26 - A network-related error occurred in SQL Server. In my earlier, I have already explained how to find and delete duplicate values in SQL server.

Error Description:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) (Microsoft SQL Server, Error: -1)

Approach 1: We can run this query to view your TCP endpoints 

SELECT name, protocol_desc, type_desc, state_desc, is_admin_endpoint, port, is_dynamic_port, ip_address FROM sys.tcp_endpoints

tcp endpoints

Approach 2: Here you can check which SQL port is running on your machine.

xp_readerrorlog 0, 1, N'Server is listening on'

Approach 3: Run below command to check applications listening on ports, try this command on command line:

netstat -ap TCP

Approach 4:

i) Open Immediate Window (Windows + R) on your machine.
ii) Next type %windir%\System32\cliconfg.exe and click on Enter button.
iii) Now a new window will open, left side will show disabled port and right side will show enabled port.
disable tcp ip protocols

iv) Now Select TCP/IP disabled protocols and click on Enable button to add in enabled protocols list.

tcp ip properties

v) Now you will enabled TCP/IP protocols and click on properties, then finally you will see SQL Server port i.e. 1433

sql port 1433

Approach 5: 

  • Start from open your SQL Server Configuration Manager
  • Next click  on "SQL Server Network Configuration" and click on "Protocols for Name".
  • Now right click on TCP/IP, click on properties and make sure it is enabled.
  • Presently Select "IP Addresses" Tab - and-Go to the last passage "IP All".
  • Now enter SQL server port TCP/IP 1433
  • Remove 0 (keep totally blank) from TCP Dynamic Ports property
  • Now restart your SQL Server (Right click on SQL server Management Studio and click restart button).


Here are given 5 different approaches to resolve issue 26 - A network-related error occurred in SQL Server. Hopefully, these approaches would work to all who are looking to resolve issue 26 - A network-related error occurred in SQL Server.

Relevant Reading

SQL Server Schema Corruption Error 211: A Technical Solution


The SQL Schema is a logical collection of SQL Objects including the tables, associated with columns, its relevant entries, or other elements. While creating the schema, a user will be able to access the database in more effective manner. However, a situation occurs in SQL server that different errors occurs while accessing it. One such error is SQL server error 211, which occurs when the server table is getting updated. In the following section, we will cover reasons for corruption in the server Schema and then possible solutions to overcome this error.

Problem Statement

Suppose a user tries to update some database tables on his server and meanwhile a schema corruption error message occurs on the system. This error can exist in any version of SQL Server such as Server 2005, 2008 etc.
“Msg: 211, Level 23, State 51, Line 1 Possible schema corruption.
Msg 0, Level 20, State 0, Line 0”

Reasons Behind SQL Server Error 211

Generally, schema corruption in database evolve very rarely in the SQL Server. When this error took place, a user have to check out the main cause of the error i.e., either via SQL error Log files or some other.
There are multiple reasons where schema gets corrupted and some of them are mentioned below:
  • Due to improper computer activities by server users
  • Sudden software failure leads to Schema corruption
  • Hardware failure is the major issue behind corruption

How to Fix Corruption Error 211 in SQL Server

There are several methods to resolve this server error. A user can choose any one approach to remove or delete the schema corruption which is present within the server. Following are the all possible solutions to fix the error:
  • One of the compatible solution for resolving this error is to restore the backup files of the database. In addition, go through following scenarios that will help you in restoring backup files:
    1. If a user has backup of transaction log, then take a backup of tail-log and restore the latest backup completely with entire transaction logs that are ending with tail-log backup. In such case, the result will become in 0 data loss.
    2. If a user does not have a backup of the transaction log then, develop a new database and import more data as possible or if a user is able to determine culprit table, then drop that table & recreate it.
  • The another approach is to repair entire MDF database file and then, you will have to deploy the database again.
  • The last manual trick is to execute DBCC CHECKCATALOG command on the server screen.
When you will run DBCC command the error will be displayed. Sometimes, much exceptions might occur while executing the Transact-SQL statement through SQL users with dedicated Schema. Make sure, a user will get the suitable suggestion from SQL server database by running DBCC CHECKCATALOG syntax. With the help of this command, users will get to know the location and reason behind the SQL server error 211. However, DBCC CHECKCATALOG signifies no error, but it is not possible at all time.

Alternate Solution to Resolve SQL Server Database Corruption

The most appropriate solution for fixing SQL error code 211 is third party SQL recovery tool. It is safe and secure way to troubleshoot this error with help of following steps:
Step1: Launch SQL Recovery, Add MDF file and press Open button

Step 2: Analyze all your data of the server file and then click on Export button

Step 3: Now, select an option between two i.e., with the only Schema or with Schema & Data for exporting MDF file and click on save to start migration process

Finally, you will be able to get a healthy MDF file with help of this solution and hence, fix SQL server error 211.


Here we are ending with one of the server error, which create hurdle while accessing the SQL Server database. The best possible solutions are also discussed to overcome this possible Corruption Schema error. Well, it is recommended to first restore the backup file of server, if a user is having it. Else, you can go for other solution for resolving SQL server schema corruption error 211.

Suggested Reading


How to find and delete duplicate values in sql server


Today, I am writing about how to Find and delete duplicate values in SQL server and delete in our SQL Server database, sometimes data is inconsistent due to not proper relational integrity it results to duplicate rows in corresponding tables. Duplicate records of any database will lead to unstable application and it will not generate information according to end user expectation. I have clarified extremely known SQL Server error SQL Server Error 25 And 87.
SQL duplicate records


Software Review - Stellar Phoenix SQL Database Repair

While the database is in Suspect mode, no transactions are possible till it gets repaired. There can be a number of reasons due to which SQL database is marked as SUSPECT. These reasons include faulty hardware components, inappropriate shutdown, missing transaction log, malware attack, corruption in transaction log file, application crash and much more.

I came through the same situation where SQL Database turned to the SUSPECT mode. Analyzing the error log helped me to detect the actual reason behind the cause. This sometimes helps to bring the database to the online mode efficiently. To resolve this issue, initially, it requires changing the status of the database to EMERGENCY mode to gain read-only access as a DBA.

After doing this, I tried executing DBCC CHECKDB for executing logical and physical integrity checks. Further, repair_rebuild and repair_allow_data_loss were executed for SQL repair operation. However, during the initial attempt to gain access to the database tables, I realized that some content is missing.

Probability: Executing DBCC_CHECKDB with repair_allow_data_loss might have resulted in loss of data components and, sometime DECC CHECKDB with REPAIR_ALLOW_DATA_LOSS is not working.

Read here the complete article on this problem:

Since no recent backup is available, all deleted records need to be recovered. Then I decided to deploy Stellar Phoenix SQL Database Repair tool with the hope to get data recovered. The tool is known to integrate the following features:

     1. Repairs damaged MDF and NDF database files
     2. Recovers deleted records
     3. Recovers SQL tables, queries, rules, indexes, keys, defaults and triggers
     4. Recovers selective data from the selected database file
     5. Saves recovered files as HTML, MS SQL, CSV and XLS file formats
     6. Supports SQL Server 2016\ 2014\ 2012\ 2008 and lower versions

What does SQL Database Repair Tool Offer?

Since database encounters data loss after being recovered from the SUSPECT mode, the MS SQL database repair software was initiated for repairing the corrupt data. The performance of the tool is quite surprising as it recovered maximum contents from the inaccessible database files. Initially, the recovered contents get displayed within the tool panel.

Listed below is the complete functionality of the tool:

     1. Download, install and launch Stellar Phoenix SQL Database Repair. The tool will instruct to stop the SQL Server and copy the corrupted database to another location. This is quite practical because database connected to MS SQL Server cannot be modified as it is under the control of the Server.

Select Corrupt MDF file

     2. Click on Select Database button to upload the damaged database file: During MS SQL 2016 repair procedure, the tool provides the option to select the drive on system with the file type (i.e. MDF or NDF) and search database in that particular location. Alternatively, click on Find button if the location of the file is unknown.

     3. Select the checkbox that says “Include Deleted Records” to recover deleted data from database

     4. Click on Repair button to start the repairing procedure

     5. Select a particular component or folder from the left pane of the tool to preview the integrated items.Once the corrupt database file is selected, the tool enlists all the items saved into that particular file in the right panel of the tool
Preview of repaired data

     6. A message will be displayed that indicates “Selected MS SQL database repaired successfully”. Click on OK to save the repaired data
     7. The tool provides different options to save the repaired data that includes MS SQL, CSV, HTML and XLS
Save Repaired SQL Database

Note: The tool also provides the option to save repaired database file at a selected location on the machine. You can select destination path by clicking on the Browse button. By selecting the given checkbox, you can instruct the tool to automatically open the destination folder once the repaired file is saved.

     8. Then, click on the OK button
     9. Next, the tool offers to save the repaired data either in the New Database or Live Database

Note: You also need to provide Server credentials while saving repaired data to the SQL Server. Next, the tool will prompt you to enter the Server instance name, Authentication, and the name of Existing database. 

     10. The tool will display a message “File saved at the desired path.” Click on OK to complete the procedure
SQL Repair Versions and Purchase Information

SQL Database Repair tool offers two different versions that include: 

     - Trial edition
     - Licensed edition

The trial version of the software offers restricted access. With this version, you can test the functionality up to Step 6 mentioned in the above procedure. This version allows accessing the preview of the repaired data within the tool panel. However, the repaired data can be saved after purchasing the licensed version of the tool. 

To buy the licensed version of the tool, click on the Purchase icon available in the Help menu on the Menu Bar. Next, select the appropriate option for purchasing the software and select a payment mode. Once the payment is processed, the Serial Key will be sent to the registered email id. You can then activate the tool by using this Serial Key. 

Final Verdict
As per my experience, the functionality of Stellar Phoenix SQL Database Repair tool is accurate and efficient when tested on MS SQL 2016 database. During MS SQL 2016 repair process, the tool repaired entire data components that have become inaccessible after the database is brought online from Suspect mode. The integral contents and attributes of the tables, triggers, rules, indexes and other components remain intact, and the integrity of the database is not compromised. 

SQL Backup Repair Tool to Recover Corrupt BAK File (Review)

SQL Server is a relational database management system designed with the aim to store and retrieve data. Users can back up the SQL database in a backup file named as BAK file. This file enables the users to recover the entire SQL database in case of any damage to the database. However, the real problem arises when the BAK file gets corrupted or damaged due to certain issues. Thus, in this case it becomes necessary to recover corrupted BAK file. Now the question comes how to recover corrupt BAK file? One such solution to recover the BAK file is by using the third party utility, i.e. SQL Backup Repair Tool. This review discusses about the same based on the performed software testing.


SQL backup repair tool is designed in such a way that it helps to recover and export the .bak file into SQL server. The application maintains the integrity of data after recovery. It recovers unlimited amount of data within few moments. It can be accessible on all Windows Operating system.

Quick View

Functions Recovers the SQL Backup File
Current version 5.2
Size 6.3 MB
Interface Graphical User Interface
Windows version supported 8.1 and below editions
Price $149

Different Editions of SQL Backup Repair Tool

The tool is available in two versions, i.e. Demo and Licensed. Users can choose any version accordingly.

  • Demo Edition
Before going for the license version, it is advised to check the working of the tool with the help of the trial edition. The trial version is available free of cost and can be downloaded from the official website. However, there are some limitations, i.e. it scans, and shows preview the entire recovered .bak file but cannot store and export them.

  • Licensed Edition

  • Once the user is satisfied with the working of the demo version, the license version of the tool can be purchased from the official website. It permits users to retrieve, store, and export them into Database of SQL Server.

    Essential Features

    • Recover Complete Backup File
    • SQL backup repair tool enables the user to recover the entire data stored in the backup file like rules, triggers, tables, stored procedures, etc. The users can view the entire data before exporting the data from the file.
      Recover Complete Backup File
    • Export Data With Schema
    • The application offers two options to save the recovered data from the SQL BAK file. The user can save only Schema or can save both Schema and Data. Both the options ensure maintaining the original structure intact.
      Export Data With Schema
    • Dual Export Options
    • The users can export the recovered data directly in SQL server database or can store it in SQL server compatible scripts. The SQL script file can be later restored in SQL server accordingly.
      Dual Export Options
    • Selective Data Export
    • SQL backup repair tool allows the users to recover corrupt SQL BAK file and export selective data from SQL BAK file. The user can selectively export only the necessary data items from the SQL backup file.
      Selective Data Export
    • Supports Both Keys
    • The software provides extended support for all the elements of the database along with primary and foreign keys. The application is programmed in such a way that supports both the keys while retrieving the database.

    • Preview Data Component
    • Once the corrupt SQL backup file is recovered by the application, it allows the users to preview the data. The preview of complete data contains the tables, rules, triggers, functions, columns, Indexes, views, etc.
      Preview Data Component

    • Supports all editions of Windows
    • No file size limitation

    • Fails to back up the deleted files
    • Does not supports Mac OS.


    Considering the working performance of the SQL backup repair tool, it can be rated as 9.5/10. Although, the application fails to recover the deleted files and does not support Mac operating system. However, it efficiently recovers the highly inaccessible files. Moreover, its in-built and user-friendly interface is very helpful for users to repair corrupt SQL backup file. It supports dual mode to export the recovered data.

    Suggested Reading


    SQL Table Size: How to Get Database tables size in sql server


    In Last article, I have explained very known SQL Server Error 25 And 87, here going to fully explain how to get database tables size in SQL server. Tables stores information in rows and columns in database. I am here explaining how to check tables storage in SQL database. This is very important to check database tables storage to optimise our application performance. Explaining all steps to check our database tables storage in single command. Here, you can see how to get all database tables size with detail.

    Solution I (Shows usage one by one table)

    1. Open your SQL Server Management Studio and login into your database.
    2. Now navigate to Query Analyser (Ctrl + N).
    3. Then now write given T-SQL command select 'exec sp_spaceused ' + TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE' in query analyser.

    database table list

    4. Now copy all records from result window.
    5. Again now open a New Query (Ctrl + N) Analyser and paste all records copied from result window.
    6. Next select option from top toolbar Results to File (Ctrl + Shift + F).

    7. Now hit button Execute (F5) from top toolbar to run T-SQL command to store all database tables storage stats into a report file (.rpt).
    8. Now open file saved into your machine hard drive to check the database tables storage stats. This file contains given columns  name (name of table), rows (total rows in table), reserved (reserved space), data (stored data size), index_size (total indexed size), unused (shows unused data).

    tables space used file

    Solution II (Consolidated Database Usage)

    1. Open your SQL Server Management Studio and Right click on Database.
    2. Now navigate to Reports >> Standard Reports >> Disk Usage.

    Disk Usage Report
    3. You will see here showing consolidated data usage detail Total Space Usage, Data Files Space Usage, Transaction Log Space Usage with graphical representation.

    Total Space Usage


    Database is soul of our application so it requires well-tuned, managed and optimised to run our application superbly. Here, I have managed all steps to get database tables size in SQL server so that we can manage accordingly.

    Relevant Reading


    Fix SQL Error : SQL Server Error 25 And 87


    Error SQL Server Error 25 And 87 is very known error while connecting through MS SQL Management Studio. SQL Server Error 25 And 87 comes out commonly when we type wrong host name instead of correct host name (server name). I have already provided resolution in my earlier article SQL error of Could not open a connection to SQL Server and Login failed for user iis apppool default apppool. I have provided main key factors how we can resolve this issue through given below steps.

    Error Description

    A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 25 - Connection string is not valid) (Microsoft SQL Server, Error: 87).

    Step 1: Login Authentication Windows or SQL Server

    Check your login Authentication whether its Windows or SQL Server.

    Step 2: Use (.) (dot) instead of complete server name

    If you are using local MS sql database then you can use (.) (dot) instead of complete server name.

    Step 3: Enter Correct Host Name

    Enter your correct host name: (hostname\SQLEXPRESS) my_hostname\SQLEXPRESS (in case of SQL Server Express) or (my_hostname\mssqlserver).

    Step 4: Try localhost slash (\) then host name

    You can also try localhost slash (\) then host name, here is sample as (localhost\SQLEXPRESS) or (localhost\mssqlserver).

    Authentication Windows or SQL Server
    Fig 1: Authentication Windows or SQL-Server
    SQL Authentication using dot
    Fig 2: SQL-Authentication using dot
    Authentication Windows or SQL Server
    Fig 3: Use localhost in server-name


    Explained all primitive steps to resolve very known SQL Server Error 25 And 87. You may go one by one steps provided to resolve this issue so that take over from this SQL error.

    Relevant Reading