实验课速通SQLServer期末考点五:数据库维护

news/2026/1/16 17:41:35/文章来源:https://www.cnblogs.com/hanina-chata/p/19486764

View Post

实验课速通SQLServer期末考点五:数据库维护

一、实验内容

SQL Server 2017 环境下教学信息管理系统的数据库安全性控制(用户 / 角色 / 权限)与备份恢复实现。

二、实验目的

  1. 掌握 SQL Server 数据库安全性控制的核心机制:能通过CREATE LOGIN/CREATE USER创建登录名与数据库用户,通过CREATE ROLE创建自定义角色;

  2. 学会基于 “最小权限原则” 分配权限(GRANT/DENY/REVOKE),实现不同角色(学生、教师、管理员)的权限隔离;

  3. 掌握数据库备份的 SQL 实现:包括完整备份BACKUP DATABASE、差异备份,理解不同备份类型的适用场景;

  4. 掌握数据库恢复的 SQL 实现:包括完整恢复RESTORE DATABASE、差异恢复,能模拟数据丢失场景并成功恢复数据,保障教学信息管理系统数据安全。

三、实验任务

任务 1:数据库安全性控制(用户、角色、权限)

  1. 创建登录名与数据库用户:
    ◦ 创建 SQL Server 登录名:Login_Student(学生角色,密码Stu@2025)、Login_Teacher(教师角色,密码Tea@2025)、Login_Admin(管理员角色,密码Adm@2025);
    ◦ 为上述登录名在TeachingSysDB数据库中创建对应用户:User_Student、User_Teacher、User_Admin。

  2. 创建自定义角色并分配权限:
    ◦ 创建自定义数据库角色:Role_Student(学生角色)、Role_Teacher(教师角色)、Role_Admin(管理员角色);
    ◦ 为角色分配权限:
    ▪ Role_Student:仅允许查询V_Student_Computer视图、V_Student_Score视图(无修改 / 删除权限);
    ▪ Role_Teacher:允许查询Teacher表、Course表、SC表,允许修改SC表的成绩字段(无删除权限);
    ▪ Role_Admin:拥有TeachingSysDB数据库的所有权限(db_owner角色权限)。

  3. 用户关联角色:将User_Student关联Role_Student,User_Teacher关联Role_Teacher,User_Admin关联Role_Admin,验证不同用户的权限范围。

任务 2:数据库备份(完整备份与差异备份)

  1. 完整备份:使用BACKUP DATABASE对TeachingSysDB进行完整备份,备份文件路径为D:\SQLBackup\TeachingSysDB_Full.bak,备注 “实验六初始完整备份”;

  2. 模拟数据变更:向SC表插入 3 条新的选课记录(如学生2023010108选 “线性代数” 课程,成绩 88 分),模拟日常数据更新;

  3. 差异备份:基于步骤 1 的完整备份,对TeachingSysDB进行差异备份,备份文件路径为D:\SQLBackup\TeachingSysDB_Diff.bak,备注 “实验六差异备份(含新选课记录)”。

任务 3:数据库恢复(完整恢复与差异恢复)

  1. 模拟数据丢失:删除SC表中步骤 2 插入的 3 条新选课记录,模拟数据误删除场景;

  2. 完整恢复验证:使用步骤 1 的完整备份文件,将TeachingSysDB恢复到备份时的状态,验证删除的新记录是否未恢复(因完整备份不含后续变更);

  3. 差异恢复验证:基于完整恢复后的数据库,使用步骤 3 的差异备份文件进行恢复,验证删除的 3 条新选课记录是否成功恢复;

  4. 恢复后数据校验:查询SC表数据,确认恢复后的数据与模拟变更后的状态一致,无数据丢失或冗余。

四、实验步骤与参考代码

步骤 1:数据库安全性控制

1.1 创建登录名与数据库用户

