1

SQL Server 2008 でマネージ コードを実行する際のパフォーマンスの問題を知りたいです。メモリと速度の問題について聞いたことがあります。

具体的には、SHA256 ハッシュ DLL を実装し、SQL Server 2008 で sproc として実行したいと考えています。

または、単純に .Net アプリからハッシュを実行し、その文字列を sprocs に渡すこともできます。

長所短所?

ありがとう。

4

1 に答える 1

2

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

これは、いくつかの理由で優れています。

  1. テストが困難な SQL Server にビジネス ロジックを組み込むことはありません。
  2. クエリ自体はそれほど複雑ではないため、SQL Server が実行する作業が少なくなり、高速になります。
  3. SQLCLR の設定は面倒な場合があります (SQLCLR は既定でオフになっています)。アセンブリを SQL Server に配置するのは、特に運用サーバーに直接アクセスできない場合は面倒です。
  4. SQLCLR を使用しない場合、アプリを更新/展開するときに、SQL Server で CLR を更新/展開することを覚えておく必要はありません。これにより、メンテナンスの労力が軽減されます。
于 2010-07-29T21:10:37.227 に答える