You are on page 1of 74

250+ SQL Queries Interview Question Answers

Posted by Mahesh Gupta on February 28, 2012 Leave a comment (0) Go to comments

SQL Interview Queries Question / Questions Answers
This is a never ending topic and there is no limit to questions that all depends on profile and interviewer. I am trying my level best to divide questionnaire based on Experience in Query Writing skills
   

5+ Years of Experience (Expert) 2-5 Years of Experience (Intermediate) 1-2 Years of Experience (Beginner) Fresher to 1 years of Experience (Fresher)

SQL Queries Interview Questions for Experts (5-10 Years of experience) Suppose, you are build a application like FACEBOOK and as a business you need to suggest Friend by displaying Friends of Friend’s. So you need to build a query that should return resultset which should have Friend Friend name. Just for reference, this is how friend table looks like,
create table Friend ( ProfileID uniqueidentifier, Name varchar(50), Friend_Name varchar(50) ) insert Friend values (NEWid(),'RAM', 'Shyam') insert Friend values ('FFCB96AD-0F16-4A77-B634-3CE1F697A3D1','RAM', 'Tony') insert Friend values ('FFCB96AD-0F16-4A77-B634-3CE1F697A3D1','RAM', 'Vibha') insert Friend insert Friend 'SAM') insert Friend 'Vibha') insert Friend 'John') insert Friend insert Friend 'SHYAM') insert Friend 'George') insert Friend 'TOM') values (NEWid(),'SHYAM', 'RAM') values ('42A6A0EC-8EE5-4611-92C7-A23B0970B463','SHYAM', values ('42A6A0EC-8EE5-4611-92C7-A23B0970B463','SHYAM', values ('42A6A0EC-8EE5-4611-92C7-A23B0970B463','SHYAM', values (NEWid(),'VIBHA', 'RAM') values ('AC40284F-4E54-495A-BF62-9701474C44C0','VIBHA', values ('AC40284F-4E54-495A-BF62-9701474C44C0','VIBHA', values ('AC40284F-4E54-495A-BF62-9701474C44C0','VIBHA',

insert Friend values (NEWid(),'TOM', 'RAM')

insert Friend values ('DE86E5EC-9748-47A0-936E-0BB6BCBCA1A0','TOM', 'DNATAG') insert Friend values ('DE86E5EC-9748-47A0-936E-0BB6BCBCA1A0','TOM', 'Reddy')

Solution
-- Query Solution declare @user varchar(50) set @user = 'RAM' SELECT f1.name, f2.friend_name as friend_of_friend FROM friend f1, friend f2 WHERE f1.name = @user AND f1.friend_name = f2.name AND NOT EXISTS (SELECT 1 FROM friend f3 WHERE f3.name = f1.name AND f3.friend_name = f2.friend_name) and f2.friend_name

<>@user

What is blocking and how would you troubleshoot it? Blocking happens when one connection from an application holds a lock and a second connection requires a conflicting lock type. This forces the second connection to wait, blocked on the first. What are the steps you will take to improve performance of a poor performing query? This is a very open ended question and there could be a lot of reasons behind the poor performance of a query. But some general issues that you could talk about would be: No indexes, table scans, missing or out of date statistics, blocking, excess recompilations of stored procedures, procedures and triggers without SET NOCOUNT ON, poorly written query with unnecessarily complicated joins, too much normalization, excess usage of cursors and temporary tables. Some of the tools/ways that help you troubleshooting performance problems are:
     

SET SHOWPLAN_ALL ON, SET SHOWPLAN_TEXT ON, SET STATISTICS IO ON, SQL Server Profiler, Windows NT /2000 Performance monitor, Graphical execution plan in Query Analyzer.

You are being you being assigned a task to move 5 million rows from one server to another using T-SQL with a linked-server. What will you consider to avoid transaction log fill up at destination server? Will prefer to use SET ROWCOUNT and a while loop to commit data in batches. What is the optimal Disk configuration for a database server and what RAID configurations would you use if budget is not a constraint? 1. RAID 1 for the OS / Applications 2. RAID 1 for the page file 3. RAID 10 for the Data file (or RAID 5 for few writes)

4. RAID 1 (or 10) for the transaction log What is a deadlock and what is a live lock? How will you go about resolving deadlocks? Deadlock is a situation when two processes, each having a lock on one piece of data, attempt to acquire a lock on the other‘s piece. Each process would wait indefinitely for the other to release the lock, unless one of the user processes is terminated. SQL Server detects deadlocks and terminates one user‘s process. A livelock is one, where a request for an exclusive lock is repeatedly denied because a series of overlapping shared locks keeps interfering. SQL Server detects the situation after four denials and refuses further shared locks. A livelock also occurs when read transactions monopolize a table or page, forcing a write transaction to wait indefinitely. Check out SET DEADLOCK_PRIORITY and "Minimizing Deadlocks" in SQL Server books online. Also check out the article Q169960 from Microsoft knowledge base. What is blocking and how would you troubleshoot it? Blocking happens when one connection from an application holds a lock and a second connection requires a conflicting lock type. This forces the second connection to wait, blocked on the first. Read up the following topics in SQL Server books online: Understanding and avoiding blocking, Coding efficient transactions. What are statistics, under what circumstances they go out of date, how do you update them? Statistics determine the selectivity of the indexes. If an indexed column has unique values then the selectivity of that index is more, as opposed to an index with non-unique values. Query optimizer uses these indexes in determining whether to choose an index or not while executing a query. Some situations under which you should update statistics: 1. If there is significant change in the key values in the index 2. If a large amount of data in an indexed column has been added, changed, or removed (that is, if the distribution of key values has changed), or the table has been truncated using the TRUNCATE TABLE statement and then repopulated 3. Database is upgraded from a previous version Look up SQL Server books online for the following commands: UPDATE STATISTICS, STATS_DATE, DBCC SHOW_STATISTICS,

CREATE STATISTICS, DROP STATISTICS, sp_autostats, sp_createstats, sp_updatestats Write SQL query to find the products which have continuous increase in sales every year considering the following Schema and tell which optimized query? Table Structure
CREATE TABLE PRODUCTS ( PRODUCT_ID PRODUCT_NAME ); CREATE TABLE SALES ( SALE_ID PRODUCT_ID YEAR Quantity PRICE );

INTEGER, VARCHAR(30)

INTEGER, INTEGER, INTEGER, INTEGER, INTEGER

This table, contains the following rows,

Solution
SELECT PRODUCT_NAME FROM ( SELECT P.PRODUCT_NAME, S.QUANTITY LEAD(S.QUANTITY,1,0) OVER ( PARTITION BY P.PRODUCT_ID ORDER BY S.YEAR DESC ) QUAN_DIFF FROM PRODUCTS P, SALES S WHERE P.PRODUCT_ID = S.PRODUCT_ID )A GROUP BY PRODUCT_NAME HAVING MIN(QUAN_DIFF) >= 0;

Note – This Solution is using a LEAD fn, which is available in SQL Server 2012. Based on above mentioned tables, Write two alternative SQL query to find the products which does not have sales at all and identify, which is more optimized.
-- OPTION 1 SELECT P.PRODUCT_NAME FROM PRODUCTS P

ON WHERE

LEFT OUTER JOIN SALES S (P.PRODUCT_ID = S.PRODUCT_ID) S.QUANTITY IS NULL

-- OPTION 2 SELECT P.PRODUCT_NAME FROM PRODUCTS P WHERE P.PRODUCT_ID NOT IN (SELECT DISTINCT PRODUCT_ID FROM SALES); -- Option 3 SELECT P.PRODUCT_NAME FROM PRODUCTS P WHERE NOT EXISTS (SELECT 1 FROM SALES S WHERE S.PRODUCT_ID = P.PRODUCT_ID);

Based on above mentioned tables,Write two alternatives query to select the top product sold in each year?
-- OPTION 1 SELECT P.PRODUCT_NAME, S.YEAR, S.QUANTITY FROM ( SELECT YEAR, MAX(QUANTITY) QUAN FROM SALES GROUP BY YEAR )A, SALES S, PRODUCTS P WHERE A.YEAR = S.YEAR AND A.QUAN = S.QUANTITY AND S.PRODUCT_ID = P.PRODUCT_ID; -- Option 2 SELECT PRODUCT_NAME, YEAR FROM ( SELECT P.PRODUCT_NAME, S.YEAR, RANK() OVER ( PARTITION BY S.YEAR ORDER BY S.QUANTITY DESC ) RNK FROM PRODUCTS P, SALES S WHERE P.PRODUCT_ID = S.PRODUCT_ID ) A WHERE RNK = 1;

OUTPUT

Based on above mentioned tables structure, Write a query to find the products whose quantity sold in a year should be greater than the average quantity sold across all the years??

Based on above mentioned tables structure, Write a query to compare the products sales of "IPhone" and "Samsung" in each year?

Could you please some items which you may see in an execution plan indicating the query is not optimized. 1. 2. 3. 4. 5. Index Scan or Table Scan Hash Joins Thick arrows (indicating large work tables) Parallel streams (Parallelism) Bookmark lookup (or key lookup)

What structure can you implement for the database to speed up table reads? Follow the rules of DB tuning we have to: 1] properly use indexes ( different types of indexes) 2] properly locate different DB objects across different tablespaces, files and so on. 3] create a special space (tablespace) to locate some of the data with special datatype ( for example CLOB, LOB and …) SQL Queries Interview Questions for Intermediate (2-5 Years of experience) What is Lock Escalation?

Lock escalation is the process of converting a lot of low level locks (like row locks, page locks) into higher level locks (like table locks). Every lock is a memory structure too many locks would mean, more memory being occupied by locks. To prevent this from happening, SQL Server escalates the many fine-grain locks to fewer coarse-grain locks. Lock escalation threshold was definable in SQL Server 6.5, but from SQL Server 7.0 onwards it‘s dynamically managed by SQL Server. What is a bookmark lookup? When a non clustered index is used for the seek and the data needed was not at the leaf level. What is a key lookup? Same as bookmark lookup, when a non clustered index is used for the seek and the data needed was not at the leaf level. What new indexes are introduced in SQL Server onwards ? - Spatial - XML Could you please describe some properties / Facts about NULL during comparisons. NULL can not used with any comparing operator, NULL
  

NULL will never be true or false NULL can not compared as =,<>,<,>, <=,<= etc. NILL is always equates will NULL only

What are cursors? Explain different types of cursors. What are the disadvantages of cursors? How can you avoid cursors? Cursors allow row-by-row processing of the resultsets. Types of cursors: Static, Dynamic, Forward-only, Keyset-driven. See books online for more information.

Disadvantages of cursors: Because we know cursor doing roundtrip it will make network line busy and also make time consuming methods. First of all select query gernate output and after that cursor goes one by one so roundtrip happen.Another disadvange of cursor are ther are too costly because they require lot of resources and temporary storage so network is quite busy. Moreover, there are restrictions on SELECT statements that can be used with some types of cursors. Most of the times, set based operations can be used instead of cursors. Here is an example: If you have to give a flat hike to your employees using the following criteria: Salary between 30000 and 40000 — 5000 hike Salary between 40000 and 55000 — 7000 hike Salary between 55000 and 65000 — 9000 hike In this situation many developers tend to use a cursor, determine each employee‘s salary and update his salary according to the above formula. But the same can be achieved by multiple update statements or can be combined in a single UPDATE statement as shown below: UPDATE tbl_emp SET salary = CASE WHEN salary BETWEEN 30000 AND 40000 THEN salary + 5000 WHEN salary BETWEEN 40000 AND 55000 THEN salary + 7000 WHEN salary BETWEEN 55000 AND 65000 THEN salary + 10000 END Another situation in which developers tend to use cursors: You need to call a stored procedure when a column in a particular row meets certain condition. You don‘t have to use cursors for this. This can be achieved using WHILEloop, as long as there is a unique key to identify each row. Could you please explain, how to use Cursors ? 1. 2. 3. 4. Declare a CURSOR OPEN a CURSOR FETCH data in CURSOR finally close CURSOR

Suppose, we are building a UAT environment and we need to build a algorithm to export exact 50% of the rows (I means to say alternative rows either even or ODD). So write a query to select prime number rows from table.
select profileid,name,friend_name from (select f.*, row_number() over (order by profileid asc) rn from Friend f) a where rn%2=1;

Testing Script
create table Friend ( ProfileID uniqueidentifier, Name varchar(50), Friend_Name varchar(50) ) insert Friend values (NEWid(),'RAM', 'Shyam') insert Friend values ('FFCB96AD-0F16-4A77-B634-3CE1F697A3D1','RAM', 'Tony') insert Friend values ('FFCB96AD-0F16-4A77-B634-3CE1F697A3D1','RAM', 'Vibha') insert Friend insert Friend 'SAM') insert Friend 'Vibha') insert Friend 'John') insert Friend insert Friend 'SHYAM') insert Friend 'George') insert Friend 'TOM') values (NEWid(),'SHYAM', 'RAM') values ('42A6A0EC-8EE5-4611-92C7-A23B0970B463','SHYAM', values ('42A6A0EC-8EE5-4611-92C7-A23B0970B463','SHYAM', values ('42A6A0EC-8EE5-4611-92C7-A23B0970B463','SHYAM', values (NEWid(),'VIBHA', 'RAM') values ('AC40284F-4E54-495A-BF62-9701474C44C0','VIBHA', values ('AC40284F-4E54-495A-BF62-9701474C44C0','VIBHA', values ('AC40284F-4E54-495A-BF62-9701474C44C0','VIBHA',

insert Friend values (NEWid(),'TOM', 'RAM') insert Friend values ('DE86E5EC-9748-47A0-936E-0BB6BCBCA1A0','TOM', 'DNATAG') insert Friend values ('DE86E5EC-9748-47A0-936E-0BB6BCBCA1A0','TOM', 'Reddy') go select profileid,name,friend_name from (select e.*, row_number() over (order by profileid asc) rn from Friend e) a where rn%2=1;

What is the system function to get the current user’s user id? USER_ID(). Also check out other system functions like USER_NAME(), SYSTEM_USER, SESSION_USER, CURRENT_USER, USER, SUSER_SID(),

HOST_NAME(). What is precedence constraints and can you name some? Precedence constraints are used in DTS / SSIS packages to move from one task to another. We have three type of precedence constraints 1. Success 2. Failure 3. Completion What sort of resource contention we can have, which can cause database to run slow? 1. 2. 3. 4. 5. 6. 7. 8. CPU bottleneck Memory bottleneck Network IO bottleneck Disk IO bottleneck Paging File (process trimming) Lock contention Corrupt index Recompilation

Can you have a nested transaction? Yes, SQL Server do support nested transaction up to 32 levels. Check out BEGIN TRAN, COMMIT, ROLLBACK, SAVE TRAN and @@TRANCOUNT Which is faster a Table Scan, or a Clustered Index Scan? Same speed in case a table has a clustered index that it‘s always show index scan instead of table scan. What is an extended stored procedure? Can you instantiate a COM object by using TSQL? An extended stored procedure is a function within a DLL (written in a programming language like C, C++ using Open Data Services (ODS) API) that can be called from T-SQL, just the way we call normal stored procedures using theEXEC statement. See books online to learn how to create extended stored procedures and how to add them to SQL Server. Yes, you can instantiate a COM (written in languages like VB, VC++) object from T-SQL by using sp_OACreatestored procedure. Also see books online for sp_OAMethod, sp_OAGetProperty, sp_OASetProperty, sp_OADestroy. What is recompilation?

When the cached execution plan for a query cannot be used so the procedure recompiles. What is parallelism? SQL Server can perform a query or index operation in parallel by using several operating system threads, the operation can be completed quickly. When a single query runs of multiple CPUs is known as query parallelism. What is the default query threshold for parallelism? The query optimizer decides to utilize multiple SPIDS running on different processors to query / transfer data. Default threshold is 5 seconds. What are the main reasons for statement recompilation ? Recompilation happen mainly because of
   

underlying statistics change DDL changes within the procedure. The parameters the procedure was compiled with vary from the recently passed in parameters. The query plan was flushed from cache.

How will you handle exceptions in SQL Server programming By using TRY-CATCH constructs, What is difference between Co-related sub query and nested sub query? Correlated subquery runs once for each row selected by the outer query. It contains a reference to a value from the row selected by the outer query. Nested subquery runs only once for the entire nesting (outer) query. It does not contain any reference to the outer query row. For example, Correlated Subquery: select e1.empname, e1.basicsal, e1.deptno from emp e1 where e1.basicsal = (select max(basicsal) from emp e2 where e2.deptno = e1.deptno) Nested Subquery: select empname, basicsal, deptno from emp where (deptno, basicsal) in (select deptno, max(basicsal) from emp group by deptno)

Let’s assume, you are working for online product selling company like AMAZON, now you need to write two alternatives query to return the firstname, lastname and the most recent OrderID for all customers.
-- OPTION 1 SELECT o.OrderID,c.FirstName,c.LastName FROM Orders o JOIN Customers c ON o.CustomerID = c.CustomerID WHERE OrderDate = (SELECT MAX(OrderDate) FROM Orders WHERE CustomerID = o.CustomerID -- OPTION 2 SELECT c.FirstName,c.LastName,o.OrderNumber FROM Orders o JOIN ( SELECT MAX(OrderDate) AS MaxOrderDate, custid FROM orders GROUP BY custid ) o_2 ON o.custid = o_2.custid AND o.orderdate = o_2.MaxOrderDate JOIN customers c ON c.CustID = o.CustID

What tools do you use for performance tuning? Query Analyzer, Profiler, Index Wizard, Performance Monitor What are extended stored procedures? How can you execute a DOS command from SQL or through SQL query by using xp_cmdshell?
exec xp_cmdshell 'dir c:\*.exe'

What sp_MSforeachtable does ? You can use sp_MSforeachtable undocumented stored procedure to rebuild all indexes in your database. Try to schedule it to execute during CPU idle time and slow production periods. sp_MSforeachtable @command1=‖print ‗?‘ DBCC DBREINDEX (‗?‘)‖ How do I prevent SQL injection in my applications? Check my previous post, ―How to secure against SQL injection―. What you do when a particular query is slow? 1. Run SQL profiler and determine if abnormal amounts of IO or CPU is used. 2. Run profiler to determine if recompilation is a factor. 3. Update the statistics.

4. Check the execution plan Can we convert the column datatype in to different datatype in a exiting table ? YES, we can change data type of column for an exiting table too but we need to make sure the new datatype is compateble with old datatype. For Example, we can not convert a column which store varchar values and has textual data in it to a int type data type. Following TSQL can be used to modify (alter) a exiting column alter table tablename alter Column Columnname newdatatype SQL Queries Interview Questions for Beginner (1-2 Years of experience) In what sequence SQL statement are processed? The clauses of the select are processed in the following sequence 1. 2. 3. 4. 5. 6. 7. FROM clause WHERE clause GROUP BY clause HAVING clause SELECT clause ORDER BY clause TOP clause

Can we write a distributed query and get some data which is located on other server and on Oracle Database ? SQL Server can be lined to any server provided it has OLE-DB provider from Microsoft to allow a link. E.g. Oracle has a OLE-DB provider for oracle that Microsoft provides to add it as linked server to SQL Server group. If we drop a table, does it also drop related objects like constraints, indexes, columns, defaults, Views and Stored Procedures ? YES, SQL Server drops all related objects, which exists inside a table like, constraints, indexes, columns, defaults etc. BUT dropping a table will not drop Views and Stored Procedures as they exists outside the table.
How would you determine the time zone under which a database was operating?

Can we add identity column to decimal datatype? YES, SQL Server support this

What is the Difference between LEFT JOIN with WHERE clause & LEFT JOIN with no WHERE clause ? OUTER LEFT/RIGHT JOIN with WHERE clause can act like an INNER JOIN if not used wisely or logically. What are the Multiple ways to execute a dynamic query ? EXEC sp_executesql, EXECUTE()

What is the Difference between COALESCE() & ISNULL() ? ISNULL accepts only 2 parameters. The first parameter is checked for NULL value, if it is NULL then the second parameter is returned, otherwise it returns first parameter. COALESCE accepts two or more parameters. One can apply 2 or as many parameters, but it returns only the first non NULL parameter, How do you generate file output from SQL? While using SQL Server Management Studio or Query Analyzer, we have an option in Menu BAR.QUERTY >> RESULT TO >> Result to FILE How do you prevent SQL Server from giving you informational messages during and after a SQL statement execution? SET NOCOUNT OFF By Mistake, Duplicate records exists in a table, how can we delete copy of a record ?
;with T as ( select * , row_number() over (partition by Emp_ID order by Emp_ID) as rank from employee ) delete from T where rank > 1

WHAT OPERATOR PERFORMS PATTERN MATCHING? Pattern matching operator is LIKE and it has to used with two attributes 1. % means matches zero or more characters and 2. _ ( underscore ) means matching exactly one character What’s the logical difference, if any, between the following SQL expressions?

-- Statement 1 SELECT COUNT ( * ) FROM Employees -- Statement 2 SELECT SUM ( 1 ) FROM Employees

They‘re the same unless table Employee table is empty, in which case the first yields a onecolumn, one-row table containing a zero and the second yields a one-column, one-row table "containing a null." Is it possible to update Views? If yes, How, If Not, Why? Yes, We can modify views but a DML statement on a join view can modify only one base table of the view (so even if the view is created upon a join of many tables, only one table, the key preserved table can be modified through the view). Could you please name different kinds of Joins available in SQL Server ?
 

OUTER JOIN – LEFT, RIGHT, CROSS, FULL ; INNER JOIN

How important do you consider cursors or while loops for a transactional database? would like to avoid cursor in OLTP database as much as possible, Cursors are mainly only used for maintenance or warehouse operations. What is a correlated sub query? When a sub query is tied to the outer query. Mostly used in self joins. What is faster, a correlated sub query or an inner join? Correlated sub query. You are supposed to work on SQL optimization and given a choice which one runs faster, a correlated sub query or an exists? Exists Can we call .DLL from SQL server? YES, We can call .Dll from SQL Server. Please check my previous post, ―How to call a .dll file in SQL Server‖ What are the pros and cons of putting a scalar function in a queries select list or in the where clause? Should be avoided if possible as Scalar functions in these places make the query slow down dramatically. What is difference between truncate and drop statement ?

Check my previous post difference between TRUNCATE & DELETE What is difference between truncate and delete statement ? Check my previous post difference between TRUNCATE & DELETE What are user defined data types and when you should go for them? User defined data types let you extend the base SQL Server data types by providing a descriptive name, and format to the database. Take for example, in your database, there is a column called Flight_Num which appears in many tables. In all these tables it should be varchar(8). In this case you could create a user defined data type calledFlight_num_type of varchar(8) and use it across all your tables. See sp_addtype, sp_droptype in books online. Can You Explain Integration Between SQL Server 2005 And Visual Studio 2005 ? This integration provide wider range of development with the help of CLR for database server because CLR helps developers to get flexibility for developing database applications and also provides language interoperability just like Visual C++, Visual Basic .Net and Visual C# .Net. The CLR helps developers to get the arrays, classes and exception handling available through programming languages such as Visual C++ or Visual C# which is use in stored procedures, functions and triggers for creating database application dynamically and also provide more efficient reuse of code and faster execution of complex tasks. We particularly liked the error-checking powers of the CLR environment, which reduces run-time errors Please check my previous post, ―Can we call .DLL from SQL server?‖ You are being assigned to create a complex View and you have completed that task and that view is ready to be get pushed to production server now. you are supposed to fill a deployment form before any change is pushed to production server. One of the Filed in that deployment form asked, “Expected Storage requirement”. What all factors you will consider to calculate storage requirement for that view ? Very tricky, View, doesn‘t takes space in Database, Views are virtual tables. Storage is required to store Index, incase you are developing a indexed view. What is Index, cluster index and non cluster index ? Clustered Index:- A Clustered index is a special type of index that reorders the way records in the table are physically stored. Therefore table may have only one clustered index.NonClustered Index:- A Non-Clustered index is a special type of index in which the logical order of the index does not match the physical stored order of the rows in the disk. The leaf nodes of a non-clustered index does not consists of the data pages. instead the leaf node contains index rows. Write down the general syntax for a SELECT statements covering all the options.

Here‘s the basic syntax: (Also checkout SELECT in books online for advanced syntax). SELECT select_list [INTO new_table_] FROM table_source [WHERE search_condition] [GROUP BY group_by__expression] [HAVING search_condition] [ORDER BY order__expression [ASC | DESC] ] What is a join and explain different types of joins? Joins are used in queries to explain how different tables are related. Joins also let you select data from a table depending upon data from another table. Types of joins: INNER JOINs, OUTER JOINs, CROSS JOINs OUTER JOINs are further classified as LEFT OUTER JOINS, RIGHT OUTER JOINS and FULL OUTER JOINS. For more information see pages from books online titled: "Join Fundamentals" and "Using Joins". What is OSQL utility ? OSQL is command line tool which is used execute query and display the result same a query analyzer but everything is in command prompt. What Is Difference Between OSQL And Query Analyzer ? OSQL is command line tool which executes query and display the result same a query analyzer but query analyzer is graphical and OSQL is a command line tool. OSQL is quite useful for batch processing or executing remote queries.

What Is Cascade delete / update ? CASCADE allows deletions or updates of key values to cascade through the tables defined to have foreign key relationships that can be traced back to the table on which the modification is performed. What is a self join? Explain it with an example. Self join is just like any other join, except that two instances of the same table will be joined in the query. Here is an example: Employees table which contains rows for normal employees as well as managers. So, to find out the managers of all the employees, you need a self join. CREATE TABLE emp ( empid int, mgrid int, empname char(10) ) INSERT emp SELECT 1,2,‘Vyas‘ INSERT emp SELECT 2,3,‘Mohan‘ INSERT emp SELECT 3,NULL,‘Shobha‘ INSERT emp SELECT 4,2,‘Shridhar‘ INSERT emp SELECT 5,2,‘Sourabh‘ SELECT t1.empname [Employee], t2.empname [Manager] FROM emp t1, emp t2 WHERE t1.mgrid = t2.empid Here is an advanced query using a LEFT OUTER JOIN that even returns the employees without managers (super bosses) SELECT t1.empname [Employee], COALESCE(t2.empname, ‗No manager‘) [Manager] FROM emp t1 LEFT OUTER JOIN

emp t2 ON t1.mgrid = t2.empid What are some of the join algorithms used when SQL Server joins tables. 1. Loop Join (indexed keys unordered) 2. Merge Join (indexed keys ordered) 3. Hash Join (non-indexed keys) What is maximum number of tables that can joins in a single query ? 256, check SQL Server Limits What is Magic Tables in SQL Server ? The MAGIC tables are automatically created and dropped, in case you use TRIGGERS. SQL Server has two magic tables named, INSERTED and DELETED These are mantained by SQL server for there Internal processing. When we use update insert or delete on tables these magic tables are used.These are not physical tables but are Internal tables.When ever we use insert statement is fired the Inserted table is populated with newly inserted Row and when ever delete statement is fired the Deleted table is populated with the delete d row.But in case of update statement is fired both Inserted and Deleted table used for records the Original row before updation get store in Deleted table and new row Updated get store in Inserted table. Can we disable a triger?, if yes HOW ? YES, we can disable a single trigger on the database by using ―DISABLE TRIGGER triggerName ON <<TableName>>‖ we also have an option to disable all the trigger by using, ―DISABLE Trigger ALL ON ALL SERVER‖ Why you need indexing? where that is Stored and what you mean by schema object? For what purpose we are using view? We can‘t create an Index on Index.. Index is stoed in user_index table. Every object that has been created on Schema is Schema Object like Table, View etc. If we want to share the particular data to various users we have to use the virtual table for the Base table. So that is a view. Indexing is used for faster search or to retrieve data faster from various table. Schema containing set of tables, basically schema means logical separation of the database. View is crated for faster retrieval of data. It‘s customized virtual table. we can create a single view of

multiple tables. Only the drawback is..view needs to be get refreshed for retrieving updated data. What the difference between UNION and UNIONALL? Union will remove the duplicate rows from the result set while Union all does‘nt. Which system table contains information on constraints on all the tables created ? USER_CONSTRAINTS, system table contains information on constraints on all the tables created What are different Types of Join? 1. Cross Join A cross join that does not have a WHERE clause produces the Cartesian product of the tables involved in the join. The size of a Cartesian product result set is the number of rows in the first table multiplied by the number of rows in the second table. The common example is when company wants to combine each product with a pricing table to analyze each product at each price. 2. Inner Join A join that displays only the rows that have a match in both joined tables is known as inner Join. This is the default type of join in the Query and View Designer. 3. Outer Join A join that includes rows even if they do not have related rows in the joined table is an Outer Join. You can create three different outer join to specify the unmatched rows to be included: 1. Left Outer Join: In Left Outer Join all rows in the first-named table i.e. "left" table, which appears leftmost in the JOIN clause are included. Unmatched rows in the right table do not appear. 2. Right Outer Join: In Right Outer Join all rows in the second-named table i.e. "right" table, which appears rightmost in the JOIN clause are included. Unmatched rows in the left table are not included. 3. Full Outer Join: In Full Outer Join all rows in all joined tables are included, whether they are matched or not. 4. Self Join This is a particular case when one table joins to itself, with one or two aliases to avoid confusion. A self join can be of any type, as long as the joined tables are the same. A self join is rather unique in that it involves a relationship with only one table. The common example is when company has a hierarchal reporting structure whereby one member of staff reports to another. Self Join can be Outer Join or Inner Join. What is Data-Warehousing? 1. Subject-oriented, meaning that the data in the database is organized so that all the data elements relating to the same real-world event or object are linked together; 2. Time-variant, meaning that the changes to the data in the database are tracked and recorded so that reports can be produced showing changes over time; 3. Non-volatile, meaning that data in the database is never over-written or deleted, once committed, the data is static, read-only, but retained for future reporting.

4. Integrated, meaning that the database contains data from most or all of an organization‘s operational applications, and that this data is made consistent. What is a live lock? A live lock is one, where a request for an exclusive lock is repeatedly denied because a series of overlapping shared locks keeps interfering. SQL Server detects the situation after four denials and refuses further shared locks. A live lock also occurs when read transactions monopolize a table or page, forcing a write transaction to wait indefinitely. How SQL Server executes a statement with nested subqueries? When SQL Server executes a statement with nested subqueries, it always executes the innermost query first. This query passes its results to the next query and so on until it reaches the outermost query. It is the outermost query that returns a result set. How do you add a column to a existing table? ALTER TABLE Department ADD (AGE, NUMBER); Can one drop a column from a table? YES, to delete a column in a table, use ALTER TABLE table_name DROP COLUMN column_name Which statement do you use to eliminate padded spaces between the month and day values in a function TO_CHAR(SYSDATE,’Month, DD, YYYY’) ? To remove padded spaces, you use the "fm" prefix before the date element that contains the spaces. TO_CHAR(SYSDATE,‘fmMonth DD, YYYY‘) Which operator do you use to return all of the rows from one query except rows are returned in a second query? You use the EXCEPT operator to return all rows from one query except where duplicate rows are found in a second query. The UNION operator returns all rows from both queries minus duplicates. The UNION ALL operator returns all rows from both queries including duplicates. The INTERSECT operator returns only those rows that exist in both queries. Check my previous post, ―How to use EXCEPT Operator‖ for learn more. How you will create a column alias? The AS keyword is optional when specifying a column alias. In what sequence SQL statement are processed? The clauses of the subselect are processed in the following sequence (DB2): 1. FROM clause 2. WHERE clause 3. GROUP BY clause 4. HAVING clause 5. SELECT clause 6. ORDER BY clause 7. FETCH FIRST clause

How can we determine what objects a user-defined function depends upon? sp_depends system stored procedure or query the sysdepends system table to return a list of objects that a user-defined function depends upon
SELECT DISTINCT so1.name, so2.name FROM sysobjects so1 INNER JOIN sysdepends sd ON so1.id = sd.id INNER JOIN sysobjects so2 ON so2.id = sd.depid WHERE so1.name = '<<OBJECT_NAME>>'

What is lock escalation ? A query first takes the lowest level lock possible with the smallest footprint (row-level). When too many rows are locked (requiring too much RAM) the lock is escalated to a range or page lock. If too many pages are locked, it may escalate to a table lock. What are the main differences between #temp tables and @table variables and which one is preferred ? 1. SQL Server can create column statistics on #temp tables 2. Indexes can be created on #temp tables 3. @table variables are stored in memory up to a certain threshold. For many other question and more information on temporary table and variable, check my previous post. What are Checkpoint In SQL Server ? When we done operation on SQL SERVER that is not commited directly to the database.All operation must be logged in to Transaction Log files after that they should be done on to the main database.CheckPoint are the point which alert Sql Server to save all the data to main database if no check point is there then log files get full we can use Checkpoint command to commit all data in the SQL SERVER.When we stop the SQL Server it will take long time because Checkpoint is also fired. Why we use OPENXML clause? OPENXML parses the XML data in SQL Server in an efficient manner. It‘s primary ability is to insert XML data to the DB. Can we store we store PDF files inside SQL Server table ? YES, we can store this sort of data using a blob datatype. Can we store Videos inside SQL Server table ? YES, we can store Videos inside SQL Server by using FILESTREAM datatype, which was introduced in SQL Server 2008.

Can we hide the definition of a stored procedure from a user ? YES, while creating stored procedure we can use WITH ENCRYPTION which will convert the original text of the CREATE PROCEDURE statement to an encrypted format. What are included columns when we talk about SQL Server indexing? Indexed with included columns were developed in SQL Server 2005 that assists in covering queries. Indexes with Included Columns are non clustered indexes that have the following benefits:

Columns defined in the include statement, called non-key columns, are not counted in the number of columns by the Database Engine. Columns that previously could not be used in queries, like nvarchar(max), can be included as a non-key column. A maximum of 1023 additional columns can be used as non-key columns.

What is an execution plan? How would you view the execution plan? An execution plan is basically a road map that graphically or textually shows the data retrieval methods chosen by the SQL Server query optimizer for a stored procedure or ad-hoc query and is a very useful tool for a developer to understand the performance characteristics of a query or stored procedure since the plan is the one that SQL Server will place in its cache and use to execute the stored procedure or query. From within Query Analyzer is an option called "Show Execution Plan" (located on the Query drop-down menu). If this option is turned on it will display query execution plan in separate window when query is ran again. Explain UNION, MINUS, UNION ALL, INTERSECT ? INTERSECT returns all distinct rows selected by both queries. MINUS – returns all distinct rows selected by the first query but not by the second. UNION – returns all distinct rows selected by either query UNION ALL - returns all rows selected by either query, including all duplicates What is ROWID ?

SQL Queries Interview Questions for Fresher’s (Starters) How to find second highest value of a column in a table?

-- Option 1 SELECT max(SAL) FROM EMP WHERE SAL < ( SELECT max(SAL) FROM EMP);

-- Option 2 SELECT max( SAL) FROM EMP WHERE SAL NOT IN( SELECT max(SAL) FROM EMP );

-- Option 3 SELECT max(value1) FROM ( SELECT value1 FROM val EXCEPT SELECT max(value1) FROM val );

-- Option 4 SELECT * FROM EMP WHERE SAL IN (SELECT MAX(SAL) FROM EMP WHERE SAL <> (SELECT MAX(SAL) FROM EMP))

What is the difference between DDL and DML commands? Can you name some examples of each? DDL Statements are data definition language commands. Examples are CREATE, ALTER and DROP. where as DML Statements are data manipulation language commands. Examples are INSERT, UPDATE and DELETE. What are the advantages of using Views ?
       

Views restrict access to the data because the view can display selective columns from the table. Views provide data independence for ad hoc users and application programs. One view can be used to retrieve data from several tables. Views provide groups of users access to data according to their particular criteria. Views provides an additional level of table security, by restricting access to a predetermined set of rows and columns of a table. Hide data complexity. Simplify commands for the user. Present the data in a different perpecetive from that of the base table. Store complex queries.

What is query optimization?

Query optimization is the part of the query process in which the database system compares different query strategies and chooses the one with the least expected cost What are the main components of Database management systems software. The database management system software includes components for storage management, concurrency control, transaction processing, database manipulation interface, database definition interface, and database control interface. What is transaction? A transaction is a collection of applications code and database manipulation code bound into an indivisible unit of execution. it consists from: BEGIN-TRANSACTION Name Code END TRANSACTION Name What is schema? A schema is collection of database objects of a Use. How to find structure of an existing table ? What is difference between alias and synonym ? Alias is a temporary used with in a query but Synonyms are permanent in a database. Are Views automatically updated, when we insert / update the base table ? YES, Views always displays the updated data and there is no need to manually update them. Views doesn‘t store any data they refer base table for data. What is the difference between a "where" clause and a "having" clause? "Where" is a kind of restiriction statement. You use where clause to restrict all the data from DB.Where clause is using before result retrieving. But Having clause is using after retrieving the data.Having clause is a kind of filtering command. Can you name some other alternatives to SQL Server ? Informix, Oracle, DB2, MySQL What is the basic form of a SQL statement to read data out of a table? The basic form to read data out of table is ‗SELECT * FROM table_name; ‗ An answer: ‗SELECT * FROM table_name WHERE xyz= ‗whatever‘;‘ cannot be called basic form because of WHERE clause. What structure can you implement for the database to speed up table reads? Follow the rules of DB tuning we have to: 1] properly use indexes ( different types of indexes) 2] properly locate different DB objects across different tablespaces, files and so

on.3] create a special space (tablespace) to locate some of the data with special datatype ( for example CLOB, LOB and …) What are the tradeoffs with having indexes? 1. Faster selects, slower updates. 2. Extra storage space to store indexes. Updates are slower because in addition to updating the table you have to update the index. What is a "join"? Join used to connect two or more tables logically with or without common field. What is normalization? "Denormalization"? Why do we sometimes want to denormalize? Normalizing data means eliminating redundant information from a table and organizing the data so that future changes to the table are easier. Denormalization means allowing redundancy in a table. The main benefit of denormalization is improved performance with simplified data retrieval and manipulation. This is done by reduction in the number of joins needed for data processing. What is a "constraint"? A constraint allows you to apply simple referential integrity checks to a table. There are four primary types of constraints that are currently supported by SQL Server: PRIMARY/UNIQUE – enforces uniqueness of a particular table column. DEFAULT – specifies a default value for a column in case an insert operation does not provide one. FOREIGN KEY – validates that every value in a column exists in a column of another table. CHECK – checks that every value stored in a column is in some specified list. Each type of constraint performs a specific type of action. Default is not a constraint. NOT NULL is one more constraint which does not allow values in the specific column to be null. And also it the only constraint which is not a table level constraint. What types of index data structures can you have? An index helps to faster search values in tables. The three most commonly used index-types are: – B-Tree: builds a tree of possible values with a list of row IDs that have the leaf value. Needs a lot of space and is the default index type for most databases. – Bitmap: string of bits for each possible value of the column. Each bit string has one bit for each row. Needs only few space and is very fast.(however, domain of value cannot be large, e.g. SEX(m,f); degree(BS,MS,PHD) – Hash: A hashing algorithm is used to assign a set of characters to represent a text string such as a composite of keys or partial keys, and compresses the underlying data. Takes longer to build and is supported by relatively few databases. What is a "primary key"? A PRIMARY INDEX or PRIMARY KEY is something which comes mainly from database theory. From its behavior is almost the same as an UNIQUE INDEX, i.e. there may

only be one of each value in this column. If you call such an INDEX PRIMARY instead of UNIQUE, you say something about your table design, which I am not able to explain in few words. Primary Key is a type of a constraint enforcing uniqueness and data integrity for each row of a table. All columns participating in a primary key constraint must possess the NOT NULL property. What is a "functional dependency"? How does it relate to database table design? Functional dependency relates to how one object depends upon the other in the database. for example, procedure/function sp2 may be called by procedure sp1. Then we say that sp1 has functional dependency on sp2. What is a "trigger"? Triggers are stored procedures created in order to enforce integrity rules in a database. A trigger is executed every time a data-modification operation occurs (i.e., insert, update or delete). Triggers are executed automatically on occurance of one of the data-modification operations. A trigger is a database object directly associated with a particular table. It fires whenever a specific statement/type of statement is issued against that table. The types of statements are insert,update,delete and query statements. Basically, trigger is a set of SQL statements A trigger is a solution to the restrictions of a constraint. For instance: 1.A database column cannot carry PSEUDO columns as criteria where a trigger can. 2. A database constraint cannot refer old and new values for a row where a trigger can. What is "index covering" of a query? Index covering means that "Data can be found only using indexes, without touching the tables" What types of join algorithms can you have? What is a SQL view? An output of a query can be stored as a view. View acts like small table which meets our criterion. View is a precomplied SQL query which is used to select data from one or more tables. A view is like a table but it doesn‘t physically take any space. View is a good way to present data in a particular format if you use that query quite often. View can also be used to restrict users from accessing the tables directly. How do you implement one-to-one, one-to-many and many-to-many relationships while designing tables? One-to-One relationship can be implemented as a single table and rarely as two tables with primary and foreign key relationships. One-to-Many relationships are implemented by splitting the data into two tables with primary key and foreign key relationships. Many-toMany relationships are implemented using a junction table with the keys from both the tables forming the composite primary key of the junction table. It will be a good idea to read up a database designing fundamentals text book.

What’s the difference between a primary key and a unique key? Both primary key and unique enforce uniqueness of the column on which they are defined. But by default primary key creates a clustered index on the column, where are unique creates a non-clustered index by default. Another major difference is that, primary key does not allow NULLs, but unique key allows one NULL only. What is bit data type and what’s the information that can be stored inside a bit column? Bit data type is used to store Boolean information like 1 or 0 (true or false). Until SQL Server 6.5 bit data type could hold either a 1 or 0 and there was no support for NULL. But from SQL Server 7.0 onwards, bit data type can represent a third state, which is NULL Define candidate key, alternate key, composite key. A candidate key is one that can identify each row of a table uniquely. Generally a candidate key becomes the primary key of the table. If the table has more than one candidate key, one of them will become the primary key, and the rest are called alternate keys. A key formed by combining at least two or more columns is called composite key. What are defaults? Is there a column to which a default cannot be bound? A default is a value that will be used by a column, if no value is supplied to that column while inserting data.IDENTITY columns and timestamp columns can‘t have defaults bound to them. See CREATE DEFAULT in books online. What is a transaction and what are ACID properties? A transaction is a logical unit of work in which, all the steps must be performed or none. ACID stands for Atomicity, Consistency, Isolation, Durability. These are the properties of a transaction. For more information and explanation of these properties, see SQL Server books online or any RDBMS fundamentals text book. Explain different isolation levels An isolation level determines the degree of isolation of data between concurrent transactions. The default SQL Server isolation level is Read Committed. Here are the other isolation levels (in the ascending order of isolation): Read Uncommitted, Read Committed, Repeatable Read, Serializable. See SQL Server books online for an explanation of the isolation levels. Be sure to read about SET TRANSACTION ISOLATION LEVEL, which lets you customize the isolation level at the connection level. CREATE INDEX myIndex ON myTable (myColumn) What type of Index will get created after executing the above statement? Non-clustered index. Important thing to note: By default a clustered index gets created on the primary key, unless specified otherwise.

What is the maximum size of a row? 8060 bytes. Do not be surprised with questions like ‗What is the maximum number of columns per table‘. Check out SQL Server books online for the page titled: "Maximum Capacity Specifications". What are constraints? Explain different types of constraints. Constraints enable the RDBMS enforce the integrity of the database automatically, without needing you to create triggers, rule or defaults. Types of constraints: NOT NULL, CHECK, UNIQUE, PRIMARY KEY, FOREIGN KEY For an explanation of these constraints see books online for the pages titled: "Constraints" and "CREATE TABLE", "ALTER TABLE" What is an index? What are the types of indexes? How many clustered indexes can be created on a table? I create a separate index on each column of a table. what are the advantages and disadvantages of this approach? Indexes in SQL Server are similar to the indexes in books. They help SQL Server retrieve the data quicker.  Indexes are of two types. Clustered indexes and non-clustered indexes. When you create a clustered index on a table, all the rows in the table are stored in the order of the clustered index key. So, there can be only one clustered index per table. Non-clustered indexes have their own storage separate from the table data storage. Non-clustered indexes are stored as Btree structures (so do clustered indexes), with the leaf level nodes having the index key and it‘s row locater. The row located could be the RID or the Clustered index key, depending up on the absence or presence of clustered index on the table. If you create an index on each column of a table, it improves the query performance, as the query optimizer can choose from all the existing indexes to come up with an efficient execution plan. At the same time, data modification operations (such as INSERT, UPDATE, DELETE) will become slow, as every time data changes in the table, all the indexes need to be updated. Another disadvantage is that, indexes need disk space, the more indexes you have, more disk space is used. What are triggers? How many triggers you can have on a table? How to invoke a trigger on demand? Triggers are special kind of stored procedures that get executed automatically when an INSERT, UPDATE or DELETEoperation takes place on a table. In SQL Server 6.5 you could define only 3 triggers per table, one for INSERT, one for UPDATE and one for DELETE. From SQL Server 7.0 onwards, this restriction is gone, and you could create multiple triggers per each action. But in 7.0 there‘s no way to control the order in which the triggers fire. In SQL Server 2000 you could specify which trigger fires first or fires last using sp_settriggerorder

Triggers cannot be invoked on demand. They get triggered only when an associated action (INSERT, UPDATE, DELETE) happens on the table on which they are defined. Triggers are generally used to implement business rules, auditing. Triggers can also be used to extend the referential integrity checks, but wherever possible, use constraints for this purpose, instead of triggers, as constraints are much faster. Till SQL Server 7.0, triggers fire only after the data modification operation happens. So in a way, they are called post triggers. But in SQL Server 2000 you could create pre triggers also. Search SQL Server 2000 books online forINSTEAD OF triggers. Also check out books online for ‗inserted table‘, ‗deleted table‘ and COLUMNS_UPDATED() There is a trigger defined for INSERT operations on a table, in an OLTP system. The trigger is written to instantiate a COM object and pass the newly inserted rows to it for some custom processing. What is the difference between oracle, sql and sql server ?
  

Oracle is based on RDBMS. SQL is Structured Query Language. SQL Server is another tool for RDBMS provided by MicroSoft.

Difference between Stored Procedure and Trigger?
 

we can call stored procedure explicitly. but trigger is automatically invoked when the action defined in trigger is done. ex: create trigger after Insert on this trigger invoked after we insert something on that table. Stored procedure can‘t be inactive but trigger can be Inactive. Triggers are used to initiate a particular activity after fulfilling certain condition.It need to define and can be enable and disable according to need.

  

What is the advantage to use trigger in your PL? A trigger is a database object directly associated with a particular table. It fires whenever a specific statement/type of statement is issued against that table. The types of statements are insert,update,delete and query statements. Basically, trigger is a set of SQL statements A trigger is a solution to the restrictions of a constraint. For instance: 1.A database column cannot carry PSEUDO columns as criteria where a trigger can. 2. A database constraint cannot refer old and new values for a row where a trigger can. Triggers are fired implicitly on the tables/views on which they are created. There are various advantages of using a trigger. Some of them are:

Suppose we need to validate a DML statement(insert/Update/Delete) that modifies a table then we can write a trigger on the table that gets fired implicitly whenever DML statement is executed on that table.

Another reason of using triggers can be for automatic updation of one or more tables whenever a DML/DDL statement is executed for the table on which the trigger is created. Triggers can be used to enforce constraints. For eg : Any insert/update/ Delete statements should not be allowed on a particular table after office hours. For enforcing this constraint Triggers should be used. Triggers can be used to publish information about database events to subscribers. Database event can be a system event like Database startup or shutdown or it can be a user even like User loggin in or user logoff.

What is a SQL view? An output of a query can be stored as a view. View acts like small table which meets our criterion. View is a pre-complied SQL query which is used to select data from one or more tables. A view is like a table but it doesn‘t physically take any space. View is a good way to present data in a particular format if you use that query quite often. View can also be used to restrict users from accessing the tables directly. What is GROUP BY? The GROUP BY keywords has been added to SQL because aggregate functions (like SUM) return the aggregate of all column values every time they are called. Without the GROUP BY functionality, finding the sum for each individual group of column values was not possible. What are defaults? Is there a column to which a default can’t be bound? A default is a value that will be used by a column, if no value is supplied to that column while inserting data. IDENTITY columns and timestamp columns can‘t have defaults bound to them. What does COMMIT do? Saving all changes made by DML statements List all the possible values that can be stored in a BOOLEAN data field. There are only two values that can be stored in a BOOLEAN data field: -1(true) and 0(false). What is the highest value that can be stored in a BYTE data field? The highest value that can be stored in a BYTE field is 255. or from -128 to 127. Explain SQL SELECT example:
select j.FILE_NUM from DB_name.job j, DB_name.address a where j.JOB_TYPE ='C' AND j.COMPANY_NAME = 'TEST6' AND j.OFFICE_ID = '101' AND j.ACTIVE_IND = 'Y' AND a.ADDRESS_STATUS_ID = 'H'

AND a.OFFICE_ID = '101' AND a.FILE_NUM = j.FILE_NUM order by j.FILE_NUM;

J and A are aliases for table names. this is outer join select statement from two tables. Describe some Group Functions that you know
   

The COUNT function tells you how many rows were in the result set. SELECT COUNT(*) FROM Employees The AVG function tells you the average value of a numeric column. SELECT MAX(SALARY) FROM Employees The MAX and MIN functions tell you the maximum and minimum value of a numeric column. SELECT MIN(SALARY) FROM Employees The SUM function tells you the sum value of a numeric column. SELECT SUM(SALARY) FROM Employees

What does DML stand for? DML is Data Manipulation Language statements. (SELECT) What does DDL stand for? DDL is Data Definition Language statements. (CREATE) What does DCL stand for? DCL is Data Control Language statements. (COMMIT) What is SQL comments and how to inser comments in SQL statements? SQL comments are introduced by two consecutive hyphens (–) and ended by the end of the line. What is the difference between a return parameter and an OUTPUT parameter? A return parameter is always returned by a stored procedure,and it is meant to indicate the success or failure of the stored procedure. The return parameter is always an INT data type. An OUTPUT parameter is designated specifically by the developer, and it can return other types of data, such as characters and numeric values. You can use multiple OUTPUT parameters in a stored procedure,whereas you can only use one return parameter. What is the minimum number of tables required to perform a SQL join? One, you can join a table as a self join too, consider an example of employee table which has a column EMPID, NAME and Mgr ID and we need to display EMPID, name of the employee and MGRID of that employee,

How can present Summarizing Data in SQL Server? CUBE or ROLLUP operators to generate summary reports. Both are part of the GROUP BY Clause What is Service Broker Its a message queuing technology in SQL to helps developer to develop fully ditributed applications.Its helps to send asynchronous, transactional message.Its also helps to send message to another database. What is SQL Profiler SQL Profiler is a graphical tool thats helps administrator to capture events in instance of Microsoft Sql Server. We can get all the events that done on file or on SQL Table.We can filter the events that we need for us.We can also get the subset of event that we need. Why not to use prefix sp in store procedure Thses prefix is used by master database so SQL server first searches in the master database and then in the current session database. So its time taken is much higher master database causes extra overhead and also get wrong result in case of same name in master database. What is the advantage of SET NOCOUNT ON When we use SELECT and DML statement in SQL .SQL server return a message which specify the number of rows effected by these statements. This information helps coder when they are debugging the code other wise this is not useful we can disable this by typing SET NOCOUNT ON. It is very helpful when we are doing on store procedure contains lots of statements,loops its also increase in performance and boost network traffic. Why to use SQL Sequence and its drawbacks In SQL Sequences are used for creating sequence numbers without any overhead of locking but one drawback is that when any of transaction is rolled back the sequence number is lost. What are the different ways of moving data from database There are different methods of moving data
         

BACKUP and RESTORE detach and attach Attaching databases Replication DTS BCP logshipping INSERT…SELECT SELECT…INTO SQL Server 2012 HADR

creating INSERT scripts to generate data.

How to get top two records without Top keyword set rowcount 2 select column,column1 from tblEmployeeMaster What do you mean by KEYSET Cursor KEYSET Cursor uses the set of keys that are primary key or we can saw uniquely identify the cursor‘s rows. SQL Server uses a table in tempdb to store keyset. The KEYSET cursor helps to updates non key values from being made through this cursor, but when inserts made by other users are not visible. Updates nonkey values made by other users are visible as the owner scrolls around the cursor, but updates key values made by other users are not visible. Difference between Set and Select
   

Set is a ANSI standard for variable assignment. Select is a Non-ANSI standard when assigning variables. Set – We can assign only one variable at a time Select – We can assign multiple variable at a time

When assigning from a query that returns more than one value, SET will fail with an error. When assigning from a query that returns more than one value, SELECT will assign the last value returned by the query and hide the fact that the query returned What is Network Packet Size in SQL NPS(Network Packet Size) is the size of the TDS (tabular data stream) packets used to communicate between your applications and your relational database engine and default packet size is 4 kilobytes and its manily depends on network packet size configuration option. What are Sparse Columns in Sql Server2008 Sparse column is a tool that helps to reduce amount of physical storage used in a database. These are ordinary columns that have an optimized storage for all null values.SPARSE column are better at managing NULL and ZERO values in SQL Server. It does not take any space in database at all. Can we create non primary key as cluster index Yes we can do this on non-primary key column but that column must be unique and the primary key column of that table must have non-clustered index because there is one cluster index in table. By default primary key column contains clustered index so its recommended to create such non-primary key clustered index column first and then should create primary key column so in such case the primary key on that column will be with non-clustered. But its highly recommended to create primary key column as a clustered indexed column.

Could you please give some Optimization Tips in writing SQL Queries ?
            

Always try to use views and stored procedures instead of doing work with heavy queries. Make a habit to use constraints instead of triggers whenever it is possible. When you need n number of row from database try to use top keyword or SET ROWCOUNT statement Always use table variables in place of temporary tables. Avoid Union and try to use UNION ALL statement. Always avoid using the DISTINCT clause, whenever possible. Always try to avoid using SQL Server cursors. Always try to avoid the HAVING clause. Do not use select count(*) to get number of rows Try to include SET NOCOUNT ON statement into your stored procedures to stop the message indicating the number of rows affected by a T-SQL statement. Always use file system to store large binary objects and use the file path in database. Sometimes we may have to apply more than one sub queries in our main query. Try to minimize the number of sub query block in your query. Try to use column name instead of *

Why Group BY and Order By clause are so expensive These both of these requires Temporary table to process the result of query so these are expensive What is the default value of int datatype The default value of all datatype is NULL Is it possible to create foreign key without primary key Yes we can do this by the help of Unique Key constraint . Means table must have atleast Primary key or Unique key. Does SQL Server supports Merge statement ? YES, This is newly introduced feature in SQL Server 2008 What is Trace frag in SQL The Trace Tags is used to set temporary setting of specific server characteristics. DBCC TRACEON is the command to set the trace flags. Once activated, trace flag will be in effect until the server is restarted. Trace frags are frequently used for diagnosing performance issues.For example, the trace flag 3205 is used for disabling hard compression for tape drives, when an instance of SQL Server starts. What is Pivot and Unpivot We can sort, count, and total the data stored in one table or spreadsheet and create a second table displaying the summarized data with the Pivot tables. The PIVOT operator turns the

values of a specified column into column names, effectively rotating a table. UNPIVOT table is reverse of PIVOT Table. Can we call a Trigger in store procedure A Trigger is also a special kind of Stored Procedure which will fire automatically on the happening of an event like before or after insert, update or delete. We cannot call a trigger explicitly from a Stored Procedure. Why we use SET ROWCOUNT in Sql This syntax is used in SQL Server to stop processing the query after the specified number of rows are returned. Why we use Unicode In Sql server Unicode data is stored using the nchar, nvarchar,and ntext data types in SQL Server. Use these data types for columns that store characters from more than one character set. The SQL Server Unicode data types are based on the National Character data types in the SQL-92 standard. What is SQL Cache Dependency in ASP.NET 2.0 SQL cache dependencies is new technique in ASP.NET 2.0 which can automatically invalidate a cached data object just like a Dataset. when the related data is modified in the database. So for instance if you have a dataset which is tied up to a database tables any changes in the database table will invalidate the cached data object which can be a dataset or a data source.To enable this we need a syntax that is as follows:- aspnet_regsql -ed -E -d Northwind PL SQL Interview Queries Question Answer / Questions Answers If this page has HELPED you somehow then do

You can also join me here to get daily SQL Server Tutorial / NEWS

SQL Server Health Check
SQL Server Health Check, checks all aspects of your SQL Server environment in terms of best practices in the areas of Performance, Configuration, Security & Disaster Recovery. SQL Server Health Check identifies which aspects of your SQL Server need help and provide you with the guidance and understanding needed to remedy those problems against your business needs. SQL Server Health Check answers business queries, which you may have

Is the database and operating system properly tuned?

    

Is my server meeting all best database best practices ? Are there sufficient hardware resources for the various applications? Have the proper indexes been created? Are critical database administrative utilities run regularly? Does the staff have the requisite skills needed to maintain an efficient system?

What is Included in a SQL Server Health Check? Here are some of the many points that a SQL Server Health Check covers. SQL Server Configuration
 

Confirm that SQL Server is installed and configured correctly Confirm that hardware resources are adequate and configured correctly

SQL Server Performance
    

Identify badly performing code and suggest ways to improve it. Identify hardware bottlenecks Identify blocking or deadlocking activities Identify database and/or application design issues. Identify current systems / OS issues

SQL Server Security
 

Assess vulnerability to sql injection and other attacks Suggest security best practices in relation to your needs

SQL Server Disaster Recovery Plan
 

Design backup plan to meet your business needs Suggest failover options

Scalability of Your SQL Server Installation
 

Evaluate the ability of your current system to scale to projected levels. Suggest options for high availability

For more information contact us.

SQL Server High Availability Questions
Posted by Mahesh Gupta on March 17, 2011 Leave a comment (1) Go to comments Question: How replication set up impacts to application performance ? Answer: No issues with latency. You might see it based on throughput. Never seen replication cause the blocking, but user‘s cause it.

Question: have you seen issues with an index rebuild causing a delay in the apply? Answer: Yes, you may see an impact Question: How you normally initialize the transactional replication backup or snapshot? Answer: Normally, snapshot as the start. Question: what happens when the primary database is restored during replication / log shipping? Answer: Restoring the publisher during replication depends on when the backup was. If you‘ve replicated you‘ll have to reinitialize. Maybe restoring the publisher from the subscriber. Restoring a primary in log shipping, you can just pause the agent and restore log files form the secondary and apply to the primary, or just switch roles. Question: is it possible to setup logshipping from SQL 2000 to SQL 2008, 2008 as Standby ReadOnly . Answer: 2005 to 2008, yes, 2000 to 2008 yes Question: Question regarding the licensing for log shipping – assuming the secondary is only used for this purpose, are SQL Server licenses required for it and the monitor server? Answer: You do have to have a licensed copy on all the servers. Check with Microsoft to be sure. Question: What if during the process of setting up log shipping, one log file goes missing.. Answer: There can‘t be holes in the trail. You‘d have to go back and re-sync. Question: Can we have more two or more subscribers for a log shipped DB. Answer: Not prior to Denali. But in Denali AlwaysOn, yes. Question: what about LS between 2008 to 2005, is it compatible. Answer: As a general rule, you can‘t restore databases or logs down, meaning to previous versions. Question: Can a DB have both Mirroring as wells as Log shipping? Answer: Yes Question: Can you force the mirror to catch up using asynchronous mode without switching it to synchronous to catch up?

Answer: No Question: How about setting up mirroring from an active/passive SQL cluster? Answer: Yes, its work as it‘s on virtual instance Question: peer to peer replication: Does it require SQL Enterprise or will Standard work? Answer: Peer to Peer is Enterprise only. One thing to point out is that if you set up mirroring in an environment that does not use sql authentication you need to use certificates and set it up manually through TSQL If this page has HELPED you somehow then do

10 SQL Server Disaster Recovery Solutions
Posted by Mahesh Gupta on February 7, 2012 Leave a comment (0) Go to comments What is SQL Server Disaster? Disaster is an event that makes continuation of normal functions impossible. In business terms, any incident which result affects business or stops business transactions is a disaster for example
    

Orders can not be placed, think about Amazon where every business transaction is online and customer is unable to place an order Accounting activities freeze, Think about a PayPal for a minute, where money can not be disbursed Data is unavailable - Think about Google for a minute where Data or even a index is not available for a minute. Electronic Communications Halt – Think about system is not available Unable to access Decision-critical Information

Any of above event cost companies and effect their revenue, market share and credibility. What are the major potentials disaster Scenarios that company might face ? There are n number of disaster Scenarios but here are quick list of most potential scenarios cases
   

Human error – System owner manually made some mistake System Failure / Malfunction – Services Hangs / not responding Virus Attack – Any sort of virus attack which result denial of service Operational Errors – any sort or operational error.

   

Accidents – 09/11 is history Natural Disaster- Japan earthquake and tsunami Hardware Failure – System Crashed / Hard Drive not responding Sabotage – killing competition

What is Disaster Recovery ? Disaster recovery is the process to continue business work after any disaster scenario What is BCP (Business Continuity Plan) / DR (Disaster Recovery) Plan? DR Plan / BCP plan is a formal document, which describes how a business is going to deal with potential disasters and will continue to resume operations. For example, in case Server 1 goes down or application is unable to get a response for 10 seconds from Server 1 then application should connect to Alternative Server. What is the difference between High Availability vs Disaster recovery ?

What are the top SQL Server Disaster Recovery Solutions ? SQL Server is an enterprise solution which provides various solution to cover DR scenarios. A disaster recovery includes money and solution depends on how much money you want to spend on DR solution. Here is list of solutions, which range from few $$$ to million dollar solutions.

Solution 1 – SQL Server HADR
―HADR‖ is a high-availability and disaster recovery solution introduced in SQL Server 2012. This is the only solution which provides both high availability as well as data recovery in case of a disaster on any nature.

PROS
     

Multi-Database Failover Multiple Secondary‘s Active Secondary‘s Fast Client Connection Redirection Windows Server Core Multisite Clustering

CONS
  

Expensive Solution Complicated / Complex Environment Woks only with SQL Server 2012 and Window Server 2008 onward only

If you want get answer, ―How to Implement HADR‖, please check my previous post, ―How to Implement HADR – Step by Step Guide with screenshots‖

Solution 2 – SQL Server Clustering
This is one of the best High Availability industry proven Solution. As part of this solution, be bind SQL Services with two Physical Servers which shares the common storage in such a way that SQL Services will automatically failover to other available node if a hardware failure or a software failure occurs on first node.

PROS

    

HIGH availability solution as Services were always available Supported by all versions of SQL Server starting from SQL Server Automatic Failover No loss of Data Coupled with SAN as shared array for storage

CONS
   

This is not a DR solution - Clustering doesn‘t cover disk array (Storage) failure as all clustered nodes shares the same storage. Restricted to use local subnet only ** This restriction is removed in Windows Server 2008 onwards. High COST as identical hardware, shared storage is required Failover clustering does not allow you to create failover clusters at the database level or at the database object level, such as the table level.

If you want get answer, ―What is Clustering‖, ―Installing Windows 2008 clustered environment‖, ― How to Install SQL Server clustered instance‖ please check my video tutorial ―SQL Server 2008 Clustering on Windows 2008 Video‖

Solution 3 – Database Mirroring
Database mirroring is an alternative high-availability solution and it also offers DR also. Database mirroring supports automatic failover, but does not require cluster-capable hardware, and can therefore provide a cost-effective alternative to failover clustering. In a database mirroring solution, a database is stored on one server and copied to another, providing a standby copy of the database that can service clients in the event of a server failure

PROS
  

Increases data protection. Increases availability of a database. Improves the availability of the production database during upgrades.

 

Solution at Granular level instead of Server level this solution works ate database level. can be used as a DR solution too

CONS
      

Standby copy (Mirrored) can not be used, it‘s just a stand by Database mirroring is limited to only two servers Database mirroring is limited to only 10 database per servers Need to configure your DSN string to have both mirrored servers in it so that when they switch you notice nothing- In case of Clustering and HADR, this is not required Partners must use the same edition. Asynchronous database mirroring (high-performance mode) is supported only by Enterprise Edition Can not be used for system databases like master, msdb, model databases.

If you want get answer, ―How to Set up Database Mirroring in SQL Server 2008‖,please check my video tutorial ―How to Set up Database Mirroring in SQL Server 2008 (Video)‖

Solution 4 – Log Shipping
Log shipping is primarily a failover solution. As part of this solution, log shipping provides database-level redundancy for SQL Server database by automatically backing up, copying, and restoring transaction logs on standby servers

PROS
 

Standby databases can be available for read-only queries. Multiple standby servers can be configured

CONS
  

Possible data loss when the primary server fails Manual Failover, there is no automatic failover Purely works on LSN, If case database log is truncated by some one, then need to again copy entire database.

If you want to know, ―How to Set up SQL Server Log Shipping‖,please check my here and also learn ―How to Monitor SQL Server Log Shipping‖

Solution 5 – Replication
Replication is the mechanism for creating and maintaining multiple copies of the same data. Replication allows, • Multiple copies of data can be kept in sync. • Allows data be closer to users, improving performance. • Allows a branch office to work when not connected to the main office. • Separate process and offload work from production servers PROS

Work at Granular level, Can set replication for a specific table, set of tables, or subset of data within a table or tables on one or many other servers.

CONS
  

Need more DBA efforts to manage replication need to manual failover can loose data

If you want to know, ―What are the type of replication available in SQL Server‖or ―How to set up Replication―, Video Tutorial, check my previous post, ―Replication with SQL Server 2008‖

Solution 6 – Native SQL BACKUPS
This is the most basic form of disaster recovery for SQL Server and one that was being practiced in every situation. PROS

built in and not other component is required as data can be backed on local disk, network storage and even on USB device.

CONS
  

can loose data Manually recovery No High Availability

If you want to know, ―How to Backup SQL―, check my Video Tutorial, check my previous post, ―How to Backup SQL–Video Tutorial‖, which answers
   

WHY Database backed is required ? Ways to Take SQL Server Database Backup Different Types of Backup DEMO : How to Take Backup

 

Taking SQL Server FULL Database backup Manually using SSMS – Graphically o Taking SQL Server FULL Database backup Manually using TSQL CODE o Schedule a Database Backup Compress SQL Database Backup DEMO : How to Enable Backup Compression o How to Enable Database Compression o Explicitly compress on demand backup
o

Solution 7 – RAID (redundant array of independent disks)
It is a method of storing Data on multiple hard disks for greater protection. It provides redundancy for disk / storage from failure. PROS
 

Can be built in the stand alone server only Provide Disk level protection

CONS
 

can loose data It‘s always local

Solution 8 – Disaster recovery solutions from Virtual Computing PROS
 

In case of disasters entire server can be built in seconds Onfly entire server copy

CONS
 

Very specific to Virtual Servers Works at OS level

Solution 9 – Database SNAPSHOTS / Triggers / CDC or
SET IMPLICIT_TRANSACTIONS ON These are multiple transition / sessions level DR solutions. These solutions used by developer and DBA‘s To avoid manual and human errors, we use this method SET IMPLICIT_TRANSACTIONS ON provides transaction level DR solution :), I love this PROS

Work at Granular level, Can set replication for a specific table

  

Providing Auditing data, who make and when changes were made. Can be customized to store and old and new values SET IMPLICIT_TRANSACTIONS ON can help you to explicitly commit data after changes. I personally use this method every time to make sure everything is OK

CONS
 

Require development efforts Persons need to be trained on this

If you want to know, ―How to build sessions / transaction level DR solution‖ check my previous post, ―Restoring Data with Database Snapshots‖

Solution 10 – Third Party Solutions
Deciding SQL Server Disaster solution totally depends on business requirement and cost. There are lot of third party tools available which provides customized high Availability and Disaster Recovery solutions. Careers in database management require in-depth knowledge of SQL and relational database management systems (RDBMS). The ability to use SQL and manage databases are a key component in many business analyst degree programs. If this page has HELPED you somehow then do

SQL Server Recovery Model affect Performance ?
Posted by Mahesh Gupta on February 6, 2012 Leave a comment (0) Go to comments
What is SQL Server Recovery model ?

SQL Server Database recovery models allow you to specify the way SQL Server manages transactions and how much data can be recovered in case of disaster. There are three type of recovery models are available in SQL Server and each of these models represents a different approach to balancing the tradeoff between conserving disk space and data recovery options in case of disaster.
How many recovery model are available in SQL Server ?

There are three type of recovery models are available in SQL Server and each of these models represents a different approach to balancing the tradeoff between conserving disk space and data recovery options in case of disaster.
  

Simple Recovery Model Bulk Logged Recovery Model Full Recovery Model

How to check current recovery model for a database ?

We can check Database Recovery model of database from it‘s property, which can be check either by using TSQL function DATABASEPROPERTYEX or by using SSMS TSQL
-- CHECK CURRENT Recovery Model for Database : AdventureWorksDW SELECT DATABASEPROPERTYEX('AdventureWorksDW', 'Recovery') As [Recovery Model] GO

OUTPUT

OR by SSMS

How to change SQL Server Recovery Model ? (sql server change recovery model) How to set a recovery model for a SQL server database ?

We can change Database Recovery model of database by altering database option, which can be check either by using TSQL function DATABASEPROPERTYEX or by using SSMS TSQL
-- Change Recovery Model for Database : AdventureWorksDW to FULL ALTER DATABASE AdventureWorksDW SET RECOVERY FULL;

or by changing value from SSMS in Recovery Model option.

What is default recovery model for a new database ? By default SQL Server sets FULL recovery model for all newly created database as it copies values from model database. Incase you want to change default recovery model for new database, change recovery model for MODEL SQL Server system database. Can we change recovery model for System Database ?

YES, we can change recovery model Database Name master Default Can be changed or not Recovery Model Simple Not Applicable,technically, YES you can set to FULL or BULK logged but the database continues to operate as simple recovery model only. you can

not perform BACKUP LOG even you change that to full / bulk logged model msdb tempdb FULL can be changed and set to FULL or BULK Logged SIMPLE can be changed and set to FULL or BULK Logged SIMPLE Can not be changed

distribution SIMPLE YES, but distribution db just stores metadata and history data for replication, but a FULL recovery model is recommended. resource N/A recovery model is not relevant to resource database

What is the best recovery model, which should be used?

Where Data is critical and data loss can not be afforded a FULL recovery model is suggested But for development servers where database can be refreshed by production, and space is concern, then SIMPLE recovery mode can be turned on.
Does Recovery Model affects database transaction log ?

YES,The full recovery model might consume all available disk space, if appropriate database maintenance is not performed as log keep growing.
Does SQL Server recovery model affects SQL Server Performance ?

Technically, small transaction didn‘t shown any performance affect but yes, recovery model affect database performance for large transactions. Full logged provide slow response time for large / bulk operations where bulk logged / simple gears up large transaction.
Does the recovery model effect the database size / disk ?

YES,The full recovery model might consume all available disk space, if appropriate database maintenance is not performed as log keep growing.
Is SQL Server recovery mode and Recovery model is same thing ?

YES, is one of the same thing.
Does SQL Server recovery model affects your database recovery? YES, your data safety/recovery depends on recovery model in case of disaster.   

Simple Recovery Model – suits for databases in which data changes infrequently. Full Recovery Model – best suits for production OLTP systems where full recovery from damaged media is the highest priority. Bulk-logged Recovery Model - Similar to the full recovery model, the bulk logged recovery model uses both database and log backups to re-create a database.

What is the best recovery model for recovery point of view ?

Where Data is critical and data loss can not be afforded a FULL recovery model is the only option as this supports point in time recovery.
Which recovery model gives a best sql server database performance ?

Simple Recovery Model – It allows for the fastest bulk operations and the simplest backupand-restore strategy. Bulk_Logged Recovery Model – allows recovery in case of media failure and gives best performance using least log space for certain bulk operations like BULK INSERT, bcp, CREATE INDEX etc.
What is differences between full and simple recovery model ? Check my previous blog post, which lists 10 differences between FULL vs SIMPLE Recovery model, http://goo.gl/0h37O

10 Difference between SIMPLE vs FULL recovery model
Posted by Mahesh Gupta on February 6, 2012 Leave a comment (0) Go to comments

What are the difference between SIMPLE and FULL recovery Model ? BASE Incremental Backups SIMPLE Recovery Model Transaction LOG database backup options are not available in Simple recovery Model. Point in Time recovery is not supported. FULL Recovery Model Transaction LOG database backup options are available in FULL / Bulk Logged recovery Model. POINT IN Time recovery can be performed in case of FULL recovery model

POINT in Time Recovery DISK Space

No large disk space is required LARGE DISK Space might be for transaction logs. required in case of FULL Recovery model for heavily utilized OLTP system. Simple recovery, forces the log DBA need to manually backup and to truncate (marked area for clear the database log file. reuse) when the database writes data to the disk (CHECKPOINT) When the Transaction completes, relevant portion of the log is marked as inactive and marked for reuse When the Transaction completes, relevant portion of the log is still kept occupied in log.

Auto Truncate

Transaction Behavior

PERFORMENCE Permits high-performance bulk Delay the bulk logged operations as

copy operations.

every transactions is written t log file. In case if Log file fills, it grows, which is added delay. Data can by recovered up to any level.

Data LOSS

In case complete disk corruption, Simple recovery might loose some transactions which occurred after full backup SQL Server automatically managed transaction log.

LOG Management

DBA assistance is required to manage transaction log, in case of no backup log plan, Log file will keep growing and you might see log files is larger than data files. As every transaction is recorded in transaction and log will keep growing in case of high transaction which might result in increase number of VLF, which affect performance. Check my article http://goo.gl/8SNuH for more details

Virtual Log File Count

As SQL Server automatically clears transaction log on checkpoint, which keeps transaction log size and control and result higher possibility for not to increase VLF counts

If this page has HELPED you somehow then do

How to Shrink Database File ?
Posted by Mahesh Gupta on January 18, 2011 Leave a comment (2) Go to comments SQL Script to shrink a unused space from a database file.
-*************************************************************************** ********/ -- Description : SQL Script to shrink a non used space from a database -- Compatibility : 7.0+ -- This Script should be executed in master -*************************************************************************** ********/ use <database name> go -- Knowing information about database file sp_helpfile go --- Shrinking a particular database file dbcc shrinkfile (name= <datafile name>, <target percent>) go

Where

file_name, Is the logical name of the file to be shrunk.

target_size, Is the size for the file in megabytes, expressed as an integer. If not specified, DBCC SHRINKFILE reduces the size to the default file size. The default size is the size specified when the file was created.

Example, to shrink the database file First, I need to get the get the information about the current database file, specially the logical file name, which should be shrunk by executing sp_helpfile stored procedure. In my example, I executed sp_helpfile system stored procedure in pubs database to get current database files information (logical file name and size is important). In my case file index_alter, is of 204800 KB (200 MB), which I wanted to shrunk, as show in below screen shot.

Shrinking index_alter file size to 20 MB, using the following script.
-*************************************************************************** ********/ -- Description : SQL Script to shrink a non used space from a database -- Compatibility : 7.0+ -- This Script should be executed in master -*************************************************************************** ********/ use pubs go sp_helpfile go DBCC SHRINKFILE ( 'index_alter',20) go

OUTPUT

Once the File is shrunk and you recheck the file status by running sp_helpfile, you will see the new size, which 20480 in this case, as shown below.

If this page has HELPED you somehow then do 0 votes How to repair suspect database on SQL Server ? On my TEST SQL Server one of the database is in Suspect Mode and is not accessible to any user. Any help would be appreciated Thanks

 

repair-suspect-database repair-suspect-database-sql-server

asked by DBACSE edited by DBACSE

3 Answers
0 votes Before you run this script •Kill all connections and stop SQL Server •Perform a Checkdisk with repair option •Perform a Defragmentation •Now copy the files necessary (MDF, LDF and Backups) •Perform a backup •Restore the backup •Repair the Database (DBCC CHECKDB) •Backup the repaired DB USE [master] GO ALTER DATABASE <dbname> SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO ALTER DATABASE <dbname> SET SINGLE_USER GO DBCC CHECKDB <dbname>, REPAIR_REBUILD) WITH ALL_ERRORMSGS, NO_INFOMSGS GO ALTER DATABASE <dbname> SET MULTI_USER GO Or Take Care From this Script becouse it will make repaire and may be some Data will loss EXEC sp_resetstatus ‗yourDBname‘; ALTER DATABASE yourDBname SET EMERGENCY DBCC checkdb(‗yourDBname‘) ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE DBCC CheckDB (‗yourDBname‘, REPAIR_ALLOW_DATA_LOSS) ALTER DATABASE yourDBname SET MULTI_USER

How to trace Deadlock in SQL Server ?
Posted by Mahesh Gupta on December 29, 2010 Leave a comment (0) Go to comments

What is a DEAD LOCK in SQL Server? When two or more transactions conflict in such a way that each is waiting for the other before they proceed. For instance, Transaction A might have a lock on Record 1 while trying to write to Record 2, while Transaction B has a lock on Record 2 while trying to write to Record 1. The two transactions will wait for each other forever unless the deadlock is somehow resolved. This can be understood by following example.

How to Keep track of DEADLOCK in SQL Server ? How to TRACE DEADLOCK in SQL Server ? By Default SQL Server doesn‘t keep track of DEAD LOCKs, we as a DBA need to request SQL Server to keep track of DEAD LOCKs in SQL Server Error Log. While placing a request to SQL Server, we need to specify
  

What to Capture? Where to capture ? Define Scope, from where you want to capture ?

In this case, we wanted to capture DEADLOCK Information to SQL Server Log. To TRACE all DEAD LOCK information to SQL Server Error Log with detailed information, we need to run the following statement. This will work till your SQL Server is running, once your services gets restarted, you need to do this again.

DBCC TRACEON (3605,1204,1222,-1) /* -- where -- What to Capture? --------------------- (1204) = Capture Deadlock Events. -- (1222) = Capture Deadlock Events with detailed Information (works only with SQL 2005 and higher version) -- Where to capture ? -------------------- (3605) = Capture the selected Events in the SQL Server error log. -- What is the Scope of Capture --------------------------------- (-1) = Switches on the specified trace flags globally, that means do it globally, for all users/sessions */

This deadlock tracking will work till your SQL Server is running, once your services gets restarted, you need to do this again. If you wanted to enable this for permanently, then
 

Create a SQL Agent job and put this code into and schedule that job to when the Agent starts or You need to enable this trace flags at SQL Server startup parameter, by specifying T1222; -T3605;in the startup parameter. o SQL Server Configuration Manager >>> SQL Server Services>>> right-click SQL Server ()>>> Properties >>> Advanced TAB >>> Startup Parameters box >>> type the parameters separated by semicolons (;). o In SQL Server Denali (2011), this is very easy, check here to understand how to change startup parameters in SQL Server Denali (2011)

If you liked this post then,

SQL Server Training

DBATAG, a TAG to every DataBAse Consultant !!!
RSS Feed Follow me on twitter. Facebook

50 Database Optimization TIPS
Posted by Mahesh Gupta on February 14, 2012 Leave a comment (0) Go to comments

Database Optimization TIPS helps any system to perform work efficiently and quickly.

SQL Server Performance tuning is very wide subject and there are a lot of different pieces to troubleshoot a poor performing application.
1. 2. 3. 4. 5. 6. Connectivity / Network Server Hardware Operating System SQL Server Database Query

The basic principle of Optimization / Tuning is

Profile First and then Optimize
The basic rule of optimization is to never assume or estimate – always verify, with actual data stats. The process of collecting performance metrics and determining performance issues is called profiling.

Tools for Profiling – Data Capture
There are n number of tools which come in market to capture performance data but I am going to list tool, which comes free from Microsoft

Performance Monitor - By using Windows Performance Monitor (PERFMON), we can analyze how SQL Server database is performing, both in real time and by collecting log data for later analysis. To run Windows PERFMON, on the Start menu, point to RUN and type ‘PERFMON’ and hit enter. SQL Server Profiler / Trace – Microsoft SQL Server Profiler is a graphical user interface to SQL Trace for monitoring an instance of SQL Server. Trace runs in the background. To run SQL Server Profiler, on the Start menu, point to All Programs, Microsoft SQL Server, Performance Tools, and then click SQL Server Profiler. SQL Server DMV - Dynamic management views and functions return server state information that can be used to monitor the health of a server instance, diagnose problems, and tune performance. Quick List of all SQL Server DMV

TIPS for Database Optimization Database Performance Booster TIPS
TIPS for Database Maintenance
    

Schedule Index Maintenance, Rebuild / Reorganize indexes to keep fragmentation level low Update Statistics Schedule DBCC CHECKDB (Database Consistency Check) to checks logical and physical integrity of all database objects Regular Database Backups, this is not an database optimization tip but an mandatory data safeguard. Shrink Database, keep the Database size small if possible, release the space back to OS.

TIPS for Physical Database Layout (Database File Placement)
   

Locate logs and the tempdb database on separate devices from the data. Provide separate devices for heavily accessed tables and indexes. Use the correct RAID configuration, RAID 10 is best, if you can afford Initialize databases data file and logs file to avoid automatic growth and fragmentation and performance impact.

TIPS for Database Schema Optimization (Database Design)
     

Separate online analytical processing (OLAP) and online transaction processing (OLTP) systems, wherever possible. Normalize first, denormalize later for performance. Define all primary keys and foreign key relationships. Define all unique constraints and check constraints. Choose the most appropriate data type. Use indexed views for denormalization.

USE Partitioning to Partition tables vertically and horizontally.

TIPS for Index Optimizations
           

Manage index fragmentation, keep is low. Create indexes based on usage, use DMVs Keep clustered index keys as small as possible. Watch Kimberly MCM Video for more details Consider range data for clustered indexes. Create an index on all foreign keys. Create highly selective indexes. Create a covering index for often-used, high-impact queries. Use multiple narrow indexes rather than a few wide indexes. Create composite indexes with the most restrictive column first. Consider indexes on columns used in WHERE, ORDER BY, GROUP BY, and DISTINCT clauses. Remove unused indexes. Use the Index Tuning Wizard as assistance

TIPS for QUERY Optimizations (SQL Statements)
             

Fully qualify database objects, use schema name with object name Use locking and isolation level hints to minimize locking. specify NOLOCK hint when running queries Return only the rows and columns needed best way to reduce IO Avoid expensive operators such as NOT LIKE. Avoid explicit or implicit functions in WHERE clauses. Know the performance and scalability characteristics of queries. Write correctly formed queries. Use stored procedures or parameterized queries. Use the sp_executesql instead of the EXECUTE statement for dynamic SQL statements Minimize cursor use. Avoid long actions in triggers. Use temporary tables and table variables appropriately. Limit query and index hint use. Use IF EXISTS (SELECT 1) instead of (SELECT *)

TIPS for Transactions (DML Statements)
     

Avoid long-running transactions. Avoid transactions that require user input to commit. Access heavily used data at the end of the transaction. Try to access resources in the same order. Use isolation level hints to minimize locking. Ensure that explicit transactions commit or roll back.

Tips for Stored Procedures

 

Use Set NOCOUNT ON in stored procedures. Do not use the sp_prefix for custom stored procedures.

TIPS for XML
 

Avoid OPENXML over large XML documents. Avoid large numbers of concurrent OPENXML statements over XML documents.

Database Optimization TIPS If this page has HELPED you somehow then do

SHRINK LOG File SQL
Posted by Mahesh Gupta on February 12, 2012 Leave a comment (0) Go to comments SQL Server Database Log File has grown exponentially over a period of time and now causing DISK space issue, how to reduce | Shrink Log file SQL Database (.ldf) size? Steps to truncating log files and shrinking your database 1. Get logical / physical name of your database log file (LDF) 2. Truncate LOG File 3. Shrink LOG File Let‘s see how we SHRINK LOG File using TSQL STEP 1 – Get logical / physical name of your database log file
use <[your database name]> exec sp_helpfile

STEP 2 – Truncate LOG File
-- replace <[your database logical log filename]> with Logical file name, which we get in STEP 1 USE <[your database name]> GO BACKUP LOG <[your database logical log filename]> WITH TRUNCATE_ONLY GO

STEP 3 – Shrink LOG File
-- replace <[your database logical log filename]> with Logical file name, which we get in STEP 1 USE <[your database name]> GO DBCC SHRINKFILE (<[your database logical log filename]>, 1) GO Let’s see how we

SHRINK LOG File using SQL Server Management Studio (SSMS)

What are the possible solutions, if my transaction log is FULL?
     

Backing up the log Freeing disk space so that the log can automatically grow. Moving the log file to a disk drive with sufficient space. Increasing the size of a log file. Adding a log file on a different disk. Completing or killing a long-running transaction.

Why the size of LOG file is keep growing ? Every SQL database has a transaction log that records all transactions and database modifications made by each transaction. If log record is never deleted from transaction log, the logical log would grow until it filled all the available space on the disks holding the physical log files. BUT WHY SQL Server is keeping track of every transaction in transaction log file? It‘s a design of SQL Server, which uses a write-ahead log. A write-ahead log ensures that no data modifications are written to disk before the associated log record. Thus transaction Log supports

Recovery of any individual transaction

 

Recovery of all incomplete transactions when SQL Server is re started Rolling a restored database forward to the point of failure

Can we disable this Write ahead operation to avoid disk filling operation ? NO, SQL Server always performs a write log operation but we can set a database recovery model to SIMPLE, which will automatically truncate the transaction log on CHECKPOINT. Check my previous post, ―difference between SIMPLE and FULL recovery Model” and ―SQL Server Recovery Model‖ to know more about SQL Server recovery models. When size of the log file is physically reduced? There are three events, which forces SQL Server Database file to Shrink
  

When a DBCC SHRINKDATABASE statement is executed. When a DBCC SHRINKFILE statement referencing a log file is executed. When an autoshrink operation occurs

Is Truncate LOG File and Shrink a log file is same thing ? NO, both are altogether different operation. Shrinking means releasing free space to the Operating System whereas process of deleting log records to reduce the size of the logical log is called truncating log. If a LOG file is 100% used and active then Shrink operation will reduce the size of the transaction log file. Here are some facts about SHRINK and TRUNCATE
   

Shrinking a log is dependent on first truncating the log Log truncation does not reduce the size of a physical log file Log truncation reduces the size of the logical log and marks as inactive the virtual logs that do not hold any part of the logical log. A log Shrink operation removes enough inactive virtual logs to reduce the log file size to the requested size, requested size can not be less than inactive size.

To make it more clear, lets take an example, if you have a 10 GB log file that has been divided into 10 1 GB virtual logs, then the size of the log file can only be reduced in 1 GB increments. The file size can be reduced to 1 GB sizes such as 1 GB, 2 GB, 3 GB .. 9 GB , but it cannot be reduced to sizes such as 1150 MB or 2500 MB as Virtual logs that hold part of the logical log cannot be freed. NOTE: So to reduce a log file size, we first need to truncate and then only we can shrink log file. I am Truncating and Shrinking LOG file but size is not getting reduced, What is possible cause ?

If all the virtual logs in a log file hold parts of the logical log, the file cannot be shrink until a truncation marks one or more of the virtual logs at the end of the physical log as inactive. When any file is shrunk, the space freed must come from the end of the file. How frequently I should SHRINK Database LOG File ? Ideally, you should not be shrinking your LOG files, if you have followed all Best Practices, which I mentioned in the last of the article. I can think of only two frequent scenarios where I go ahead and shrink log file 1. My database is full recovery model and transaction log is never being backed up, which made my log in GB‘s TB‘s. I have see a database where a data file is MB‘s and transaction log was in GB‘s. To correct this issue we need to regular backup transaction log. 2. On demand large BULK INSERT, which filled up transaction log. Is it GOOD to shrink Database Log file ? Without a valid business or technical reason, we should shrink database log. If you shrink your log and log file fills up then it would auto grow but that is as additional delay to your transactions. If you are trying Just to keep a disk space free and available for others to use then definitely this is not a good thing to do. What is the best practice to manage the SQL Log files ? Database LOG File Best Practice
       

Keep transaction number low I would prefer single log file, if possible, this help during recovery. Place the LOG file on the fastest available redundant disk volume Frequently backing up the log frequently, depends on business data recovery policy Initialize the database log file with required space to avoid auto grow during production hours. Place a log file on a larger DISK volume so that the log can automatically grow, incase that is required. Keep your VLF count low Defrag the disks on which your tranaction logs reside to get rid of disk file fragmentation. (requires downtime) Back up the ‗tail of the log‘ in a disaster scenario if possible

If this page has HELPED you somehow then

Configure SQL Server for Remote Connections
Posted by Mahesh Gupta on February 15, 2012 Leave a comment (0) Go to comments

How to Configure SQL Server for Remote Connections ?

Enable SQL Server for Remote Connection on SQL Server 2005, using SQL Server 2005 Surface Area Configuration. 1. Enable the TCP/IP protocol using the Surface Area Configuration Utility 2. Make sure the TCP/IP protocol is enabled in the SQL Server Configuration Utility

Microsoft has removed the Surface Area Configuration tool in SQL Server 2008. In SQL Server 2008 onwards, Microsoft has launched a new tool named SQL Server Configuration Manager for managing SQL Server Connectivity options. In case you want to Configure SQL Server 2008 for Remote Connections, follow these steps

Configure SQL Server 2008 for Remote Connections
Enabling TCP/IP protocol for SQL Server 2008 so that you can connect to SQL Server from remote clients. Open Start >> Programme >> Microsoft SQL Server >> Configuration tools >> SQL Server Configuration Manager and enable the TCP IP Protocol

Configure SQL Server 2012 for Remote Connections
To Connect to SQL Server 2012 from a remote system, you need to Enable TCP/IP protocol for SQL Server 2012 so that you can connect to SQL Server from remote clients. To Enable TCP / IP for SQL Server 2012, Open Start >> Programme >> Microsoft SQL Server 2012 >> Configuration tools >> SQL Server Configuration Manager and enable the TCP IP Protocol

SQL Server for Remote Connections is enable, but still unable to connect ? Once you enable to SQL Server for remote connections, you should be able to connect to SQL Services either by name / IP address. If you still unable to get thru, make sure,
 

SQL Services and running and you are connecting to correct TCPIP port Check Firewall rules, If there is firewall is placed between your Machine and Server which you are trying to connect, make you SQL Server port is opened.

If you are unsure, how to configure Firewall or which port should be opened in Firewall for SQL connections, please check my previous article, "Port For SQL Server", which answers these questions, here is quick summary of that We should open a TCP port in firewall on which SQL Services is actually running that means
 

open TCP 1433 is SQL Services are installed as default instance and using default port of SQL Services, else let SQL SERVER browser services to run in Server as an automatic mode and open UDP port 1434 in firewall, this will allow users to connect to SQL Server instances that are not running on port 1433, without knowing the port number

IF you still have question on how to Configure SQL Server 2005 |2008 |2012 for Remote Connections, post that to QA section. If this page has HELPED you somehow then do

Example of Deadlock | SQL Server Deadlock Script
Posted by Mahesh Gupta on February 23, 2012 Leave a comment (0) Go to comments IS there a way I can stimulate a deadlock in SQL Server, so that I can use that as an example of deadlock Let’s take an example, where we will result / cause a dead lock to SQL Serve? To stimulate the Deadlock, let‘s create two tables which we are going to use as an example of Deadlock STEP 1 – Create Sample Tables which we will use Deadlock Example
-- Sample Table, which will track individual Orders entered by -- Various Sales Persons create table Orders ( OrderID int, OrderDate datetime, Amount money, SalesPersonID int )

go -- Sample Table, which will track all individual Sales Persons details create table SalesPerson ( SalesPersonID int, Name varchar(100), Region varchar(100) ); -- Insert Date in SalesPerson insert SalesPerson Values (1,'Dave Lawlor', 'California'); insert SalesPerson Values (2,'Mark F', 'Atlanta'); insert SalesPerson Values (3,'Vivek Pundit', 'India'); insert SalesPerson Values (4,'Chi Li Hu', 'China'); insert SalesPerson Values (5,'Mat Ross', 'London'); -- Insert Date in Orders Table insert Orders values (101,'2011-01-01', insert Orders values (102,'2011-02-01', insert Orders values (103,'2011-03-01', insert Orders values (104,'2011-04-01', insert Orders values (105,'2011-05-01', insert Orders values (106,'2011-06-01', insert Orders values (107,'2011-07-01', insert Orders values (108,'2011-01-01', insert Orders values (109,'2011-02-01', insert Orders values (110,'2011-03-01', -- select Table Data select * from Orders; select * from SalesPerson; 343,1) 35,2) 33,3) 445,1) 865,3) 23,5) 673,1) 343,1) 135,2) 373,3)

STEP 2 – Open TWO new Query Windows where we will run 4 update statements 1 – Execute the following Query on Query Windows 1
-- Step 1 update a Order Table and update the Sales Person Id for Order 108 -- Session 1 (Query Window 1) -- Statement 1 BEGIN TRAN update Orders set SalesPersonID=4 where OrderID = 108;

2 – Execute the following Query on Query Windows 2
-- Step 2 update Sales Person Table and update the Sales Person Name for SalesPersonID 4 -- Session 2 (Query Window 2) -- Statement 2 BEGIN TRAN update SalesPerson set Name='Li Hu Chu' where SalesPersonID = 4;

3 – Execute the following Query on Query Windows 1
-- Step 3 update Sales Person Table and update the Sales Region for SalesPersonID 4 -- Session 1 (Query Window 1) -- Statement 3 BEGIN TRAN update SalesPerson set Region='Beijing' where SalesPersonID = 4;

4 – Execute the following Query on Query Windows 2
-- Step 4 update Orders Table and update the Sales OrderDate for Order 108 -- Session 2 (Query Window 2) -- Statement 4 BEGIN TRAN update Orders set OrderDate='2011-11-11 11:11:11.000' where OrderID = 108;

OUTPUT at STEP 4 Once you execute the 4th statement, you will get the following error message
Msg 1205, Level 13, State 45, Line 5 Transaction (Process ID 67) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

NOTE : Currently this DEAD LOCK Error is displayed at session level, I mean to say either at query window or at user front end. But this information in not get logged either in SQL Server Error Logs or Event Viewer by default. As a preventive. we should keep an active eye on deadlocks and take necessary actions to avoid DEADLOCK issues. But if these events are not getting logged anywhere, there how we are going to check these?, So in next topic I am going to discuss, how to track DEADLOCK information, so that these can be analyzed. Please check My previous article, "How to Keep track of DEADLOCK in SQL Server", where we learn how to trace DEADLOCK in SQL Server If this page has HELPED you somehow then do