Estoy trabajando en un procedimiento almacenado que recupera el objectGUID del directorio activo. Estoy almacenando el resultado en una tabla temporal y luego devolviendo el valor en un parámetro de salida para usar con otros procesos. Se llamará al SP desde diferentes procedimientos almacenados, así como desde aplicaciones web PHP, ASP Classic y ASP.Net.
Leí AQUÍ que (con respecto a las tablas temporales):
Si se crean dentro de un procedimiento almacenado, se destruyen al finalizar el procedimiento almacenado. Además, el alcance de cualquier tabla temporal particular es la sesión en la que se crea; lo que significa que solo es visible para el usuario actual. Varios usuarios podrían crear una tabla temporal llamada #TableX y las consultas que se ejecuten simultáneamente no se afectarían entre sí: seguirían siendo transacciones autónomas y las tablas seguirían siendo objetos autónomos. Puede notar que mi nombre de tabla temporal de muestra comenzó con un signo "#".
Parece que estoy listo para ir, pero quería obtener algunos consejos para asegurarme de que no hay problemas que desconozco. Aquí está el SP.
Gracias por adelantado.
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
fuente
en un sentido amplio, estarás bien haciéndolo de esta manera. Los procedimientos almacenados tienen un alcance limitado, por lo que, aunque (ejemplo) 3 usuarios ejecutan el mismo procedimiento almacenado y las tablas temporales no se mezclan, ni siquiera se verán.
Siempre y cuando no necesite compartir los resultados con una sesión diferente o un usuario que ejecute un proceso diferente, la tabla Temp podría ser una buena opción.
fuente