Help us understand the problem. What is going on with this article?

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした