Wednesday, 8 March 2017

Paging (Skip - Take) Functionality With this Query

WITH Results AS 
(
SELECT ID, 
  VALUE,
  ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber
    FROM   DBO.TABLENAME

SELECT Results.ID, 
       Results.VALUE 
FROM   Results 
WHERE  RowNumber BETWEEN 10 AND 15 

Friday, 3 March 2017

Removing Last Character With Dynamic Query

DECLARE @VariableList varchar(MAX)=''
SELECT @VariableList += 'SELECT * FROM '+ NAME + CHAR(13) + 'UNION ALL ' + CHAR(13)
FROM sys.tables
SELECT left(@VariableList,LEN(@VariableList) - 11) + CHAR(13) AS VariableList 
PRINT(@VariableList)

SQL Server's Last Start Date and Time

SELECT @@Servername                                    AS ServerName, 
       create_date                                              AS ServerStarted, 
       Datediff(s, create_date, Getdate()) / 86400.0 AS DaysRunning, 
       Datediff(s, create_date, Getdate())               AS SecondsRunnig 
FROM   sys.databases 
WHERE  NAME = 'DBNAME' 

Thursday, 2 March 2017

Find Referencing Objects of a Particular Object (Table)

SELECT SchemaName = Schema_name(obj.schema_id), 
       ObjectName = obj.NAME, 
       ObjectType = obj.type_desc, 
       referenced_schema_name, 
       Referenced_Object_Name = referenced_entity_name, 
       Table_Type_Desc = obj1.type_desc, 
       referenced_server_name, 
       referenced_database_name 
FROM   sys.sql_expression_dependencies sed 
       LEFT JOIN sys.objects obj ON sed.referencing_id = obj.[object_id] 
       LEFT JOIN sys.objects obj1 ON sed.referenced_id = obj1.[object_id] 
WHERE  1 = 1 
       AND referenced_entity_name IN( 'TAB1', 'TAB2' ) 
ORDER  BY referenced_entity_name ASC 

Wednesday, 22 February 2017

List Primary Keys For All Tables From Source Data Base

DECLARE @SourceDB sysname = 'DataBaseName'
IF DB_ID(@SourceDB) IS NULL
BEGIN
  PRINT 'Error: Unable to find the database ' + @SourceDB + '!!!'
  RETURN
END
EXEC ('WITH CTE AS 

           SELECT      IC.INDEX_ID + IC.OBJECT_ID AS INDEXID,T.NAME AS TABLENAME 
                       ,I.NAME AS INDEXNAME
,CASE WHEN IC.IS_INCLUDED_COLUMN =0 THEN
C.NAME END AS COLUMNNAME
,CASE WHEN IC.IS_INCLUDED_COLUMN =1 THEN
C.NAME END AS INCLUDEDCOLUMN
,I.TYPE_DESC 
                       ,I.IS_PRIMARY_KEY,I.IS_UNIQUE 
           FROM  ' + @SOURCEDB + '.SYS.INDEXES I 
           INNER JOIN ' + @SOURCEDB + '.SYS.INDEX_COLUMNS IC 
                   ON  I.INDEX_ID    =   IC.INDEX_ID 
                   AND I.OBJECT_ID   =   IC.OBJECT_ID 
           INNER JOIN ' + @SOURCEDB + '.SYS.COLUMNS C 
                   ON  IC.COLUMN_ID  =   C.COLUMN_ID 
                   AND I.OBJECT_ID   =   C.OBJECT_ID 
           INNER JOIN ' + @SOURCEDB + '.SYS.TABLES T 
                   ON  I.OBJECT_ID = T.OBJECT_ID 

SELECT ''' + @SOURCEDB + ''' AS SOURCEDATABASENAME,C.TABLENAME TABLE_NAME,C.INDEXNAME INDEX_NAME,C.TYPE_DESC INDEX_TYPE ,C.IS_PRIMARY_KEY IS_PRIMARY_KEY,C.IS_UNIQUE IS_UNIQUE
       ,STUFF( ( SELECT '',''+ A.COLUMNNAME FROM CTE A WHERE C.INDEXID = A.INDEXID FOR XML PATH('''')),1 ,1, '''') AS COLUMNS
       ,STUFF( ( SELECT '',''+ A.INCLUDEDCOLUMN FROM CTE A WHERE C.INDEXID = A.INDEXID FOR XML PATH('''')),1 ,1, '''') AS INCLUDED_COLUMNS
FROM   CTE C 
GROUP  BY C.INDEXID,C.TABLENAME,C.INDEXNAME,C.TYPE_DESC,C.IS_PRIMARY_KEY,C.IS_UNIQUE 
ORDER  BY C.TABLENAME ASC,C.IS_PRIMARY_KEY DESC; ');

Sunday, 19 February 2017

Two Data Base Difference Table List

SELECT T1.TABLE_NAME, 'DataBase First' AS DBNAME FROM DataBase First.[INFORMATION_SCHEMA].[TABLES] T1 WHERE TABLE_NAME NOT IN ( SELECT T2.TABLE_NAME FROM DataBase Second.[INFORMATION_SCHEMA].[TABLES] T2 )

Two Data Base Difference Column Data Type

SELECT 'DBFirst' AS DbName,
  C1.TABLE_NAME, 
       C1.COLUMN_NAME, 
       C1.DATA_TYPE, 
  '      <=>' AS DIFFERENCE,
  'DBSecond' AS DbName,
       C2.TABLE_NAME, 
       C2.DATA_TYPE, 
       C2.COLUMN_NAME 
FROM   DBFirst.[INFORMATION_SCHEMA].[COLUMNS] C1 
       INNER JOIN DBSecond.[INFORMATION_SCHEMA].[COLUMNS] C2 
               ON C1.COLUMN_NAME = C2.COLUMN_NAME 
WHERE  1 = 1 
       AND C1.TABLE_NAME = C2.TABLE_NAME 
       AND C1.DATA_TYPE <> C2.DATA_TYPE