SQL Server 2008インスタンスを実行しています。残念ながら、テスト中にログインのsysadmin権限を選択解除しましたが、今はそれを読み取ることができません(sysadmin権限がないため)。
SAを除いて、インスタンスには他のsysadminアカウントはありません。
私はWindows認証のみに設定されていたため、レジストリのLoginModeを2にハッキングして、SA Sql Authenticationを使用してログインできるようにしました。これにより、ログインモードが実際にMixedに設定されますが、= SAユーザーはデフォルトで無効になっており、sysadmin権限がないため、再度有効にすることはできません。
SAログインを有効にして、sysadminにアクセスして通常のアカウントに再割り当てできるようにするにはどうすればよいですか?レジストリの設定もあるのですか、それともマスターデータベースに保存されていますか?
最もuber-adminタイプの接続オプションであるDedicated Administrator Connection( [〜#〜] dac [〜#〜] )。これはローカル接続としてのみ使用でき、すべての種類を取り消すことができます悪の、まだログイン資格情報が必要です。だから私はこれを行う公式の方法はないと思います。
このシステムを復活させる最も簡単な方法は、SQL Serverをシャットダウンし、ユーザーデータベースファイルを安全な場所にコピーし、アンインストール、再インストール(少なくとも以前のレベルまでのサービスパックを確実に行う)、ファイルをコピーして添付することです。データベース。 (コピーアウト/バックが必要かどうかはわかりませんが、念のため...).
サーバーレベルのオブジェクト(ログインなど)を手動で回復する必要があります
SQL Serverへの実際のバックドアは存在しますが、何も再起動したり、シングルユーザーモードで再起動したりする必要はありません。私はアクセスできなかったが、内容を確認する必要があるシステムでこれを行いました。
PSexecツールを ここ からダウンロードします。これをサーバーに配置し、コマンドプロンプトで次のコマンドを実行します:psexec -i -s SSMS.exe
、またはsqlwb.exe
これにより、SQL Serverのインスタンスへのsysadminアクセス権を持つシステムアカウントとしてSSMSが開きます。これはSQL Serverのインストール中に行われますが、SQL 2012ではそうではないと聞いています。
SQL Server 2008はSQL Server 2005とは異なり、ローカル管理者はsysadmin固定サーバーロールを継承しません。
SQL Server 2008をインストールすると、sysadminロールに追加するアカウントを指定するように求められます。ただし、ソフトウェアのインストール後に箱を受け取った場合は、あまり役に立ちません。
幸い、SQL Serverがシングルユーザーモードで実行されている場合、マイクロソフトは2005の機能を維持しました。ここではあなたが何をすべきかです:
これは素晴らしい質問です。誰かがこの状況に陥り、救出が必要になります。
サーバーのWindows管理者の場合は、PowerShell v2スクリプトを使用して、停止や既知のリスクなしにアクセスを取得できます。これは、SQLサービスがADサービスアカウント、仮想アカウントで実行されている場合、またはサービスごとのSIDで保護されている場合でも、SQL Serverサービスのログイントークンを複製することによって行われます。
以下のスクリプトは、SQL Serverサービスを反復し、不足している場所にsysadminロールに追加します。
#GITHUB Link : https://github.com/codykonior/HackSql
$userName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$services = Get-Service | Where { ($_.Name -eq 'MSSQLSERVER' -or $_.Name -like 'MSSQL$*') -and $_.Status -eq "Running" }
foreach ($service in $services) {
if ($service.Name -eq "MSSQLSERVER") {
$sqlName = ".\"
} else {
$sqlName = ".\$($service.Name.Substring(6))"
}
Write-Host "Attempting $sqlName"
$serviceProcess = Get-WmiObject -Class Win32_Service -Filter "Name = '$($service.Name)'"
Invoke-TokenManipulation -ProcessId $serviceProcess.ProcessID -ImpersonateUser | Out-Null
$impersonatedUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
Write-Host "Service $($service.Name) on PID $($serviceProcess.ProcessID) will connect to $sqlName as $impersonatedUser"
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$sqlName;Trusted_Connection=True")
$sqlConnection.Open()
$sqlCommand = New-Object System.Data.SqlClient.SqlCommand("If Not Exists (Select Top 1 0 From sys.server_principals Where name = '$userName')
Begin
Create Login [$userName] From Windows
End
If Not Exists (Select Top 1 0 From master.sys.server_principals sp Join master.sys.server_role_members srp On sp.principal_id = srp.member_principal_id Join master.sys.server_principals spr On srp.role_principal_id = spr.principal_id Where sp.name = '$userName' And spr.name = 'sysadmin')
Begin
Exec sp_addsrvrolemember '$userName', 'sysadmin'
End", $sqlConnection)
$sqlCommand.ExecuteNonQuery() | Out-Null
$sqlConnection.Close()
Invoke-TokenManipulation -RevToSelf | Out-Null
}
「sysadmin」アクセスでログインを作成することもできます。Microsoft(Saleem Hakani)のPrincipal Data Engineerに感謝し、以下のSQL Serverのヒントとテクニックを作成しました。
テストマシンのsaパスワードを忘れたときに、同様の状態で立ち往生しているときにこれを見つけました。
実行する必要がある手順は次のとおりです。
コマンドプロンプトから:SQLServr.Exe –m(またはSQLServr.exe –f)
注:Binnフォルダーが環境パスにない場合は、Binnフォルダーに移動する必要があります。
(通常、BinnフォルダーはC:\ Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binnにあります)
SQLCMD -S
SQL Serverに管理者としてログインします。
新しいログインを作成し、そのログインをSYSADMINサーバーロールに追加するには:
1> CREATE LOGIN ‘’ with PASSWORD = ’’
2>行く
1> SP_ADDSRVROLEMEMBER ‘’、 ’SYSADMIN’
2>行く
既存のログインをSYSADMINサーバーロールに追加するには、次のコマンドを実行します。
1> SP_ADDSRVROLEMEMBER ‘’、 ’SYSADMIN’
上記の操作は、既存のログインまたは新しいログインへのSYSADMIN特権の付与を処理します。
あなたは次のことができます:
1)管理者権限を持つWindowsユーザーアカウントを作成します
2)新しい管理者アカウントでWindowsにログインします
3)Windows認証を使用してSQL Server Mangement Studioを開きます
4)SQL Serverにsysadminとしてログインしているため、新しいアカウントを作成したり、saユーザーを更新したりできます