-- 切换到master数据库(创建登录名需在master库执行)
USE master;
GO
-- 1. 创建学生登录名Login_Student(SQL身份验证)
CREATE LOGIN Login_Student
WITH PASSWORD = 'Stu@2025',  -- 密码需符合复杂度要求(含大小写、数字、特殊符号)DEFAULT_DATABASE = TeachingSysDB,  -- 默认数据库为TeachingSysDBCHECK_EXPIRATION = ON,  -- 启用密码过期CHECK_POLICY = ON;  -- 启用密码策略(如长度、复杂度)
GO
-- 2. 创建教师登录名Login_Teacher
CREATE LOGIN Login_Teacher
WITH PASSWORD = 'Tea@2025',DEFAULT_DATABASE = TeachingSysDB,CHECK_EXPIRATION = ON,CHECK_POLICY = ON;
GO
-- 3. 创建管理员登录名Login_Admin
CREATE LOGIN Login_Admin
WITH PASSWORD = 'Adm@2025',DEFAULT_DATABASE = TeachingSysDB,CHECK_EXPIRATION = ON,CHECK_POLICY = ON;
GO
-- 切换到TeachingSysDB数据库,为登录名创建对应数据库用户
USE TeachingSysDB;
GO
-- 1. 为Login_Student创建用户User_Student
CREATE USER User_Student FOR LOGIN Login_Student;
GO
-- 2. 为Login_Teacher创建用户User_Teacher
CREATE USER User_Teacher FOR LOGIN Login_Teacher;
GO
-- 3. 为Login_Admin创建用户User_Admin
CREATE USER User_Admin FOR LOGIN Login_Admin;
GO
PRINT '登录名与数据库用户创建完成';

1.2 创建自定义角色并分配权限

USE TeachingSysDB;
GO
-- 1. 创建自定义角色Role_Student(学生角色)
CREATE ROLE Role_Student;
GO
-- 为Role_Student分配权限:仅查询指定视图
GRANT SELECT ON V_Student_Computer TO Role_Student;  -- 允许查询计算机学院学生视图
GRANT SELECT ON V_Student_Score TO Role_Student;    -- 允许查询学生选课成绩视图
DENY INSERT, UPDATE, DELETE ON V_Student_Computer TO Role_Student;  -- 拒绝修改/删除
DENY INSERT, UPDATE, DELETE ON V_Student_Score TO Role_Student;    -- 拒绝修改/删除
GO
-- 2. 创建自定义角色Role_Teacher(教师角色)
CREATE ROLE Role_Teacher;
GO
-- 为Role_Teacher分配权限:查询多表+修改成绩
GRANT SELECT ON Teacher TO Role_Teacher;  -- 允许查询教师表
GRANT SELECT ON Course TO Role_Teacher;   -- 允许查询课程表
GRANT SELECT ON SC TO Role_Teacher;       -- 允许查询选课表
GRANT UPDATE (Grade) ON SC TO Role_Teacher;  -- 仅允许修改SC表的Grade字段
DENY DELETE ON SC TO Role_Teacher;        -- 拒绝删除选课表数据
GO
-- 3. 创建自定义角色Role_Admin(管理员角色),直接关联系统角色db_owner
CREATE ROLE Role_Admin;
GO
EXEC sp_addrolemember 'db_owner', 'Role_Admin';  -- db_owner拥有数据库所有权限
GO
PRINT '自定义角色创建与权限分配完成';

1.3 用户关联角色并验证

USE TeachingSysDB;
GO
-- 1. User_Student关联Role_Student
EXEC sp_addrolemember 'Role_Student', 'User_Student';
GO
-- 2. User_Teacher关联Role_Teacher
EXEC sp_addrolemember 'Role_Teacher', 'User_Teacher';
GO
-- 3. User_Admin关联Role_Admin
EXEC sp_addrolemember 'Role_Admin', 'User_Admin';
GO
-- 权限验证(可选,使用对应登录名登录SSMS执行以下语句)
-- 1. 用Login_Student登录,执行查询:
-- SELECT * FROM V_Student_Computer;  -- 正常返回
-- UPDATE V_Student_Computer SET 年龄=22 WHERE 学号='2023010101';  -- 报错:权限不足
-- 2. 用Login_Teacher登录,执行查询:
-- SELECT * FROM SC;  -- 正常返回
-- UPDATE SC SET Grade=90 WHERE Sno='2023010101' AND Cno='CS101';  -- 正常执行
-- DELETE FROM SC WHERE Sno='2023010101';  -- 报错:权限不足
-- 3. 用Login_Admin登录,执行查询:
-- DROP TABLE TestTable;  -- 可正常执行(db_owner权限)
PRINT '用户与角色关联完成,可通过对应登录名验证权限';

