なんらかのトラブルでSQLサーバをアンインストールしたいことがあります。
例えばデータベースのパスワードを忘れてしまった、アプリとの連携がうまくいかない・・・
アプリ機能からSQLSサーバのアンインストールし再度入れなおしても以前の情報がのこっており
上書きインストールしてもダメです。
いろいろ当たりましたが以下のサイトが一番有力でした。
SQL Server の手動アンインストール手順 を参考にしながらの補足説明になってます。
ここにない情報でポイントを書いておきますね。
0.まず最初に、
・「アプリと機能一覧」に残っていてもかまわない(通常の削除していなくても)
・予め、「サービス一覧」より「SQL Server(インスタンス名)を「サービス停止」しておく(毎回聞かれず便利)
2. MsiExec.exe /x によるコンポーネントアンインストールにて
・途中でエラーがでますが、そのままあきらめずに順番に進めていってください。
msiexec /x GUID
(例) msiexec /x{202AAF1F-69AA-442A-B59F-6B54B1AD07C6}
/xと{202A~07C6}の間はスペースをつくらない。すると「この製品をアンインストールしますか?」ポップアップがでます。
3. GAC の削除にて
・バッチファイルの作り方
バッチファイル内容をメモ帳で作成し、ファイル名.batとうものを作る、起動しやすいようにCドライブなら適当なファイル名を作りそこの下に置いておく
ここまでくればあとはもう少しです。
More than 3 years have passed since last update.
posted at 2019-08-08
updated at 2019-08-11
SSMSが起動しない不具合発生後に「プログラムと機能」からの削除と再起動を行った所再発したため、備忘録として
この記事はMicrosoft Japan SQL Server Support Teamのブログを参考に、
手順をさらにスクリプト化した物となります。
1.「プログラムと機能」から削除
- コントロールパネルのアドレスバーに「コントロール パネル\プログラム\プログラムと機能」と入れると移動できる
- SQL Server関連の物を削除
2.「プログラムと機能」に「SQL」が含まれるプログラムがないか検索、あれば削除する
- 管理者権限PowerShellで実行
Get-Item -Path "Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" | # レジストリからアンインストール可能な物を取得 ForEach-Object { $dispname = (Get-Item -Path "Registry::$_").GetValue("DisplayName"); if($dispname -ne $null -and $dispname.IndexOf("SQL") -gt -1){ "[" + $dispname + "]`t" + (Get-Item -Path "Registry::$_").GetValue("UninstallString"); } } | # SQLが含まれるプログラムのUninstallStringを取得 Out-String -Stream | # 文字列配列化 ForEach-Object {$_.ToString().Trim() -replace ".*`t",""} | # 各行のタブ文字以前を削除し、UninstallStringのみにする ForEach-Object {$_.ToString().Trim() -replace "MsiExec.exe \/X","MsiExec.exe /x """} | # 各行をコマンドに変更① ForEach-Object {$_.ToString().Trim() -replace "MsiExec.exe \/I","MsiExec.exe /x """} | # 各行をコマンドに変更② ForEach-Object {$_.ToString().Trim() -replace "}","}"""} | # 各行をコマンドに変更③ ForEach-Object {Invoke-Expression "${_}"} # 各行を実行
3.GACから削除
- 管理者権限コマンドプロンプトで実行
REM ======================= if exist "%windir%\assembly\GAC\*SQLServer*" del /s /q /f "%windir%\assembly\GAC\*SQLServer*" if exist "%windir%\assembly\GAC_32\*SQLServer*" del /s /q /f "%windir%\assembly\GAC_32\*SQLServer*" if exist "%windir%\assembly\GAC_64\*SQLServer*" del /s /q /f "%windir%\assembly\GAC_64\*SQLServer*" if exist "%windir%\assembly\GAC_MSIL\*SQLServer*" del /s /q /f "%windir%\assembly\GAC_MSIL\*SQLServer*" REM =======================
4.レジストリキーを削除
- 管理者権限コマンドプロンプトで実行
- 名称にMSSQL又はSQL Serverが含まれるレジストリキーを削除
for /f "delims= usebackq" %i in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft" ^| findstr /C:"MSSQL" /C:"SQL Server"`) do (reg delete "%i" /f)
5.SQLServer関連のフォルダの削除
- 管理者権限コマンドプロンプトで実行
REM ======================= if exist "%USERPROFILE%\Local Settings\Application Data\Microsoft\Microsoft SQL Server" rmdir /S /Q "%USERPROFILE%\Local Settings\Application Data\Microsoft\Microsoft SQL Server" if exist "%USERPROFILE%\Application Data\Microsoft\Microsoft SQL Server" rmdir /S /Q "%USERPROFILE%\Application Data\Microsoft\Microsoft SQL Server" if exist "%USERPROFILE%\All Users\Application Data\Microsoft\Microsoft SQL Server" rmdir /S /Q "%USERPROFILE%\All Users\Application Data\Microsoft\Microsoft SQL Server" if exist "%ProgramFiles%\Microsoft SQL Server" rmdir /S /Q "%ProgramFiles%\Microsoft SQL Server" if exist "%ProgramFiles(x86)%\Microsoft SQL Server" rmdir /S /Q "%ProgramFiles(x86)%\Microsoft SQL Server" REM =======================
6.TEMP内のリソース削除
- 管理者権限コマンドプロンプトで実行
- 使用中で削除できなかった物は無視で良い
del %TEMP%\* /S /Q del %systemroot%\temp\* /S /Q
91.インストールディレクトリや共有機能ディレクトリを変更した場合は、自分で削除
99.OS再起動
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
What you can do with signing up