2
我需要編寫一個腳本來提取SQL登錄密碼並將其分發到另一個服務器。從SQL中提取密碼登錄
我這樣做:
Declare @PasswordBinary varbinary(256)
Set @PasswordBinary = CAST(LOGINPROPERTY(@LoginName, 'PasswordHash') AS varbinary (256))
Exec sp_hexadecimal @PasswordBinary, @PasswordStr Out
的sp_hexadecimal:
Create PROCEDURE [dbo].[sp_hexadecimal]
@binvalue varbinary(256),
@hexvalue varchar (514) OUTPUT
AS
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = 'ABCDEF'
WHILE (@i <= @length)
BEGIN
DECLARE @tempint int
DECLARE @firstint int
DECLARE @secondint int
SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
SELECT @firstint = FLOOR(@tempint/16)
SELECT @secondint = @tempint - (@firstint*16)
SELECT @charvalue = @charvalue +
SUBSTRING(@hexstring, @firstint+1, 1) +
SUBSTRING(@hexstring, @secondint+1, 1)
SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
我有一個變量
@SQL nvarchar(max) = 'CREATE LOGIN ' + QUOTENAME(@LoginName) + ' With PASSWORD = ' + @PasswordStr + ' HASHED'''
,我將其發送到存儲過程在遠程服務器和我在那裏執行這個變量:
Exec (@SQL)
,但我得到了一個錯誤:
The @SQL variable is set to : 'Create Login [Name] With password = 0x Hashed'
謝謝:)
感謝Diego,但是當你添加'Hashe d'關鍵字密碼應該是在sysname數據類型:) – 2012-04-18 12:58:11
看到我的編輯,看看這個:http://support.microsoft.com/kb/246133 – Diego 2012-04-18 13:19:45