28
27

More than 5 years have passed since last update.

SQLServerを完全アンインストールする

Last updated at Posted at 2019-08-08

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再起動

28
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
27