[MSSQL] 重建密碼一樣的帳號

版权声明:本文为Coisini社区原创内容,未经允许不得转载。 https://blog.csdn.net/kclax/article/details/91505458

在这里插入图片描述

因為SQL Server 2005即將結束服務(EOS),所以公司內有一些比較重要的系統就有考慮要進行升級或移轉服務,

User也希望經過測試再進行正式的服務移轉,因此通常會另外安裝新機,而不會原機升級,

在資料庫中可能有不少的系統帳號需要移轉,就可以透過以下方法來進行…

要還原帳號,不外乎是還原原先的權限以及建立一樣的密碼,

通常帳號在幫User建立,密碼交出去之後應該也忘光了(有建立密碼原則的例外),

如果帳號不多,花點時間一個一個跟User要也是一種方法,但如果數量超過5個,我想一般人也懶得問了,

當然如果一切能透過Script完成是最好的,但想也知道,密碼怎麼可能用明碼的方式存在呢…

透過以下的語法可以查到目前這個資料庫中以哪些帳號以及密碼,

SELECT name, password
FROM syslogins
WHERE password IS NOT NULL
ORDER BY name

從查到的資訊來看,還真的是亂碼…
在这里插入图片描述
如果把帳號用script匯出,密碼的欄位一樣是看不懂的,
在这里插入图片描述
當然,這個語法還是可以拿來建帳號,但使用記得的密碼拿來登入,會取得密碼錯誤的訊息,

怎麼辦呢??

查看MSDN中CREATE LOGIN的語法,有一個option叫HASHED,表示我們可以透過HASH過的密碼來建立帳號,

<option_list1> ::= 
    PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
    [ , <option_list2> [ ,... ] ]

透過底下的語法,我們可以取得被加密的字串,

SELECT name, LOGINPROPERTY(name, 'PasswordHash' ) hash
FROM syslogins
WHERE password IS NOT NULL
ORDER BY name

在这里插入图片描述
就可以改用以下的語法把帳號建回去了,

CREATE LOGIN TEST WITH PASSWORD = 0x0200FD89B0E958361F2D8DD16B05317E55BFA602014F7D334D1BB605A9F722A71A9FBAC9A7AE132F1DC161267CFE87EF276B76EC15A00CADF9626021E39462CAA02716DFAFE5 HASHED;

接著透過匯出的權限語法或是sp_change_users_logi這個procedure,一一把權限建立或連結回去就好。

@CLAx

猜你喜欢

转载自blog.csdn.net/kclax/article/details/91505458