Ich arbeite an einer gespeicherten Prozedur, die die objectGUID aus dem Active Directory abruft. Ich speichere das Ergebnis in einer temporären Tabelle und gebe dann den Wert in einem Ausgabeparameter zur Verwendung mit anderen Prozessen zurück. Der SP wird von verschiedenen gespeicherten Prozeduren sowie von Webanwendungen PHP, ASP Classic und ASP.Net aufgerufen.
Ich habe HIER gelesen, dass (in Bezug auf temporäre Tabellen):
Wenn sie innerhalb einer gespeicherten Prozedur erstellt werden, werden sie nach Abschluss der gespeicherten Prozedur zerstört. Darüber hinaus ist der Umfang einer bestimmten temporären Tabelle die Sitzung, in der sie erstellt wird. Dies bedeutet, dass es nur für den aktuellen Benutzer sichtbar ist. Mehrere Benutzer könnten eine temporäre Tabelle mit dem Namen #TableX erstellen, und alle gleichzeitig ausgeführten Abfragen würden sich nicht gegenseitig beeinflussen - sie würden autonome Transaktionen bleiben und die Tabellen würden autonome Objekte bleiben. Möglicherweise stellen Sie fest, dass der Name meiner temporären Beispieltabelle mit einem "#" - Zeichen begann.
Klingt so, als wäre ich gut zu gehen, aber ich wollte einen Rat einholen, um sicherzustellen, dass es keine Fallstricke gibt, von denen ich nichts weiß. Hier ist der SP.
Danke im Voraus.
CREATE PROCEDURE stp_adlookup
@user varchar(100),
@objectGUID varbinary(256) OUTPUT
AS
SET NOCOUNT ON;
DECLARE @qry char(1000)
CREATE TABLE #tmp(
objectGUID nvarchar(256)
)
SET @qry = 'SELECT *
FROM openquery(ADSI, ''
SELECT objectGUID
FROM ''''LDAP://mydomaincontroller.com''''
WHERE sAMAccountName = ''''' + @user + '''''
'')'
INSERT INTO #tmp
EXEC(@qry)
SELECT @objectGUID=CAST(objectGUID as varbinary(256)) FROM #tmp;
DROP TABLE #tmp
SET NOCOUNT OFF;
GO
quelle
Im weitesten Sinne werden Sie es auf diese Weise gut machen. Gespeicherte Prozeduren haben einen begrenzten Umfang. Obwohl (Beispiel) 3 Benutzer dieselbe gespeicherte Prozedur ausführen und sich die temporären Tabellen nicht vermischen, sehen sie sich nicht einmal.
Solange Sie die Ergebnisse nicht für eine andere Sitzung freigeben müssen oder ein Benutzer eine andere Prozesstemp-Tabelle ausführt, kann dies ein perfekter Weg sein.
quelle