Saturday 5 September 2015

How can we delete or update first 3 records in a table ?

By using TOP clause we can delete or update the first 3 records in a table.

Example :

CREATE TABLE Top_Clause
  (
     id     INT IDENTITY(1, 1),
     name   VARCHAR(10),
     gender CHAR(1) DEFAULT 'M'
  )

INSERT INTO Top_Clause
SELECT 'Satya',
       'M'
UNION ALL
SELECT 'Naga',
       'M'
UNION ALL
SELECT 'Venkat',
       'M'
UNION ALL
SELECT 'Krishna',
       'M'
UNION ALL
SELECT 'Reeta',
       'F'
UNION ALL
SELECT 'Meeta',
       'F'
UNION ALL
SELECT 'Geetha',
       'F'
UNION ALL
SELECT 'Heetha',
       'F'

-- Fetching 3 records using TOP clause
SELECT TOP 3 *
FROM   Top_Clause

-- Updating top 3 records using Top clause
UPDATE TOP (3) Top_Clause
SET    name = name + '3'

-- Deleting top 3 records using Top clause
DELETE TOP (3) FROM Top_Clause

Wednesday 2 September 2015

How to identify which code is executing in a Sessionid or SPID?

DBCC inputbuffer(SPID)

How to find the currently active locks in a database?

SELECT Object_name(resource_associated_entity_id),
       *
FROM   sys.dm_tran_locks
WHERE  resource_database_id = Db_id()

Current running queries in database :

SELECT DISTINCT [Spid] = session_Id,
                [Database] = Db_name(sp.dbid),
                [User] = nt_username,
                [Status] = er.status,
                [Wait] = wait_type,
                [Individual Query] = Substring (qt.text, er.statement_start_offset / 2,
                ( CASE
                  WHEN er.statement_end_offset = -1
                  THEN Len(CONVERT(NVARCHAR(MAX), qt.text)) * 2

                  ELSE er.statement_end_offset
                  END - er.statement_start_offset ) / 2),
                [Parent Query] = qt.text,
                Program = program_name,
                Hostname,
                nt_domain,
                start_time
FROM   sys.dm_exec_requests er
       INNER JOIN sys.sysprocesses sp
               ON er.session_id = sp.spid
       CROSS APPLY sys.Dm_exec_sql_text(er.sql_handle)AS qt
WHERE  session_Id NOT IN ( @@SPID )
ORDER  BY 1, 2