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.
-
- Create table Student
- (
- id int identity(1,1) ,
- Name varchar(100)
- )
-
-
- create trigger Restrict_Sp_NameConvenction
- on database
- for create_Procedure
- as
- begin
- declare @EventData XML = EVENTDATA(),@ObjectName Nvarchar(100);
- select @[email protected]('(/EVENT_INSTANCE/ObjectName)[1]','NVARCHAR(100)');
- if(substring(@ObjectName,1,3)='sp_')
- begin
- raiserror('Procedure name can not be start with sp_',16,1)
- rollback;
- end
- end
-
-
- create procedure sp_Get_Student
- as
- begin
- select * from Student
- 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.
-
- create procedure usp_Get_Student
- as
- begin
- select * from Student
- end
Command(s) completed successfully.
- drop procedure sp_Get_Student
-
-
- disable trigger Restrict_Sp_NameConvenction on database
-
-
- Enable trigger Restrict_Sp_NameConvenction on database
-
-
- drop trigger Restrict_Sp_NameConvenction on database
-
-
- select * from sys.trigger_event_types