saパスワードをどのようにリセットしますか?


22

マシンでsaパスワードを失い、adminグループのアカウントを使用してマシンに直接ログインすると、SQL Server Management StudioはWindows認証を使用したログインを許可しません。

私の計画は、単にサーバーにログインし、Windows認証を介して接続し、saをリセットして新しいパスワードを使用することでした。Windows認証経由で接続できないため、これは機能しません。

saパスワードをリセットするにはどうすればよいですか?


答えを見つけました。ドメイン管理者としてログインできませんでしたが、ローカル管理者を使用するとうまくいきました。
ダニエルウィリアムズ

ローカルマシンの「管理者」グループのメンバーがこれを実行できたということですか?後世のために、あなたはどのような正確なステップを踏みましたか?
-p.campbell

アカウントはローカルの管理者アカウントそのものでした。このアカウントは、私のドメインアカウントと同様に、ローカルの管理者グループの一部です。ただし、ローカル管理者アカウントのみがWindows認証を使用してSql Serverにログインできました。それがお役に立てば幸いです。
ダニエルウィリアムズ

インスタンスをシングルユーザーモードで起動すると、ローカル管理者グループの一部であるローカルアカウントからインスタンスへのアクセスも許可されます。編集:リンク@ user1419はこれを指摘しています。
ショーンメルトン

回答:


10

以下のリンクに記載されている手順に従って、SAパスワードをリセットできます。

以下に要約する手順:

  1. [スタート]メニュー> [プログラム]> [Microsoft SQL Server 20xx]> [構成ツール]>インストールしたSQL Serverの最新バージョンに関連するSQL Server構成マネージャーを開きます(2005と2012がインストールされている場合は、2012バージョンを使用します)。スタートメニューがありませんか?Windows 8のスタート画面で、表示されるまでSQL Server Con ...と入力し始めます。
  2. SQL Serverサービスでインスタンスを右クリックし、[停止]を選択して、回復する必要があるSQL Serverインスタンスを停止します
  3. 停止したインスタンスを右クリックして[プロパティ]をクリックし、[詳細設定]タブの[プロパティ]テキストボックスで、[スタートアップパラメーター]オプションのリストの最後に「; –m」を追加します(新しいバージョンでは、 「スタートアップパラメータ」タブに直接移動し、「-m」と入力して、[追加]をクリックします。構文、セミコロン、またはその他何も心配する必要はありません)。
  4. [OK]ボタンをクリックして、SQL Serverインスタンスを再起動します
  5. SQL Serverインスタンスがシングルユーザーモードで起動すると、Windows管理者アカウントは、Windows認証を使用するsqlcmdユーティリティを使用してSQL Serverに接続できます。"sp_addsrvrolemember"などのTransact-SQLコマンドを使用して、既存のログイン(または新しく作成されたログイン)をsysadminサーバーロールに追加できます。

次の例では、「CONTOSO」ドメインのアカウント「Buck」をsysadminロールに追加します。

EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';

sysadminアクセスが回復したら、Configuration Managerを使用してスタートアップパラメーターから「; -m」を削除し、SQL Serverインスタンスをもう一度再起動します。

注:「;」と「-m」の間にスペースがないことを確認してください。レジストリパラメータパーサーはこのような入力ミスに敏感です。SQL Server ERRORLOGファイルに「SQL Serverはシングルユーザーモードで起動しました」というエントリが表示されます。


追加のリソース:

最終的には、常にデータベースファイルを別のインスタンスにコピーするか、SQL Serverを再インストールすることもできます(そのプロセス中にローカルアカウントをsysadminとして追加します)。


9

行うことは、SQL Serverのバージョンと、新しい資格情報を確立するためにSQL Serverサービスを停止する余裕があるかどうかによって異なります。ここでの最初の2つの方法では、インスタンスを再起動する必要はありません。


SQL Server 2005、2008、および2008 R2インスタンスの場合

NT AUTHORITY\SYSTEMアカウント(または他のバックドアメソッド)を使用して接続できます。ここでいくつかの答えにいくつかの詳細があります:

この問題に対処するMSSQLTips.comのヒントもあります。

基本的に、PSExecをMicrosoftからダウンロードし、インストール後にManagement Studioを起動するために使用します。

PsExec -s -i "C:\...\Ssms.exe"

