SQLCLR은 매우 빠릅니다. T-SQL 내에서 CLR 코드를 실행할 필요가있을 때 사용하십시오. 예를 들어, 서명과 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
이것은 몇 가지 이유에 대한 더 나은 :
- 당신은 그것을 테스트하기 어려울 것입니다 SQL 서버로 비즈니스 로직을 넣어되지 않습니다.
- 쿼리 자체가 훨씬 덜 복잡하므로 SQL Server의 작업량이 줄어들어 더 빠릅니다.
- SQLCLR을 위로 설정하면 문제가 발생할 수 있습니다 (SQLCLR은 기본적으로 해제되어 있습니다). 프로덕션 서버에 직접 액세스 할 수없는 경우 특히 SQL Server에 어셈블리를 배포하는 것이 어려울 수 있습니다.
- SQLCLR을 사용하지 않는 경우 앱을 업데이트/배포 할 때 SQL Server에서 CLR 항목을 업데이트/배포하지 않아도됩니다. 이렇게하면 유지 관리 노력이 줄어 듭니다.
새로운 공간 기능은 CLR을 사용하여 구현되었습니다. 따라서 MS는 CLR에서 성능이 뛰어날 필요가있는 주요 새 기능을 구현하는 데 충분한 자신감을 보였습니다. – AaronLS
기본 제공 암호화 방법 중 적합한 것이 있습니까? –
Will, SHA256 이상의 암호화를 구현해야합니다. 알고있는 한 SQL Server 2008의 축소 포장 버전에서는 사용할 수 없습니다. – ElHaix