2013-12-11 6 views
5

Hat ein Benutzer gespeicherte Prozedur mit dem Präfix von SP (nicht SP_) hat eine schlechtere Leistung von in der Master-DB suchen (ähnlich Benutzer SP genannt SP_) oder es in denen sieht DB wo die gespeicherte Prozedur existiert, weil es einen Unterstrich fehlt?Vermeiden Benennen von Anwender-Stored Procedures SP% oder SP_%

+0

Vorschlag. Ich benutze "dbo.uspEmployeeGetSingle". "usp" Präfix. dann Entität, die Aktion. – granadaCoder

Antwort

9

Die reserved prefix, der dieses Verhalten zeigt, ist sp_. Nicht sp.

Eine gespeicherte Prozedur namens spAddUser wird auf die normale Weise aufgelöst, ohne nach einem übereinstimmenden Objekt in master zu suchen.

Der relevante quote in books online ist

die Verwendung des sp_ Präfix vermeiden, wenn Verfahren zu benennen. Dieses Präfix wird von SQL Server verwendet, um Systemprozeduren zu bezeichnen. das Präfix kann Anwendungscode führen zu brechen, wenn es eine Systemprozedur mit dem gleichen Namen.

Aber ich würde diese Präfixe sowieso vermeiden. Wenn alle gespeicherten Prozeduren das Präfix sp haben, wird es schnell nervig IMO.

+0

Wenn allen SPs SP vorangestellt ist, was ist der Sinn? das gilt für alles andere, ungarische Notation macht selten Sinn – BlackTigerX

+0

@BlackTigerX - Ich stimme dir zu. Es ist normalerweise aus dem Kontext ziemlich offensichtlich, dass ein Objekt eine gespeicherte Prozedur ist (während man auch "EXEC" skalare UDFs kaum tun kann). Weniger ärgerlich als das 'tbl'-Präfix. Nach dem Refactoring-Datenbanken, die Sie einfach mit der Abwärtskompatibilität Ansichten ersetzen Tabellen können am Ende des noch den 'tbl' Präfix haben, die eine Tabelle bezeichnen!) –

+0

@MartinSmith Does SP_ (Großbuchstaben) haben die gleiche Wirkung wie die unteren sollten -case sp_ Präfix? – user797717