SQL登錄時如果采用windows集成身份驗證,登錄框?qū)浴皺C(jī)器名\當(dāng)前系統(tǒng)用戶名”的格式顯示登錄名,而且登錄名和密碼都是灰色的,不允許用戶輸入。
了解到同事剛剛修改了服務(wù)器的機(jī)器名,因此在SQL的登陸框中顯示“新機(jī)器名\當(dāng)前系統(tǒng)用戶名”。要知道windows集成身份驗證能登錄的原因是在SQL的登錄名中已經(jīng)包括了該用戶名,原來的用戶名在SQL安裝的時候已經(jīng)記錄到了SQL中,如果機(jī)器名變更了,“新機(jī)器名\當(dāng)前系統(tǒng)用戶名”肯定無法正常登錄。
![](/d/20211017/472fa1ad658f520a44046fff54f9c1d5.gif)
網(wǎng)上看到有人說可以采用OSQL–S instancename –E(在命令行窗口中輸入)登錄進(jìn)去后再去修改sa的密碼,一番嘗試后發(fā)現(xiàn)是扯談,因為采用這種方式的前提是需要windows集成身份能夠登錄。
后來在微軟的官網(wǎng)上看到一篇文檔,原來只要在SQL的啟動參數(shù)中加一個“-m”的選項(記得在-m前加分號),然后需要重啟SQL服務(wù),再次用SQL Management Studio的windows集成身份驗證登陸就可以了。
![](/d/20211017/d59782f16d571b8d8e2ff2a99f21419c.gif)
-m表示單用戶登錄。細(xì)心的讀者可能會質(zhì)疑了:只是加了-m,但最后還是采用的windows集成身份驗證,理論說跟之前使用SQLOS –S instancename –E有什么區(qū)別呢?
這個問得非常專業(yè)。當(dāng)時我也沒有搞明白,覺得有點(diǎn)不可思議,但結(jié)果就是這樣,肯定有其道理。后來在微軟的官網(wǎng)上找到了這段話。
Start the instance of SQL Server in single-user mode by using either the -m or -f options. Any member of the computer's local Administrators group can then connect to the instance of SQL Server as a member of the sysadmin fixed server role.
大概的意思是說當(dāng)在SQL的啟動參數(shù)中添加了-m或者-f參數(shù)時,計算機(jī)本地管理員組的任何一個用戶都可以sysadmin的身份登錄到SQL中。相信讀者看到這個地方就明白了。這里其實并沒有去檢驗登錄的用戶是否在SQL在存在,只是檢查該用戶是否為本地計算機(jī)的管理組中的用戶。
好了,相信后面就不用過多累贅了,只是提醒下讀者:修改了sa密碼后記得把原來添加在SQL啟動參數(shù)的-m刪除掉,然后在重啟SQL服務(wù)。