質問

残念ながら、私は、データベース内の平文パスワードを持っています。私は、たとえば、比較および更新のためできるだけ周りにこれらの平文値を渡したいです。この目的を達成するために、私はその除外平文パスワード私Usersテーブルのビューを作成しようと、代わりにそのパスワードのハッシュされた値を提供しています。

ここでは動作しません。私の現在のSQL Serverのビュー、ですます:

SELECT CAST(CAST(32768 * RAND() AS INT) AS NVARCHAR) AS PasswordSalt
       HashBytes('SHA1', PasswordSalt + u.Password) AS PasswordHash
FROM dbo.Users AS u
私は、このアプローチに代わるものを聞いて幸せになると思いますが、それ以外の問題が...何での PasswordSalt の仮想列を連結しているようです。たとえば、次のような単純なビューが機能します:

SELECT u.Login AS Column1, u.Login + 'b' AS Column2

が、この1つはしません。

SELECT u.Login AS Column1, Column1 + 'b' AS Column2

私は、Management Studioから受けていますエラーが

であります
  

無効な列名 '列1' ます。

私が間違ってやっていることについて任意のアイデアを事前に感謝!

役に立ちましたか?

解決

あなたの文のFROM句PasswordSaltという名前の列をユーザーテーブルから来たデータを選択することを示しているが、SELECTパーツ参照ので、

問題が発生しています。 SQL Serverの故にユーザーテーブルの上にこの名前を持つ列、エラーを見つけることができません。

別のアプローチは、サブクエリで塩を生成することができます。たとえば、

SELECT x.PasswordSalt,  HashBytes('SHA1', x.PasswordSalt + x.Password) AS PasswordHash FROM ( SELECT  CAST(CAST(32768 * RAND() AS INT) AS NVARCHAR) AS PasswordSalt, Password FROM dbo.Users) x

他のヒント

どの程度

SELECT CAST(CAST(32768 * RAND() AS INT) AS NVARCHAR) AS PasswordSalt 
       HashBytes('SHA1', CAST(CAST(32768 * RAND() AS INT) AS NVARCHAR) + u.Password) AS PasswordHash 
FROM dbo.Users AS u 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top