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

随着SQL Server 2005即将结束支持,企业面临系统升级或迁移的挑战。本文介绍了一种通过脚本迁移数据库账号及权限的方法,包括如何还原账号权限、获取加密密码并使用HASHED选项重建账号,确保服务平滑过渡。

在这里插入图片描述

因為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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值