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 

Wednesday, 15 February 2017

List Primary Keys For All Tables (Comma Separated)

SELECT OUTTAB.TABLE_NAME, 
       STUFF ((SELECT ', ' + KCU.COLUMN_NAME 
               FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS INRTAB 
                      JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU 
                        ON KCU.CONSTRAINT_SCHEMA = INRTAB.CONSTRAINT_SCHEMA 
                           AND KCU.CONSTRAINT_NAME = INRTAB.CONSTRAINT_NAME 
                           AND KCU.TABLE_SCHEMA = INRTAB.TABLE_SCHEMA 
                           AND KCU.TABLE_NAME = INRTAB.TABLE_NAME 
               WHERE  INRTAB.TABLE_NAME = OUTTAB.TABLE_NAME 
               --   AND  INRTAB.COLUMN_NAME = OUTTAB.COLUMN_NAME 
               ORDER  BY INRTAB.TABLE_NAME 
               FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, SPACE(0 
       )) 
FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS OUTTAB 
WHERE  OUTTAB.TABLE_NAME = '' 
GROUP  BY OUTTAB.TABLE_NAME 

Tuesday, 14 February 2017

Drop All The Tables From SQL Server Database Without Using Enterprise Manager

DECLARE @SQL NVARCHAR(MAX)=''

SELECT @SQL += 'DROP TABLE ' + QUOTENAME(TABLE_SCHEMA) + '.'+ QUOTENAME(TABLE_NAME) + CHAR(13)
FROM   INFORMATION_SCHEMA.TABLES
WHERE  TABLE_TYPE = 'BASE TABLE'
  ORDER BY TABLE_NAME
SELECT @SQL

OR

SELECT 'DROP TABLE [' + SCHEMA_NAME(SCHEMA_ID) + '].[' + NAME + ']' FROM SYS.TABLES ORDER BY NAME

Find All The User-Defined Functions In a Database

SELECT  NAME AS FUNCTION_NAME ,
        SCHEMA_NAME(SCHEMA_ID) AS SCHEMA_NAME ,
        TYPE_DESC ,
        CREATE_DATE ,
        MODIFY_DATE
FROM    SYS.OBJECTS
WHERE   TYPE_DESC LIKE '%FUNCTION%'
ORDER BY MODIFY_DATE DESC

Data Base OwnerShip With User Permission

-- Data Base OwnerShip With User Permission
USE [master]

GO
IF  EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'YourUser')
BEGIN
 DROP LOGIN [YourUser]
END 

IF EXISTS (SELECT * FROM sys.syslogins WHERE name = N'YourUser') 
BEGIN
 DROP LOGIN [YourUser] 
END

CREATE LOGIN [YourUser] WITH PASSWORD=N'YourUser' MUST_CHANGE, DEFAULT_DATABASE=[master], CHECK_EXPIRATION=ON, CHECK_POLICY=ON
GO
USE [DataBase]
IF  EXISTS (SELECT * FROM sys.database_principals WHERE name = N'YourUser')
BEGIN
 DROP USER [YourUser]
END 

GO
CREATE USER [YourUser] FOR LOGIN [YourUser]
GO
USE [DataBase]
GO
ALTER USER [YourUser] WITH DEFAULT_SCHEMA=[dbo]
GO
USE [DataBase]
GO
ALTER ROLE [db_owner] ADD MEMBER [YourUser]
GO