Je travaille sur une procédure stockée qui récupère le objectGUID du répertoire actif. Je stocke le résultat dans une table temporaire, puis je renvoie la valeur dans un paramètre de sortie pour une utilisation avec d'autres processus. Le SP sera appelé à partir de différentes procédures stockées ainsi que des applications Web PHP, ASP Classic et ASP.Net.
J'ai lu ICI que (concernant les tables temporaires):
S'ils sont créés dans une procédure stockée, ils sont détruits à la fin de la procédure stockée. En outre, la portée d'une table temporaire particulière est la session dans laquelle elle est créée; ce qui signifie qu'il n'est visible que pour l'utilisateur actuel. Plusieurs utilisateurs pourraient créer une table temporaire nommée #TableX et toutes les requêtes exécutées simultanément ne s'influenceraient pas - elles resteraient des transactions autonomes et les tables resteraient des objets autonomes. Vous pouvez remarquer que mon exemple de nom de table temporaire a commencé par un signe "#".
On dirait que je suis prêt à partir, mais je voulais obtenir des conseils pour m'assurer qu'il n'y avait aucun problème que j'ignore. Voici le SP.
Merci d'avance.
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
la source
d'un sens large, vous serez très bien de le faire de cette façon. Les procédures stockées ont une portée limitée, donc même si (exemple) 3 utilisateurs exécutent la même procédure stockée et que les tables temporaires ne se mélangent pas, elles ne se voient même pas.
Tant que vous n'avez pas besoin de partager les résultats avec une session différente ou qu'un utilisateur exécutant un processus différent, la table Temp peut être une solution parfaitement appropriée.
la source