步骤 2:数据库备份

-- 1. 任务2-1:完整备份TeachingSysDB
BACKUP DATABASE TeachingSysDB
TO DISK = 'D:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\TeachingSysDB_Full.bak'  -- 备份文件路径(需提前创建D:\SQLBackup文件夹)
WITHNAME = 'TeachingSysDB_Full_Backup',  -- 备份集名称DESCRIPTION = '实验六:教学信息管理系统初始完整备份',  -- 备份描述COMPRESSION,  -- 启用备份压缩(减少文件大小)INIT;  -- 覆盖现有备份文件(首次备份建议用INIT,后续用NOINIT追加)
GO
-- 2. 任务2-2:模拟数据变更(插入3条新选课记录)
USE TeachingSysDB;
GO
INSERT INTO SC(Sno, Cno, Grade)--2023000101
VALUES
('2023010118', 'MA102', 88),  -- 学生2023010108选线性代数(MA102),成绩88
('2023010117', 'MA101', 92),  -- 学生2023010107选高等数学(MA101),成绩92
('2023010116', 'CS102', 85);  -- 学生2023010106选Python编程(CS102),成绩85
GO
-- 验证插入结果
SELECT * FROM SC WHERE Sno IN ('2023010108', '2023010107', '2023010106');
GO
-- 3. 任务2-3:差异备份TeachingSysDB(基于完整备份)
BACKUP DATABASE TeachingSysDB
TO DISK = 'D:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\TeachingSysDB_Diff.bak'
WITHNAME = 'TeachingSysDB_Diff_Backup',DESCRIPTION = '实验六:教学信息管理系统差异备份(含3条新选课记录)',COMPRESSION,DIFFERENTIAL,  -- 指定为差异备份(仅备份完整备份后变更的数据)INIT;
GO
PRINT '数据库完整备份与差异备份完成';

错误原因:不满足参照完整性,因为主表Student中缺少该字段的值。

步骤 3:数据库恢复

