July 19, 2019

Srikaanth

Frequently Asked MS SQL Server Queries Problems Solution

Most of the MS SQL Server queries interview questions we have filtered out of interviews held by top IT MNC. So you’ll gain real-time experience by going through them.

Get all table that don’t have identity column:

Query:

SELECT

TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

where

Table_NAME NOT IN

(

SELECT DISTINCT c.TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS c

INNER

JOIN sys.identity_columns ic

on

(c.COLUMN_NAME=ic.NAME))

AND

TABLE_TYPE ='BASE TABLE'
Frequently Asked MS SQL Server Queries Problems Solution Interview Questions
Frequently Asked MS SQL Server Queries Problems Solution Interview Questions

List of Primary Key and Foreign Key for Whole Database

SELECT

DISTINCT

Constraint_Name AS [Constraint],

Table_Schema AS [Schema],

Table_Name AS [TableName] FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE

GO

List of Primary Key and Foreign Key for a particular table

SELECT

DISTINCT

Constraint_Name AS [Constraint],

Table_Schema AS [Schema],

Table_Name AS [TableName] FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE

WHERE INFORMATION_SCHEMA.KEY_COLUMN_USAGE.TABLE_NAME='Table_Name'

GO

Display Text of Stored Procedure, Trigger, View

exec sp_helptext @objname = 'Object_Name'

Get All Stored Procedure Relate To Database

SELECT DISTINCT o.name, o.xtype

FROM syscomments c

INNER JOIN sysobjects o ON c.id=o.id

WHERE o.xtype='P'

To retrieve the View use “V” instead of “P” and for functions use “FN.

Get All Stored Procedure Relate To Table

SELECT DISTINCT o.name, o.xtype

FROM syscomments c

INNER JOIN sysobjects o ON c.id=o.id

WHERE c.TEXT LIKE '%Table_Name%' AND o.xtype='P'

To retrieve the View use “V” instead of “P” and for functions use “FN.

Rebuild All Index of Database

EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)"

GO

EXEC sp_updatestats

GO

Retrieve All dependencies of Stored Procedure:

This query return all objects name that are using into stored procedure like table, user define function, another stored procedure.

Query:

;WITH stored_procedures AS (

SELECT

oo.name AS table_name,

ROW_NUMBER() OVER(partition by o.name,oo.name ORDER BY o.name,oo.name) AS row

FROM sysdepends d

INNER JOIN sysobjects o ON o.id=d.id

INNER JOIN sysobjects oo ON oo.id=d.depid

WHERE o.xtype = 'P' AND o.name LIKE '%SP_NAme%' )

SELECT Table_name FROM stored_procedures

WHERE row = 1

Find Byte Size Of All tables in database

SELECT sob.name AS Table_Name,

SUM(sys.length) AS [Size_Table(Bytes)]

FROM sysobjects sob, syscolumns sys

WHERE sob.xtype='u' AND sys.id=sob.id

GROUP BY sob.name

Retrieve List of All Database

EXEC sp_helpdb.

RESEED Identity of all tables

EXEC sp_MSForEachTable '

IF OBJECTPROPERTY(object_id(''?''), ''TableHasIdentity'') = 1

DBCC CHECKIDENT (''?'', RESEED, 0)

List of tables with number of records

CREATE TABLE #Tab

(

Table_Name [varchar](max),

Total_Records int

);

EXEC sp_MSForEachTable @command1=' Insert Into #Tab(Table_Name, Total_Records) SELECT ''?'', COUNT(*) FROM ?'

SELECT * FROM #Tab t ORDER BY t.Total_Records DESC;

DROP TABLE #Tab;

Get the version name of SQL Server

SELECT @@VERSION AS Version_Name

Get Current Language of SQL Server

SELECT @@LANGUAGE AS Current_Language;

Disable all constraints of a table

ALTER TABLE Table_Name NOCHECK CONSTRAINT ALL

Disable all constraints of all tables

EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'

Get Current Language Id

SELECT @@LANGID AS 'Language ID'

Get precision level used by decimal and numeric as current set in Server:

SELECT @@MAX_PRECISION AS 'MAX_PRECISION'

Return Server Name of SQL Server

SELECT @@SERVERNAME AS 'Server_Name'

Get name of register key under which SQL Server is running

SELECT @@SERVICENAME AS 'Service_Name'

Get Session Id of current user process

SELECT @@SPID AS 'Session_Id'

Get Current Value of TEXTSIZE option

SELECT @@TEXTSIZE AS 'Text_Size'

Retrieve Free Space of Hard Disk

EXEC master..xp_fixeddrives

List of Stored procedure created in last N days

SELECT name,sys.objects.create_date

FROM sys.objects

WHERE type='P'

AND DATEDIFF(D,sys.objects.create_date,GETDATE())< N

Recompile a stored procedure

EXEC sp_recompile'Procedure_Name';

GO

Recompile all stored procedure on a table

EXEC sp_recompile N'Table_Name';

GO

