PWDCOMPARE (języka Transact-SQL)

Hasło mieszania i porównuje skrótu do mieszania istniejące hasło.PWDCOMPARE może służyć do wyszukiwania puste SQL Server hasła logowania lub słabe hasła wspólne.

Topic link iconKonwencje składni języka Transact-SQL

PWDCOMPARE ( 'clear_text_password'
      , 'password_hash' 
   [ , version ] )

Argumenty

  • 'clear_text_password'
    Is the unencrypted password.clear_text_password is sysname (nvarchar(128)).

  • 'password_hash'
    Is the encryption hash of a password.password_hash is varbinary(128).

  • version
    Optional parameter that can be set to 1 if password_hash represents a value from a login earlier than SQL Server 2000 that was migrated to SQL Server 2005 or SQL Server 2008 but never converted to the SQL Server 2000 system.version is int.

    Important noteImportant Note:

    Ten parametr jest zastąpiona i może zostać usunięty w przyszłej wersji programu SQL Server.

Zwracane typy

int

Zwraca wartość 1, jeśli wartości mieszania dla clear_text_password Dopasowuje password_hash parametr, a 0, jeśli tak nie jest.

Remarks

Kiedy dokonywana jest migracja wystąpienie SQL Server 7.0 SQL Server 2000 lub nowszej wersja, nie ulega zmianie wartość mieszania hasła i użyć version parametr do testowania hasło. Po zakończeniu migracji identyfikator logowania jest używany po raz pierwszy, mieszanie hasła jest aktualizowany, aby format, który został najpierw użyty w SQL Server 2000. Następnie od PWDCOMPARE nie wymaga version Parametr dla tego identyfikatora logowania.

Funkcja PWDCOMPARE nie jest zagrożeniem dla wytrzymałości mieszania hasła, ponieważ można było wykonać to samo badanie próbując zalogować się przy użyciu hasła, pod warunkiem że jako pierwszy parametr.

Uprawnienia

PWDENCRYPT jest dostępna dla publicznych.

Uprawnienie Kontrola SERVER jest wymagany do zbadania kolumnie password_hash sys.sql_logins.

Przykłady

A.Identyfikowanie logowania, do których przypisano nie haseł w programie SQL Server 2005 lub SQL Server 2008

W poniższym przykładzie identyfikuje SQL Server logowania, do których przypisano nie hasła. Pierwszy WHERE Klauzula sprawdza mieszania hasła dla wartości, które są przechowywane w formacie używanym przez SQL Server 2000 i jego nowszych wersjach. Drugi WHERE zawiera klauzulę version parametr, aby sprawdzić, czy mieszania hasła dla wartości, które są nadal przechowywane w formacie, który jest używany przez wersje SQL Server starsze niż SQL Server 2000.

SELECT name FROM sys.sql_logins 
WHERE PWDCOMPARE('', password_hash) = 1 
OR PWDCOMPARE('', password_hash, 1) = 1 ;

B.Identyfikowanie logowania, do których przypisano nie haseł w programie SQL Server 2000

Tabela sys.sql_logins nie istnieje w SQL Server 2000. Można wykonywać następujące instrukcja przed wystąpienie SQL Server 2000 Aby zidentyfikować SQL Server logowania, do których przypisano nie hasła.

SELECT name FROM syslogins 
WHERE PWDCOMPARE ('', password) = 1 
OR PWDCOMPARE('', password, 1) = 1  ;

C.Trwa wyszukiwanie haseł wspólnych

Aby wyszukać wspólnego hasła, które chcesz zidentyfikować i zmienić, należy określić hasło jako pierwszy parametr.Na przykład wykonać następującą instrukcję, aby wyszukać określony jako hasło password.

SELECT name FROM sys.sql_logins 
WHERE PWDCOMPARE('password', password_hash) = 1 
OR PWDCOMPARE('password', password_hash, 1) = 1 ;