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 Student Table
- Create table Student
- (
- id int identity(1,1) ,
- Name varchar(100)
- )
- --Create DDL Trigger on Database
- 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 Stored Procedure Name starts with sp_
- create procedure sp_Get_Student
- as
- begin
- select * from Student
- end
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 Stored Procedure Name does not starts with sp_
- create procedure usp_Get_Student
- as
- begin
- select * from Student
- end
- drop procedure sp_Get_Student
- -- Disable trigger from Databse
- disable trigger Restrict_Sp_NameConvenction on database
- --Enable trigger from Databse
- Enable trigger Restrict_Sp_NameConvenction on database
- --Drop trigger from Databse
- drop trigger Restrict_Sp_NameConvenction on database
- --For more information about trigger event types
- select * from sys.trigger_event_types

MAMTA APRAJPosted Jul 21, 2015, 2:15 AM
hi rakesh,while executing trigger "Restrict_Sp_NameConvenction" in sql server 2012 i am getting error XQuery [value()]: ")" was expected.