erste Lösung:
Wenn Sie Ihr sp in der Master-Datenbank erstellen, es als Systemobjekt kennzeichnen und ihm das Präfix "sp_" voranstellen, existiert eine einzige Kopie, die von allen Datenbanken gemeinsam genutzt wird.
y zweite Lösung von msdn:
Private und globale temporäre gespeicherte Prozeduren, analog zu temporären Tabellen, können mit den Präfixen # und ## erstellt werden, die dem Prozedurnamen hinzugefügt werden. # bezeichnet eine lokale temporäre Stored Procedure; ## bezeichnet eine globale temporäre Stored Procedure. Diese Prozeduren existieren nicht mehr, nachdem SQL Server heruntergefahren wurde.
ein Beispiel:
USE master
CREATE TABLE test (c1 VARCHAR(50))
INSERT test VALUES('master')
go
CREATE PROC sp_test AS
SELECT * FROM test
GO
USE northwind
CREATE TABLE test (c1 VARCHAR(50))
INSERT test VALUES('northwind')
USE pubs
CREATE TABLE test(c1 VARCHAR(50))
INSERT test VALUES('pubs')
USE pubs
EXEC sp_test --returns 'master'
USE master
EXEC sp_MS_marksystemobject sp_test
USE pubs
EXEC sp_test --returns 'pubs'
USE northwind
EXEC sp_test --returns 'northwind'