-- 1. 任务3-1:模拟数据丢失(删除步骤2插入的3条新记录)
USE TeachingSysDB;
GO
DELETE FROM SC
WHERE Sno IN ('2023010108', '2023010107', '2023010106')AND Cno IN ('MA102', 'MA101', 'CS102');
GO
-- 验证数据丢失:查询结果应为空
SELECT * FROM SC WHERE Sno IN ('2023010108', '2023010107', '2023010106');
GO
-- 2. 任务3-2:完整恢复(恢复到初始完整备份状态)
-- 注意:恢复数据库需先断开所有用户连接,设置数据库为单用户模式
USE master;
GO
-- 设置数据库为单用户模式(避免其他连接占用)
ALTER DATABASE TeachingSysDB
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;  -- 立即回滚未完成事务
GO
-- 执行完整恢复
RESTORE DATABASE TeachingSysDB
FROM DISK = 'D:\SQLBackup\TeachingSysDB_Full.bak'
WITHRECOVERY,  -- 恢复后数据库处于可用状态(差异恢复需先设为NORECOVERY)REPLACE,  -- 覆盖现有数据库(谨慎使用,避免误删数据)DESCRIPTION = '实验六:完整恢复到初始备份状态';
GO
-- 恢复后设置数据库为多用户模式
ALTER DATABASE TeachingSysDB
SET MULTI_USER;
GO
-- 验证完整恢复结果:新插入的3条记录未恢复(完整备份不含变更)
USE TeachingSysDB;
GO
SELECT * FROM SC WHERE Sno IN ('2023010108', '2023010107', '2023010106');  -- 结果为空
GO
-- 3. 任务3-3:差异恢复(恢复到差异备份状态)
USE master;
GO
-- 再次设置为单用户模式
ALTER DATABASE TeachingSysDB
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- 执行差异恢复(需先将完整恢复设为NORECOVERY,此处重新执行完整恢复并加NORECOVERY)
-- 步骤1:重新执行完整恢复,不恢复数据库(为差异恢复做准备)
RESTORE DATABASE TeachingSysDB
FROM DISK = 'D:\SQLBackup\TeachingSysDB_Full.bak'
WITHNORECOVERY,  -- 不恢复数据库,保持“正在恢复”状态,允许后续差异恢复REPLACE;
GO
-- 步骤2:执行差异恢复
RESTORE DATABASE TeachingSysDB
FROM DISK = 'D:\SQLBackup\TeachingSysDB_Diff.bak'
WITHRECOVERY,  -- 差异恢复后恢复数据库,使其可用DESCRIPTION = '实验六:差异恢复到含新选课记录的状态';
GO
-- 恢复后设置为多用户模式
ALTER DATABASE TeachingSysDB
SET MULTI_USER;
GO
-- 4. 任务3-4:恢复后数据校验
USE TeachingSysDB;
GO
-- 查询新插入的3条记录,确认已恢复
SELECT * FROM SC WHERE Sno IN ('2023010108', '2023010107', '2023010106');
GO
-- 对比恢复前后的数据总量(确保无其他数据丢失)
SELECT COUNT(*) AS '恢复后SC表总记录数' FROM SC;
-- (可与差异备份前的总记录数对比,应一致)
PRINT '数据库完整恢复与差异恢复完成,数据校验通过';

五、实验结果与分析

  1. 安全性控制结果:
    ◦ 成功创建 3 个 SQL 登录名(Login_Student/Login_Teacher/Login_Admin)及对应数据库用户,登录名密码符合复杂度策略,默认数据库正确指向TeachingSysDB;
    ◦ 自定义角色权限生效:Login_Student仅能查询指定视图,无法修改数据;Login_Teacher可查询多表并修改成绩,但无法删除数据;Login_Admin拥有全库权限,可执行创建 / 删除表等操作,实现了 “最小权限原则” 下的角色隔离。

  2. 数据库备份结果:
    ◦ 完整备份文件TeachingSysDB_Full.bak成功生成,大小约等于数据库实际数据量(因启用压缩,文件体积更小);
    ◦ 差异备份文件TeachingSysDB_Diff.bak仅包含完整备份后插入的 3 条记录,文件体积远小于完整备份,验证了 “差异备份仅备份变更数据” 的特性,适合日常高频备份场景。

  3. 数据库恢复结果:
    ◦ 完整恢复后,恢复到故障前的状态。

六、思考题

到此为止,所有实验均以完成,回顾一学期的学习,请思考并回答:数据库管理系统有哪些功能?
数据定义,提供数据定义的语言,如CREATE, ALTER, DROP等,用于建立、修改和删除数据库中的对象,比如表、视图和索引。数据操作,提供数据操作的语言,如SELECT, INSERT, UPDATE, DELETE等,实现对库中数据的增删改查。数据控制与安全,通过权限管理、角色控制和加密等手段保障数据安全性、完整性和并发访问的一致性。数据的存储与维护,确保数据的持久性、可靠性和高效访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1169270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spaCy从入门到精通:1.2 安装与环境配置

在开始使用spaCy之前,我们需要先安装spaCy并配置好环境。本节将详细介绍spaCy的安装过程、预训练模型的下载、安装验证以及常见问题的解决方法。 1.2.1 安装spaCy 系统要求 在安装spaCy之前,确保你的系统满足以下要求: Python版本&#xff1a…

2026年音乐放松按摩椅厂家权威推荐榜单:音乐放松椅/体感型音乐放松椅/户外素质拓展箱/团体活动工具箱/活动工具箱源头厂家精选 - 品牌推荐官

在心理健康服务日益普及、康养产业快速发展的背景下,专业机构对心理辅助设备的需求正从基础工具向智能化、综合化、场景化升级。作为心理减压、情绪调节和身心放松的重要工具,音乐放松按摩椅已广泛应用于学校、医院、…

福建卫生高级职称备考机构深度解析 - 医考机构品牌测评专家

福建卫生高级职称备考机构深度解析对于计划备考2026年福建卫生高级职称的考生而言,选择一家与自身需求匹配的培训机构至关重要。福建的考试采用“人机对话”形式,并执行“笔试当年通过,次年评审”的特殊规则,这使得…

【2026最新版】迅雷看看下载安装教程|电脑版详细安装步骤 + 常见问题解决 - PC修复电脑医生

本文提供一篇完整、可复用的 迅雷看看下载安装教程,适用于 Windows 10 / Windows 11 / Windows 7。内容涵盖官方安全下载方式、电脑版安装步骤详解、核心功能解析(边下边播 / RMVB 优化 / 云字幕 / 投屏)、实用快捷…

赣州市全南宁都于都兴国寻乌石城雅思培训辅导机构推荐:2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

基于全网数据调研、学员匿名反馈及行业专家访谈,本次针对赣州市全南、宁都、于都、兴国、寻乌、石城等区县雅思培训需求,开展全面且权威的深度测评,聚焦优质机构、高分提分、实用技巧、性价比等核心维度,梳理靠谱雅…

GEO服务商技术对决:谁能为您的AI搜索可见度保驾护航?

摘要在生成式AI重塑搜索行为的当下,GEO优化(生成式引擎优化)已成为企业获取AI流量红利、实现精准获客的关键战略。然而,面对市场上技术背景、服务模式各异的服务商,如何选择一位靠谱的“AI导航员”成为B2B决策者的新难…

基于VUE的猫舍小猫管理系统[VUE]-计算机毕业设计源码+LW文档

摘要:随着宠物行业的蓬勃发展,猫舍管理面临着效率与精准度的挑战。本文介绍基于VUE的猫舍小猫管理系统,阐述其采用的技术架构与关键技术,深入分析系统在用户管理、猫舍信息管理、小猫信息管理等方面的需求。详细描述系统的整体架构…

海外碳酸镁实力派:2025年厂家排行与优势分析,市场碳酸镁精选实力品牌榜单发布 - 品牌推荐师

行业背景:碳酸镁市场的全球竞争格局与技术迭代 全球碳酸镁市场正经历结构性变革。随着新能源、电子材料、环保治理等领域的快速发展,高纯度、低杂质、功能化碳酸镁的需求激增。据行业统计,2024年全球碳酸镁市场规模…

1.1 什么是Whisper? | 《Whisper语音识别实战专栏》

引言 语音识别技术是人工智能领域的重要分支,它能够将人类的语音转换为文本,为各种应用提供基础支持。随着深度学习技术的发展,语音识别的准确率和性能不断提升,应用场景也越来越广泛。 2022年9月,OpenAI发布了一款名…

2026陕西保安服务公司TOP5精选推荐榜:秩序维护、门卫守护、临时勤务服务 - 深度智识库

概述:行业新势能,安全新标准 随着城市化进程加速与社会安全需求多元化,陕西保安服务行业正从基础人力保障迈向专业化、智能化、综合化服务新阶段。2026年,行业竞争已从单纯人力部署升级为"技术+管理+服务&quo…

2026年全自动洗车机厂家实力推荐榜:隧道式、往复式、公交大巴及工程类智能洗车设备精选,解析无人值守与扫码洗车技术前沿 - 品牌企业推荐师(官方)

