Tuesday, 14 February 2017

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 

Friday, 20 January 2017

DataBase Backup In Single Query

BACKUP DATABASE DATABASENAME NAME TO DISK='D:/DATABASE.BAK'

DataBase Backup Query

DECLARE @PATHNAME     NVARCHAR(512), 
        @DATABASENAME NVARCHAR(512) 

SET @DATABASENAME = 'DATABASENAME' 
SET @PATHNAME = 'D:\' + @DATABASENAME + '-' 
                + CONVERT(VARCHAR(8), GETDATE(), 112) + '_' 
                + REPLACE((CONVERT(VARCHAR(8), GETDATE(), 108)), ':', '-') 
                + '.BAK' 

BACKUP DATABASE @DATABASENAME TO DISK = @PATHNAME WITH NOFORMAT, NOINIT, NAME = 
N'', SKIP, NOREWIND, NOUNLOAD, STATS = 10 

GO 

Trigger to Automatically Manage the Modified Date Field

CREATE TRIGGER TRIGGEREMPUPDATE 
ON DBO.EMPLOYEE 
AFTER UPDATE 
AS 
  BEGIN 
      UPDATE [DBO].EMPLOYEE 
      SET    MODIFIEDDATE = GETDATE() 
      WHERE  EMPLOYEE.EMPID IN (SELECT DISTINCT INSERTED.EMPID 
                                FROM   INSERTED) 
  END