使用sqlcmd修改SQL Server 的 sa 密碼

SQL Server 登入系統的帳號一般為 sa ,若工作交接或忘了原本的密碼時,可以依下列步驟作變更,注意要在MS SQL Server 主機上執行

Step 01: 先停用 SQL Server服務

net stop mssqlserver

Step 02: 使用單一使用者模式啟動SQL Server服務

net start mssqlserver /m

SQL Server 服務啟動選項之說明:

/f
啟動只含最小組態的 SQL Server 執行個體。
如果組態值設定 (如過度調配記憶體) 造成伺服器無法啟動,這就很有用。
以最低組態模式啟動 SQL Server 會將 SQL Server 放在單一使用者模式下。

/m
當您以單一使用者模式啟動 SQL Server 執行個體。以單一使用者模式啟動 SQL Server 執行個體時,只有單一使用者可以進行連接,且不會啟動 CHECKPOINT 處理序。
CHECKPOINT 會保證將交易規律地從磁碟快取區寫到資料庫裝置。(一般而言,如果遇到一些應該修復系統資料庫的問題時,就會使用這個選項)。
啟用 sp_configure allow updates 選項。根據預設,allow updates 是停用的。
在單一使用者模式下啟動 SQL Server 可讓電腦本機管理員群組的任何成員以 sysadmin 固定伺服器角色的成員身分,連接到 SQL Server 的執行個體。

Step 03: 使用sqlcmd登入SQL Server,變更sa密碼

sqlcmd

//重新設定 sa 帳戶的密碼為:P@ssw0rd。
USE [master]
GO
ALTER LOGIN [sa] WITH PASSWORD=N'P@ssw0rd'
GO

或是執行下列指令登入

C:\Users\Administrator>sqlcmd -S 127.0.0.1 -E
1>sp_password @new = 'newpassword', @loginame = 'sa'
2>go
3>exit

參數說明
  1. -S:指定要連接的 SQL Server instance
  2. -E:使用信任連接登入 SQL Server,而不用使用者名稱和密碼

[單一使用者模式]顧名思義只能有一條連線進入 SQL Server,有其他連線已經連進的話,會導致 sqlcmd 登錄失敗。

Step 04: 啟用sa帳號

USE [master]
GO
ALTER LOGIN [sa] ENABLE
GO

或是下列指令

C:\Users\Administrator>sqlcmd -S 127.0.0.1 -E
1>USE [master]
2>go
3>ALTER LOGIN sa WITH PASSWORD = 'newpassword' UNLOCK
4>go
5>exit

Step 05: 將sql登入模式改為混和模式

USE [master]
GO

EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\MSSQLServer',
    N'LoginMode', REG_DWORD, 2;
GO

Step 05: 離開sqlcmd,並重啟SQL Server服務

exit

//停止sql server服務
net stop mssqlserver

//啟動sql server 服務
net start mssqlserver

sqlcmd 命令參數查詢

C:\User>sqlcmd -?
Microsoft (R) SQL Server Command Line Tool
Version 9.00.3042.00 NT INTEL X86
Copyright (c) Microsoft Corporation.  All rights reserved.

usage: Sqlcmd            [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  [-d use database name] [-l login timeout]     [-t query timeout]
  [-h headers]           [-s colseparator]      [-w screen width]
  [-a packetsize]        [-e echo input]        [-I Enable Quoted Identifiers]
  [-c cmdend]            [-L[c] list servers[clean output]]
  [-q "cmdline query"]   [-Q "cmdline query" and exit]
  [-m errorlevel]        [-V severitylevel]     [-W remove trailing spaces]
  [-u unicode output]    [-r[0|1] msgs to stderr]
  [-i inputfile]         [-o outputfile]        [-z new password]
  [-f <codepage> | i:<codepage>[,o:<codepage>]] [-Z new password and exit]
  [-k[1|2] remove[replace] control characters]
  [-y variable length type display width]
  [-Y fixed length type display width]
  [-p[1] print statistics[colon format]]
  [-R use client regional setting]
  [-b On error batch abort]
  [-v var = "value"...]  [-A dedicated admin connection]
  [-X[1] disable commands, startup script, enviroment variables [and exit]]
  [-x disable variable substitution]
  [-? show syntax summary]

參考:

How to Change SQL SA Password from a Command Prompt

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *