首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 視圖與資料庫快照完整實戰:建立、索引、更新架構與快照恢復

     編輯:MySQL 資料庫相關知識

SQL Server 視圖 (虛擬表) 與資料庫快照 (靜態唯讀副本) 實戰指南:視圖建立/修改/索引/架構同步,快照建立/查詢/恢復/結構隔離驗證。

一、視圖核心概念

  • 虛擬表,內容源自查詢結果集
  • 無實體儲存 (除非建立索引視圖)
  • 可篩選欄位、隱藏敏感資料、簡化複雜 JOIN

二、視圖 T-SQL 完整操作

建立視圖

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'newView')
    DROP VIEW newView;
GO

CREATE VIEW newView AS
SELECT 學號=id, 姓名=name, 年齡=age FROM student;
GO

SELECT * FROM newView;

ORDER BY 必搭配 TOP

CREATE VIEW newView AS
SELECT TOP 10 學號=id, 姓名=name, 年齡=age FROM student
ORDER BY id DESC;

修改視圖

ALTER VIEW newView AS
SELECT TOP 20 * FROM student ORDER BY id DESC;

架構變更同步 (關鍵!)

-- 基礎表新增欄位
ALTER TABLE student ADD mail VARCHAR(20);

-- 視圖不自動同步,需呼叫系統程序
EXEC sp_refreshview 'newView';  -- 或 studentView

-- 此後 SELECT * FROM newView 才會包含 mail 欄位

更新視圖數據 (有限制)

對視圖 INSERT/UPDATE/DELETE 實為操作基礎表,但多表 JOIN、衍生欄位、聚合等場景受限,**建議直接操作基礎表**。

三、資料庫快照完整實戰

建立快照

IF EXISTS (SELECT * FROM sys.databases WHERE name = 'webDB_DBSS')
    DROP DATABASE webDB_DBSS;
GO

CREATE DATABASE webDB_DBSS ON
( NAME = webDB, FILENAME = 'D:\webDB_DBSS.ss' )  -- 必須 .ss 後綴
AS SNAPSHOT OF webDB;
GO

快照隔離性驗證

-- 修改源資料庫
USE webDB;
UPDATE student SET name='偉大' WHERE id = 10;

-- 查詢源庫: 顯示 '偉大'
SELECT * FROM student WHERE id = 10;

-- 查詢快照: 仍顯示原值
USE webDB_DBSS;
SELECT * FROM student WHERE id = 10;

結構變更隔離

-- 源庫新增欄位/刪除表
ALTER TABLE webDB.dbo.student ADD address VARCHAR(20);
DROP TABLE webDB.dbo.newTable;

-- 快照完全不受影響
SELECT * FROM webDB_DBSS.dbo.student;  -- 無 address 欄位
SELECT * FROM webDB_DBSS.dbo.newTable; -- 表仍存在

從快照恢復 (還原至建立時間點)

RESTORE DATABASE webDB FROM DATABASE_SNAPSHOT = 'webDB_DBSS';
GO

-- 所有修改被撤銷,結構變更被回滾
SELECT * FROM webDB.dbo.student;  -- name 還原
SELECT * FROM webDB.dbo.newTable; -- 表恢復

四、快照應用場景

  • 📊 報表服務:凍結特定時間點數據
  • 🔄 鏡像輔助讀寫分離:快照承擔讀請求
  • 🧪 測試/變更前備份:風險操作前建立快照,失敗秒級恢復
  • ⚡ 比備份恢復快:頁面級複製,僅儲存變更頁面

五、快照限制

  • 需與源庫同實例
  • 源庫不可刪除/分離/還原
  • 唯讀,不可寫入
  • 大量寫入源庫導致快照增長,影響效能
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved