SQLServer 완전 ​​제거

SQLServer 완전 ​​제거

2022-10-04 last update

8 minutes reading SQLServerManagementStudio 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 재부팅