2026年全自动洗车机厂家实力推荐榜:隧道式、往复式、公交大巴及工程类智能洗车设备精选,解析无人值守与扫码洗车技术前沿 随着城市化进程的加速和汽车保有量的持续增长,传统人工洗车模式在效率、成本及环保方面面临…

NopCommerce 4.9.3全栈开发实战 - 4.3 插件生命周期管理

1. 插件生命周期概述 插件生命周期管理是NopCommerce插件系统的核心功能之一,它负责管理插件从发现、安装、启用、运行到禁用、卸载的整个生命周期。了解插件生命周期管理对于开发稳定、可靠的插件至关重要) 1.1 生命周期阶段 NopCommerce插件的生命周期…

Java SpringBoot+Vue3+MyBatis 学生宿舍信息系统系统源码|前后端分离+MySQL数据库

摘要 随着高校规模的不断扩大和学生人数的持续增加,传统的学生宿舍管理模式逐渐暴露出效率低下、信息孤岛严重等问题。宿舍管理涉及学生住宿分配、费用收缴、设备报修、访客登记等多方面内容,亟需通过信息化手段提升管理效率和服务质量。学生宿舍信息系统…

命令行中的 Python 与 Pip:版本之谜与最佳实践指南(python or python3 - pip or pip3)

命令行中的 Python 与 Pip:版本之谜与最佳实践指南(python or python3 - pip or pip3)Posted on 2026-01-16 17:28 steve.z 阅读(0) 评论(0) 收藏 举报命令行中的 Python 与 Pip:版本之谜与最佳实践指南在终端…

基于VUE的快递物流园司机管理系统[VUE]-计算机毕业设计源码+LW文档

摘要:随着快递物流行业的迅猛发展,物流园对司机的高效管理成为提升运营效率的关键。本文介绍基于VUE的快递物流园司机管理系统,阐述其采用的技术架构与关键技术,深入分析系统在司机信息管理、车辆管理、任务调度管理等方面的需求。…

VMware ESXi 8.0U3h集成新旧NVMe、USB、网卡驱动镜像版

本定制镜像专为解决ESXi8.0U3h原生驱动兼容痛点打造,在官方原版基础上深度集成全场景NVMe、USB网卡驱动包。针对新老NVMe硬盘(含PCIe5.0新款及老旧转接盘)、USB3.x/4.x网卡及小众2.5G/10G网卡,实现即插即用,彻底省去手动注入驱动的繁琐操作。…

2026年安徽代运营排行榜top5:最新权威测评发布 代运营公司排名出炉 - 野榜数据排行

安徽,作为长三角一体化发展的重要成员、中部地区电商产业崛起的核心阵地,汇聚了丰富的电商人才与优质资源,自然也孕育了众多实力雄厚的电商代运营(TP)公司。这些公司是品牌征战线上市场不可或缺的合作伙伴,为品牌…

1.1 ESPnet入门与环境搭建 | 《ESPnet2实战指南:语音处理全栈开发》

一、ESPnet框架简介 ESPnet是一个端到端的语音处理工具包,涵盖了语音识别(ASR)、文本转语音(TTS)、语音翻译(ST)、语音增强(SE)等多种语音处理任务。它使用PyTorch作为深…

2026年上海新中式装修公司推荐榜:同济经典设计,环保装修/小户型装修/日式装修/极简风装修/简欧风格装修/旧房翻新/房屋装修/意式轻奢装修/新房装修公司精选 - 品牌推荐官

走进一家装修公司的5000平方米实景样板间,徐汇区的一位业主指着一处32年老房的改造案例说:“我家的户型跟这个几乎一样,可以完全照搬这个方案吗?” 根据行业数据,上海家装市场规模预计在2026年突破千亿大关,其中…

TikTok Shop爆款选品指南:TikTok 2026怎么选品?一文全解析!

俗话说“七分选品,三分运营”,优质的产品自带“流量Buff”,不仅能帮助TikTok Shop卖家突破流量瓶颈,更能有效缩短冷启动周期,推动店铺实现从0-1的高效增长。然而,从理论共识到实际落地往往存在巨大鸿沟。在…