SQL Server 2005 Express 透過「控制台 → 新增/移除程式」卸載時,往往殘留執行個體註冊資訊、登錄機碼與檔案,導致後續重新安裝失敗。本文提供徹底卸載指令與自動備份存儲程序 + 排程任務的完整方案。
以系統管理員身分開啟命令提示字元,執行:
c:\sqlserver2005\Setup.exe /qb REMOVE=ALL INSTANCENAME=<InstanceName>
Setup.exe 為 SQLEXPR_ADV.EXE 解壓縮後的安裝程式路徑。/qb 顯示基本進度介面 (無需互動)。REMOVE=ALL 移除所有功能元件。INSTANCENAME 指定執行個體名稱 (預設為 SQLEXPRESS),若為預設執行個體可省略。此方式比圖形介面卸載更乾淨,能清除執行個體註冊、服務、登錄與資料庫檔案。
在目標資料庫執行個體上執行下列 T-SQL 腳本,建立 sp_BackupDatabase 存儲程序,支援完整、差異、交易記錄三種備份類型:
USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Edgewood Solutions
-- Create date: 2007-02-07
-- Description: Backup Database
-- Parameter1: @databaseName sysname
-- Parameter2: @backupType CHAR(1) F=Full, D=Differential, L=Log
-- =============================================
CREATE PROCEDURE [dbo].[sp_BackupDatabase]
@databaseName sysname,
@backupType CHAR(1)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sqlCommand NVARCHAR(1000);
DECLARE @dateTime NVARCHAR(20);
SELECT @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(), 111), '/', '') + REPLACE(CONVERT(VARCHAR, GETDATE(), 108), ':', '');
IF @backupType = 'F'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName + ' TO DISK = ''C:\Backup\' + @databaseName + '_Full_' + @dateTime + '.BAK''';
IF @backupType = 'D'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName + ' TO DISK = ''C:\Backup\' + @databaseName + '_Diff_' + @dateTime + '.BAK'' WITH DIFFERENTIAL';
IF @backupType = 'L'
SET @sqlCommand = 'BACKUP LOG ' + @databaseName + ' TO DISK = ''C:\Backup\' + @databaseName + '_Log_' + @dateTime + '.TRN''';
EXECUTE sp_executesql @sqlCommand;
END
GO
注意:執行前請確認 C:\Backup 資料夾存在且 SQL Server 服務帳戶具備寫入權限。建議將備份路徑改為非系統磁碟。
新建文字檔 C:\Backup\BackupJob.sql,內容如下:
sp_BackupDatabase 'master', 'F'
GO
sp_BackupDatabase 'model', 'F'
GO
sp_BackupDatabase 'msdb', 'F'
GO
QUIT
可依需求增減資料庫與備份類型 (如使用者資料庫每日完整、每小時記錄)。
sqlcmd.exe (通常位於 C:\Program Files\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exe)。sqlcmd -S SERVERNAME -E -i C:\Backup\BackupJob.sql-S SERVERNAME:目標伺服器名稱 (本機可用 (local) 或 .\SQLEXPRESS)。-E:使用 Windows 整合驗證 (需執行排程的帳戶具備 sysadmin 角色)。-i:指定輸入腳本檔。sp_send_dbmail 或呼叫外部 PowerShell 腳本。