Tôi đang làm việc trên một thủ tục được lưu trữ để lấy objectGUID từ thư mục hoạt động. Tôi đang lưu trữ kết quả trong một bảng tạm thời và sau đó trả về giá trị trong một tham số đầu ra để sử dụng với các quy trình khác. SP sẽ được gọi từ các thủ tục được lưu trữ khác nhau cũng như các ứng dụng web PHP, ASP Classic và ASP.Net.
Tôi đọc TẠI ĐÂY rằng (liên quan đến bảng tạm thời):
Nếu được tạo bên trong một thủ tục được lưu trữ, chúng sẽ bị hủy khi hoàn thành thủ tục được lưu trữ. Hơn nữa, phạm vi của bất kỳ bảng tạm thời cụ thể nào là phiên mà nó được tạo; có nghĩa là nó chỉ hiển thị cho người dùng hiện tại. Nhiều người dùng có thể tạo một bảng tạm thời có tên #TableX và mọi truy vấn chạy đồng thời sẽ không ảnh hưởng đến nhau - họ sẽ duy trì các giao dịch tự trị và các bảng sẽ vẫn là các đối tượng tự trị. Bạn có thể nhận thấy rằng tên bảng tạm thời mẫu của tôi bắt đầu bằng dấu "#".
Nghe có vẻ như tôi rất tốt để đi nhưng tôi muốn nhận được một lời khuyên để đảm bảo rằng không có bất kỳ vấn đề nào mà tôi không biết. Đây là SP.
Cảm ơn trước.
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