Sometimes naming convention also impacts the performance problems in SQL SERVER. Whenever we create stored procedures, we are giving the name just like SP_Get_Customer. SP_ it first checks the Master Database system procedures.

All the system procedures are stored in the Master Database. In this blog we do not allow SP_ whenever stored procedure creating by using DDL Trigger.

In many articles I read the naming convention problems, SP_ really impact performance in SQL-SERVER. Personally, I also faced the performance based situations. In the beginning stage I also used SP_, later I realized that the performance problems are also important in SQL.

Today I come up with this problem by solving the by DDL Triggers. DDL Triggers introduced in SQL –SERVER 2005 version onwards. These triggers can fired whenever any Data Definition operations can be performed.

These Triggers can be performed at either the database level or server level. In this article I used database level triggers.

We will discuss Triggers in later articles.
  1. --Create Student Table
  2. Create table Student
  3. (
  4. id int identity(1,1) ,
  5. Name varchar(100)
  6. )
  7. --Create DDL Trigger on Database
  8. create trigger Restrict_Sp_NameConvenction
  9. on database
  10. for create_Procedure
  11. as
  12. begin
  13. declare @EventData XML = EVENTDATA(),@ObjectName Nvarchar(100);
  14. select @[email protected]('(/EVENT_INSTANCE/ObjectName)[1]','NVARCHAR(100)');
  15. if(substring(@ObjectName,1,3)='sp_')
  16. begin
  17. raiserror('Procedure name can not be start with sp_',16,1)
  18. rollback;
  19. end
  20. end
  21. --Create Stored Procedure Name starts with sp_
  22. create procedure sp_Get_Student
  23. as
  24. begin
  25. select * from Student
  26. end
Msg 50000, Level 16, State 1, Procedure Restrict_Sp_NameConvenction, Line 10
Procedure name can not be start with sp_
Msg 3609, Level 16, State 2, Procedure sp_Get_Student, Line 1
The transaction ended in the trigger. The batch has been aborted.

  1. --Create Stored Procedure Name does not starts with sp_
  2. create procedure usp_Get_Student
  3. as
  4. begin
  5. select * from Student
  6. end
Command(s) completed successfully.
  1. drop procedure sp_Get_Student
  2. -- Disable trigger from Databse
  3. disable trigger Restrict_Sp_NameConvenction on database
  4. --Enable trigger from Databse
  5. Enable trigger Restrict_Sp_NameConvenction on database
  6. --Drop trigger from Databse
  7. drop trigger Restrict_Sp_NameConvenction on database
  8. --For more information about trigger event types
  9. select * from sys.trigger_event_types