Я хотел бы знать проблемы производительности, связанные с выполнением управляемого кода через SQL Server 2008. Я услышал о некоторых проблемах памяти и скорости.
А именно, я хочу реализовать SHA256, хеширующий DLL и выполнить его как sproc с SQL Server 2008.
Поочередно, я мог просто выполнить хеширование из своего приложения .NET, затем передать строку моему sprocs.
Профессионалы/недостатки?
Спасибо.
SQLCLR довольно быстрый. Используйте его, если вам явно необходимо выполнить код CLR в T-SQL. Например, предположим, что вы пишете функцию SQLCLR с подписью:
SqlString Hash(SqlString input)
и вам удается заставить ее работать должным образом. Вы можете выполнить следующий запрос:
IF EXISTS(SELECT * FROM Users WHERE HashedPassword = dbo.Hash(@userPassword) AND UserName = @userName)
BEGIN
SELECT 'You''re alright, Jack.';
END
ELSE
BEGIN
SELECT 'Bogus.';
END
Если вам удастся хешировать поле гипотетического пароля в своем приложении, лучше сделать это внутри приложения и передать хешированное значение в SQL Server для выполнения такого запроса:
SELECT *
FROM User
WHERE UserName = @userName AND HashedPassword = @hashedPassword
Это лучше по нескольким причинам: