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

Monday, 23 January 2017

Dynamically Multiple Table Trigger Created In Sql Server

CREATE PROC TABLE_TRIGGER
@TABLENAME VARCHAR(MAX)=''
AS 
BEGIN
DECLARE @DATABASECONNECTION VARCHAR(MAX)=''
BEGIN

BEGIN TRY
BEGIN TRAN

DECLARE @COLUMLIST VARCHAR(MAX)
DECLARE @PRIMARYKEY VARCHAR(MAX)
DECLARE @DESTINATIONCOL VARCHAR(MAX)

SELECT @COLUMLIST = COALESCE(@COLUMLIST,'','') + name +',' FROM sys.columns WHERE OBJECT_NAME(object_id) = @TABLENAME
SELECT @PRIMARYKEY = COALESCE(@PRIMARYKEY,'','') +'Sou.' + COL_NAME(object_id,index_id) 
 +'= Dest.' + COL_NAME(object_id,index_id)
FROM sys.indexes WHERE OBJECT_NAME(object_id) = @TABLENAME

SET @COLUMLIST = SUBSTRING(@COLUMLIST,0,LEN(@COLUMLIST))
SET @DESTINATIONCOL = CHAR(13)
SELECT @DESTINATIONCOL = COALESCE(@DESTINATIONCOL,'','') + CHAR(9)+ CHAR(9)+ CHAR(9) + 'Dest.' + Col.NAME + ' = Sou.' + Col.NAME + ', '+ CHAR(13)
FROM   SYS.OBJECTS Obj 
LEFT JOIN SYS.COLUMNS Col 
ON Col.OBJECT_ID = Obj.OBJECT_ID 
 WHERE  Obj.NAME = @TABLENAME 
 ORDER  BY COLUMN_ID 

SET @DESTINATIONCOL = SUBSTRING(@DESTINATIONCOL,0,LEN(@DESTINATIONCOL)-2)

DECLARE @sql NVARCHAR(MAX) = 'CREATE TRIGGER TR_'+ @TABLENAME + '_MYTRIGGER ON '+@TABLENAME+'
AFTER INSERT,UPDATE,DELETE AS 
BEGIN 
MERGE INTO ' + @DATABASECONNECTION + @TABLENAME +' As Dest
USING 

SELECT '+ @COLUMLIST+ ' FROM INSERTED 
) AS Sou ON '+ @PRIMARYKEY + ' 
WHEN MATCHED THEN
UPDATE SET ' 
+CHAR(9) + @DESTINATIONCOL +  CHAR(13)+
CHAR(9)+ ' WHEN NOT MATCHED THEN
INSERT('+ @COLUMLIST +')
VALUES ('+ @COLUMLIST +');
END'

SELECT @sql
COMMIT TRAN
END TRY
BEGIN CATCH
RAISERROR('Trigger Not Created !!', 18, 1)
ROLLBACK TRAN
END CATCH
END
END 


Saturday, 21 January 2017

Destination Column To Source Column In Sql Server

SELECT Obj.NAME AS TableName,Col.NAME AS ColumnName, 
       'Dest.' + Col.NAME + ' = Sou.' + Col.NAME + ' ,' AS DestinationCol 
FROM   SYS.OBJECTS Obj 
       LEFT JOIN SYS.COLUMNS Col 
              ON Col.OBJECT_ID = Obj.OBJECT_ID 
WHERE  Obj.NAME = 'TABLENAME' 
ORDER  BY COLUMN_ID 

Comma Separated Columns List With Table In Sql Server

DECLARE @LIST VARCHAR(8000) 

SELECT @LIST = COALESCE(@LIST + ', ', '') 
               + Cast(COL.NAME AS VARCHAR) 
FROM   SYS.OBJECTS OBJ 
       LEFT JOIN SYS.COLUMNS COL 
              ON COL.OBJECT_ID = OBJ.OBJECT_ID 
WHERE  OBJ.NAME = 'TABLENAME' 
ORDER  BY COLUMN_ID