Get all columns of a specific data type:

SELECT OBJECT_NAME(c.OBJECT_ID) as Table_Name, c.name as Column_Name

FROM sys.columns AS c

JOIN sys.types AS t ON c.user_type_id=t.user_type_id

WHERE t.name = 'Data_Type'

Get all Nullable columns of a table

SELECT OBJECT_NAME(c.OBJECT_ID) as Table_Name, c.name as Column_Name

FROM sys.columns AS c

JOIN sys.types AS t ON c.user_type_id=t.user_type_id

WHERE c.is_nullable=0 AND OBJECT_NAME(c.OBJECT_ID)='Table_Name'

Get All table that don’t have primary key

SELECT name AS Table_Name

FROM sys.tables

WHERE OBJECTPROPERTY(OBJECT_ID,'TableHasPrimaryKey') = 0

ORDER BY Table_Name;

Get All table that don’t have foreign key

SELECT name AS Table_Name

FROM sys.tables

WHERE OBJECTPROPERTY(OBJECT_ID,'TableHasForeignKey') = 0

ORDER BY Table_Name;

Get All table that don’t have identity column

SELECT name AS Table_Name

FROM sys.tables

WHERE OBJECTPROPERTY(OBJECT_ID,'TableHasIdentity') = 0

ORDER BY Table_Name;


Drop all tables

EXEC sys.sp_MSforeachtable @command1 = 'Drop Table ?'

Get information of tables’ columns

SELECT * FROM INFORMATION_SCHEMA.COLUMNS

WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME=’Table_Name’

Get all columns contain any constraints

SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE

Get all tables that contain a view

SELECT * FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE

Get all columns of table that using in views



SELECT * FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE.

Disable a Particular Trigger

Syntax:

ALTER TABLE Table_Name DISABLE TRIGGER Trigger_Name

Example:

ALTER TABLE Employee DISABLE TRIGGER TR_Insert_Salary

Enable a Particular Trigger

Syntax:

ALTER TABLE Table_Name ENABLE TRIGGER Trigger_Name

Example:

ALTER TABLE Employee ENABLE TRIGGER TR_Insert_Salary

Disable All Trigger of a table

We can disable and enable all triggers of a table using previous query, but replacing the "ALL" instead of trigger name.

Syntax:

ALTER TABLE Table_Name DISABLE TRIGGER ALL

ALTER TABLE Demo DISABLE TRIGGER ALL

Enable All Trigger of a table

ALTER TABLE Table_Name ENABLE TRIGGER ALL

ALTER TABLE Demo ENABLE TRIGGER ALL

Disable All Trigger for database

Using sp_msforeachtable system stored procedure we enable and disable all triggers for a database.

Syntax:

Use Database_Name

Exec sp_msforeachtable "ALTER TABLE ? DISABLE TRIGGER all"

Enable All Trigger for database

Use Demo

Exec sp_msforeachtable "ALTER TABLE ? ENABLE TRIGGER all"

List of Stored procedure modified in last N days

SELECT name,modify_date

FROM sys.objects

WHERE type='P'

AND DATEDIFF(D,modify_date,GETDATE())< N

Get First Date of Current Month

SELECT CONVERT(VARCHAR(25),DATEADD(DAY,-(DAY(GETDATE()))+1,GETDATE()),105) First_Date_Current_Month;

Get last date of previous month

SELECT CONVERT(VARCHAR(25),DATEADD(DAY,-(DAY(GETDATE())),GETDATE()),105) Last_Date_Previous_Month;

Get last date of current month

SELECT CONVERT(VARCHAR(25),DATEADD(DAY,-(DAY(GETDATE())), DATEADD(MONTH,1,GETDATE())),105) Last_Date_Current_Month;

Get first date of next month

SELECT CONVERT(VARCHAR(25),DATEADD(DAY,-(DAY(GETDATE())), DATEADD(MONTH,1,GETDATE())+1),105) First_Date_Next_Month;

Swap the values of two columns

UPDATE Table_Name SET Column1=Column2, Column2=Column1

Remove all stored procedure from database

Declare @Drop_SP Nvarchar(MAX)

Declare My_Cursor Cursor For Select [name] From sys.objects where type = 'p'

Open My_Cursor

Fetch Next From My_Cursor Into @Drop_SP

While @@FETCH_STATUS= 0

Begin

Exec('DROP PROCEDURE ' + @Drop_SP)

Fetch Next From My_Cursor Into @Drop_SP

End

Close My_Cursor

Deallocate My_Cursor

Remove all views from database

Declare @Drop_View Nvarchar(MAX)

Declare My_Cursor Cursor For Select [name] From sys.objects where type = 'v'

Open My_Cursor

Fetch Next From My_Cursor Into @Drop_View

While @@FETCH_STATUS = 0

Begin

Exec('DROP VIEW ' + @Drop_View)

Fetch Next From My_Cursor Into @Drop_View

End

Close My_Cursor

Deallocate My_Cursor

Subscribe to get more Posts :