これにより、次のように接続されNT AUTHORITY\SYSTEM、オブジェクトエクスプローラーで次のことができるようになります。

  • インスタンスをSQL ServerおよびWindows認証モードに変更します。サーバー名を右クリックし、プロパティを選択して、現在Windowsのみに設定されている場合はラジオボタンを変更します。

    ここに画像の説明を入力してください

  • saアカウントのパスワードを設定します -[セキュリティ] sa、[ログイン] を展開し、右クリックして[ プロパティ] を押すと、表示されるダイアログに2つのパスワード入力フィールドがあります。

    ここに画像の説明を入力してください

  • 独自のログインをaとして追加しますsysadmin -[ログイン]、[新しいログイン]を右クリックし、ログイン名を(フォームにDOMAIN\username)入力し、[サーバーロール]タブに移動してチェックsysadminボックスをオンにし、[OK]をクリックします。

    ここに画像の説明を入力してください

  • (または、ログインが既にリストされている場合は、右クリックして[プロパティ]を選択し、[ sysadminサーバーの役割]でオンになっていることを確認します)


SQL Server 2012以降のインスタンスの場合

SQL Server 2012以降、NT Authority\SYSTEMデフォルトではSQL Serverに対する権限が付与されなくなりました。これらの新しいバージョンでそれを行う別の方法は、Argenis Fernandezによって詳述されています。

  1. SQL VSS Writerサービスが実行されている場合、それを停止し、それに依存する可能性のあるすべてのメンテナンスプランまたはサードパーティのバックアップソフトウェアを一時停止します。
  2. を開きregedit.exeHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePathto の値を指すようSQLCMD.exeに変更しますC:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn。編集後、レジストリ値は次のようになります(スクロールは申し訳ありません)。

    "C:Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.exe" -S .\instancename -E -Q "ALTER ROLE sysadmin ADD MEMBER [YourDomain\YourUserName];"
  3. SQL VSS Writerサービスを再度開始してみてください(エラーが表示されますが、問題ありません)。

  4. これでをsysadmin使用して接続できるようになりますYourDomain\YourUserName。したがって、SQL VSS Writerサービスを停止し、レジストリを修正して、サービスを再起動します(実行する必要がある場合、またはサービスを開始する前に実行していた場合)。

これについては、2番目のヒントで詳細に説明しました。

そのヒントを書いたとき、私はコピーを作成しSQLCMD.exeて置き換えるというより面倒なアプローチを使用しましたsqlwriter.exe-サービスをSQLCMD.exe直接指すだけではるかに簡単です。


SQL Serverサービスを停止する余裕がある場合

シングルユーザーモードでインスタンスを再起動する必要がある、Microsoftから公式にサポートされているパスがあります。

SQL Serverを管理するためのPowershellソリューションであるdbatools.ioには、次の関数もありますReset-DbaAdmin


ここではセキュリティは主な問題ではありません

マイクロソフトにこれらのいわゆる「脆弱性」を「修正」するよう求める多くの人がいるようです。これらは、正当に所有しているSQL Serverのインスタンスへのアクセスを回復するための有効なアプローチです。これらはすべて、SQL Serverが存在する物理ホストでの昇格された特権を必要とします。複数の人に言ったように、開発者がSQL Serverのインストールをいじりたくない場合は、管理者にしないでください。


この方法でSAアカウントも有効にできますか?SAアカウントが無効になっていて、パブリックロールを持つADグループがあります。また、リストされているメソッドは、インスタンスを削除せずにこれらの手順を実行できますか?私のサーバーは現在運用環境にあるので、私は尋ねます。
ショーンパーキンス

1
@Seanはい、saを再度有効にしたり、別のSQL認証アカウントを作成したり、ADユーザー(グループではない!)をより高度なロールに追加したりすることができます。これらのいずれも、SQL Serverの再起動を必要としません(それが必要となる唯一のケースは、混合認証とWindowsのみの間の変更です)。
アーロンバートランド

プロセスを試行すると、次のエラーが表示されます。リストされているアカウントのみのスクリーンショットも撮ってください。SQL 2012のある時点で、この方法を許可しない変更がありましたか?私の現在のバージョンは11.0.3128です。さらに、どのような種類の変更を行っても問題ありません。アクセス許可がないことを示すエラーのバリエーションが表示されます。最後に、これが違いをもたらすとは思いませんが、管理者権限でPowerShellを開き、cmd.exeを実行してから、psexec -i -s "C:\ ...... smss.exe"を実行しました![アカウント作成エラー] (i.stack.imgur.com/ITOja.p
ショーンパーキンス

添付の写真には現在何も表示されていませんが、リストされている唯一のアカウントとして「SA」と「NT AUTHORITY \ SYSTEM」がありました。受信したエラーメッセージは、「ユーザーにはこのアクションを実行する権限がありません。(Microsoft SQL Server、エラー:15247)」
ショーンパーキンス14

@Sean PowerShell?PSExecはPowerShellとは関係ありません。マシンのローカル管理者ですか?本気ですか?
アーロンバートランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.