SQL Server 利用触发器对多表视图进行更新

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 原文 http://www.cnblogs.com/liyifeng/archive/2013/05/05/3056968.html 其步骤就是:利用update操作触发器产生的2个虚拟表【inserted】用来存储修改的数据信息和【deleted】表,然后将对应的数据更新到对应数据表中的字段信息中; 1.

原文 http://www.cnblogs.com/liyifeng/archive/2013/05/05/3056968.html

其步骤就是:利用update操作触发器产生的2个虚拟表【inserted】用来存储修改的数据信息和【deleted】表,然后将对应的数据更新到对应数据表中的字段信息中;

1.首先创建3个表:

a.信息表:

复制代码
 1 USE [SQL-LI]
 2 BEGIN TRANSACTION CHUANGJIAN_XINXIN_TAB 
 3 --创建命名为【XINXIN_TAB】的数据表,同时不允许字段为空
 4 CREATE TABLE XINXIN_TAB
 5 (
 6 姓名 NVARCHAR(10) NOT NULL,
 7 性别 NVARCHAR(1) NOT NULL,
 8 学号 INT NOT NULL,
 9 班级 NVARCHAR(20) NOT NULL,
10 出生日期 DATE NOT NULL,
11 CONSTRAINT XUEHAO_YUESU PRIMARY KEY CLUSTERED
12 ([学号]ASC)
13 )
14 COMMIT TRANSACTION CHUANGJIAN_XINXI_TAB
15 GO
复制代码

b.明细分数表:

复制代码
USE [SQL-LI] 
CREATE TABLE FENSHU_TAB
(
[学号] INT NOT NULL,
[语文] DECIMAL(3,1) NOT NULL,
[数学] DECIMAL(3,1) NOT NULL,
[英语] DECIMAL(3,1) NOT NULL
)
GO
复制代码

c.综合分数表:

复制代码
USE [SQL-LI] 
CREATE TABLE ZHONGHE_TAB
(
[姓名] NVARCHAR(10) NOT NULL,
[学号] INT NOT NULL,
[总分] DECIMAL(4,1) NOT NULL,
[平均分] DECIMAL(3,1) NOT NULL)
GO
复制代码

2.1.【信息表】和【明细分数表】插入对应表中的数据:

插入【信息表】和【明细分数表】的数据
复制代码
USE [SQL-LI] 
--插入【XINXIN_TAB】表中的5条记录
INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('李晓峰',6080,'','计算机','2013-05-03')

INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('李晓峰1',6081,'','计算机1','2013-05-04')

INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('李晓峰2',6082,'','计算机2','2013-05-05')

INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('李晓峰3',6083,'','计算机3','2013-05-06')

INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('张晓',6084,'','美术','2013-05-07')

--插入【FENSHU_TAB】表中的5条记录
INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6080,99.5,98.6,59.2)

INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6081,93.5,94.3,55.8)

INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6082,96.5,78.6,58.5)

INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6083,99.5,68.4,89.2)

INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6084,99.7,98.7,59.4)
GO
复制代码

 

【信息表】的数据:

【明细分数表】的数据:

2.2.运算记录【综合分数表】的数据:

 

插入【ZHONGHE_TAB】中的数据
复制代码
 1 USE [SQL-LI] 
 2 --声明3个变量分别用来接收【平均分】,【总分】,【姓名】,和一个控制循环的条件变量@I_WHILE_XUEHAO
 3 DECLARE @I_WHILE_XUEHAO INT,@ZONGFEN DECIMAL(4,1),@AVGFEN DECIMAL(3,1),@XINGMING NVARCHAR(10);
 4 SELECT @I_WHILE_XUEHAO =6080;
 5 --使这个变量【@I_WHILE_XUEHAO】的值指定在【学号】字段上
 6 WHILE(@I_WHILE_XUEHAO >=6080 AND @I_WHILE_XUEHAO <6085)
 7 BEGIN
 8 --求取【平均分】,【总分】,【姓名】并存在声明的变量中
 9 SELECT @ZONGFEN =(F.语文 +F.数学 +F.英语 ),@AVGFEN =(F.语文 +F.数学 +F.英语 )/3,@XINGMING =X.姓名 
10 FROM[DBO].XINXIN_TAB AS X INNER JOIN [DBO].FENSHU_TAB AS F ON X.学号 =F.学号 
11 WHERE X.学号 =@I_WHILE_XUEHAO  --与【学号同步】
12 --将其变量的数据插入到【ZHONGHE_TAB】的对应字段上
13 INSERT INTO [DBO].ZHONGHE_TAB ([姓名] ,[学号] ,[平均分] ,[总分] )
14 VALUES(@XINGMING ,@I_WHILE_XUEHAO ,@AVGFEN ,@ZONGFEN )
15 SELECT @I_WHILE_XUEHAO +=1;   --与【学号同步】
16 END
17 GO
复制代码

 【综合分数表】的数据:

3.1.1.创建3个表关联的视图:

复制代码
 1 USE [SQL-LI] 
 2 GO
 3 CREATE VIEW SHITU_FFENSHU_XINXI(姓名,学号,平均分,总分,班级,出生日期)
 4 AS
 5 SELECT TOP 800 X.姓名 ,F.学号 ,Z.平均分 ,Z.总分 ,X.班级 ,X.出生日期 
 6 FROM[DBO].XINXIN_TAB AS X INNER JOIN [DBO].FENSHU_TAB AS F ON X.学号 =F.学号 
 7     INNER JOIN [DBO].ZHONGHE_TAB AS Z ON F.学号 =Z.学号 
 8     ORDER BY F.学号 ASC
 9     GO
10     
复制代码

查看创建的视图:

3.2.1.通过视图修改多个数据表的信息????:

1 UPDATE [SQL-LI].[dbo].[SHITU_FFENSHU_XINXI]
2    SET [姓名] = 'aaaaa', --字段在【信息表】中
3        [平均分] =111    --此次字段在【分数】中
4  WHERE [学号]=6080
5 GO

结果:

下面就写个利用触发器对其多表进行更新的方法:

a.这里就利用instead of 代替触发来代替对各表中的字段内的信息进行修改:

 

复制代码
USE [SQL-LI] 
GO
CREATE TRIGGER TRIGG_UPDATE --创建一个upda触发器DML
--关联到[SHITU_FFENSHU_XINXI]视图上
ON[DBO].[SHITU_FFENSHU_XINXI]
INSTEAD OF UPDATE  --代替触发器执行UPDATE功能;【但是只能定义一个增删改的INSTEAD OF代替触发】。
AS
--声明接受变量用于存储【inserted】表上的数据
DECLARE @XINGMING NVARCHAR(10),@XUEHAO INT,@AVGFEN DECIMAL(3,1),@ZONGFEN DECIMAL(4,1),
        @BANJI NVARCHAR(20),@CHUSHENGRIQI DATE;
        --筛选【inserted】表中学号最小的一行数据
SELECT @XUEHAO =MIN(学号) FROM[inserted] 
--遍历【inserted】表

WHILE(@XUEHAO IS NOT NULL)
BEGIN
--将【inserted】表中的数据存放到相应的变量中
SELECT @XUEHAO =MIN([学号])FROM[inserted] WHERE [学号]=@XUEHAO  
SELECT @XINGMING=[姓名] FROM[inserted] WHERE[学号] =@XUEHAO 
SELECT @AVGFEN=[平均分]FROM[inserted] WHERE[学号] =@XUEHAO 
SELECT @ZONGFEN=[总分] FROM[inserted] WHERE[学号] =@XUEHAO 
SELECT @BANJI =[班级]FROM[inserted] WHERE[学号] =@XUEHAO 
SELECT @CHUSHENGRIQI=[出生日期]FROM[inserted] WHERE[学号] =@XUEHAO 

--找出视图中的字段对应相应表的字段
/*因为视图中的[姓名]/[班级]/[出生日期]字段是XINXIN_TAB 中的字段,故修改【XINXIN_TAB】中对应的字段
数据之*/
UPDATE[DBO].XINXIN_TAB 
SET [姓名]=@XINGMING  ,[班级]=@BANJI  ,[出生日期]=@CHUSHENGRIQI 
WHERE[学号]=@XUEHAO 

--道理同上
UPDATE[DBO].FENSHU_TAB 
SET[学号]=@XUEHAO 
WHERE[学号]=@XUEHAO 

--道理同上
UPDATE[DBO].ZHONGHE_TAB 
SET[平均分]=@AVGFEN ,[总分]=@ZONGFEN 
WHERE[学号]=@XUEHAO 

--修改完成后就开始筛选【inserted】表中下一条数据记录
SELECT @XUEHAO =MIN([学号])FROM[inserted] WHERE[学号]>@XUEHAO
--然后给while中判断 
END
GO
复制代码

a1.注意的是视图不是数据表没有存放数据,将从【inserted】表中的数据提取后赋给对应数据表内的字段中;

对象资源管理器中的图示:

 3.万事俱备,开始通过视图修改多表中的数据(验证):

a.

复制代码
USE [SQL-LI] 
--查看未修改前的视图数据信息
SELECT* FROM[DBO].SHITU_FFENSHU_XINXI 
GO

UPDATE[DBO].SHITU_FFENSHU_XINXI 
--修改【SHITU_FFENSHU_XINXI】中对应的字段数据
SET[姓名]='liyifeng' ,[平均分]=66.6 ,[总分]=88.8 ,[班级]='计算机SQLServer' ,[出生日期]='2013-05-05' 
--修改筛选
WHERE[学号]=6080 
GO
--查看修改后的视图数据信息
SELECT* FROM[DBO].SHITU_FFENSHU_XINXI 
GO
复制代码

修改前后对比的结果图示:

 修改后的数据表中的数据:

USE [SQL-LI] 
SELECT* FROM[XINXIN_TAB]  WHERE[学号]=6080
SELECT* FROM[FENSHU_TAB]  WHERE[学号]=6080
SELECT* FROM[ZHONGHE_TAB] WHERE[学号]=6080
GO

 4.触发器在数据库里面就像颗炸弹一样,只要满足气要求就会被触发,就会对数据库里面的数据进行触发修改,所以不需要室就尽量将其关闭掉,用的时候就将其开启:

关闭:

USE [SQL-LI] 
GO
DISABLE TRIGGER [DBO].TRIGG_UPDATE --关闭触发器【TRIGG_UPDATE】
ON SHITU_FFENSHU_XINXI
GO

开启:

USE [SQL-LI] 
GO
ENABLE TRIGGER [DBO].TRIGG_UPDATE  --开启触发器【TRIGG_UPDATE】
ON[DBO].[SHITU_FFENSHU_XINXI] --触发器所在的视图
GO

其步骤就是利用update操作的触发器会触发出2个虚拟表,【inserted】用来存储修改的数据信息和【deleted】表,然后将对用数据赋给对应的数据表中的字段内;

GO

 

 

 

 

 

---恢复内容结束---

1.首先创建3个表:

a.信息表:

复制代码
 1 USE [SQL-LI]
 2 BEGIN TRANSACTION CHUANGJIAN_XINXIN_TAB 
 3 --创建命名为【XINXIN_TAB】的数据表,同时不允许字段为空
 4 CREATE TABLE XINXIN_TAB
 5 (
 6 姓名 NVARCHAR(10) NOT NULL,
 7 性别 NVARCHAR(1) NOT NULL,
 8 学号 INT NOT NULL,
 9 班级 NVARCHAR(20) NOT NULL,
10 出生日期 DATE NOT NULL,
11 CONSTRAINT XUEHAO_YUESU PRIMARY KEY CLUSTERED
12 ([学号]ASC)
13 )
14 COMMIT TRANSACTION CHUANGJIAN_XINXI_TAB
15 GO
复制代码

b.明细分数表:

复制代码
USE [SQL-LI] 
CREATE TABLE FENSHU_TAB
(
[学号] INT NOT NULL,
[语文] DECIMAL(3,1) NOT NULL,
[数学] DECIMAL(3,1) NOT NULL,
[英语] DECIMAL(3,1) NOT NULL
)
GO
复制代码

c.综合分数表:

复制代码
USE [SQL-LI] 
CREATE TABLE ZHONGHE_TAB
(
[姓名] NVARCHAR(10) NOT NULL,
[学号] INT NOT NULL,
[总分] DECIMAL(4,1) NOT NULL,
[平均分] DECIMAL(3,1) NOT NULL)
GO
复制代码

2.1.【信息表】和【明细分数表】插入对应表中的数据:

插入【信息表】和【明细分数表】的数据
复制代码
USE [SQL-LI] 
--插入【XINXIN_TAB】表中的5天记录
INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('李晓峰',6080,'','计算机','2013-05-03')

INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('李晓峰1',6081,'','计算机1','2013-05-04')

INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('李晓峰2',6082,'','计算机2','2013-05-05')

INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('李晓峰3',6083,'','计算机3','2013-05-06')

INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] )
VALUES('张晓',6084,'','美术','2013-05-07')

--插入【FENSHU_TAB】表中的5天记录
INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6080,99.5,98.6,59.2)

INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6081,93.5,94.3,55.8)

INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6082,96.5,78.6,58.5)

INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6083,99.5,68.4,89.2)

INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] )
VALUES(6084,99.7,98.7,59.4)
GO
复制代码

【信息表】的数据:

【明细分数表】的数据:

2.2.运算记录【综合分数表】的数据:

 

插入【ZHONGHE_TAB】中的数据

 【综合分数表】的数据:

3.1.1.创建3个表关联的视图:

复制代码
 1 USE [SQL-LI] 
 2 GO
 3 CREATE VIEW SHITU_FFENSHU_XINXI(姓名,学号,平均分,总分,班级,出生日期)
 4 AS
 5 SELECT TOP 800 X.姓名 ,F.学号 ,Z.平均分 ,Z.总分 ,X.班级 ,X.出生日期 
 6 FROM[DBO].XINXIN_TAB AS X INNER JOIN [DBO].FENSHU_TAB AS F ON X.学号 =F.学号 
 7     INNER JOIN [DBO].ZHONGHE_TAB AS Z ON F.学号 =Z.学号 
 8     ORDER BY F.学号 ASC
 9     GO
10     
复制代码

查看创建的视图:

3.2.1.通过视图修改多个数据表的信息????:

1 UPDATE [SQL-LI].[dbo].[SHITU_FFENSHU_XINXI]
2    SET [姓名] = 'aaaaa', --字段在【信息表】中
3        [平均分] =111    --此次字段在【分数】中
4  WHERE [学号]=6080
5 GO

结果:

下面就写个利用触发器对其多表进行更新的方法:

a.这里就利用instead of 代替触发来代替对各表中的字段内的信息进行修改:

 

复制代码
USE [SQL-LI] 
GO
CREATE TRIGGER TRIGG_UPDATE --创建一个upda触发器DML
--关联到[SHITU_FFENSHU_XINXI]视图上
ON[DBO].[SHITU_FFENSHU_XINXI]
INSTEAD OF UPDATE  --代替触发器执行UPDATE功能;【但是只能定义一个增删改的INSTEAD OF代替触发】。
AS
--声明接受变量用于存储【inserted】表上的数据
DECLARE @XINGMING NVARCHAR(10),@XUEHAO INT,@AVGFEN DECIMAL(3,1),@ZONGFEN DECIMAL(4,1),
        @BANJI NVARCHAR(20),@CHUSHENGRIQI DATE;
        --筛选【inserted】表中学号最小的一行数据
SELECT @XUEHAO =MIN(学号) FROM[inserted] 
--遍历【inserted】表

WHILE(@XUEHAO IS NOT NULL)
BEGIN
--将【inserted】表中的数据存放到相应的变量中
SELECT @XUEHAO =MIN([学号])FROM[inserted] WHERE [学号]=@XUEHAO  
SELECT @XINGMING=[姓名] FROM[inserted] WHERE[学号] =@XUEHAO 
SELECT @AVGFEN=[平均分]FROM[inserted] WHERE[学号] =@XUEHAO 
SELECT @ZONGFEN=[总分] FROM[inserted] WHERE[学号] =@XUEHAO 
SELECT @BANJI =[班级]FROM[inserted] WHERE[学号] =@XUEHAO 
SELECT @CHUSHENGRIQI=[出生日期]FROM[inserted] WHERE[学号] =@XUEHAO 

--找出视图中的字段对应相应表的字段
/*因为视图中的[姓名]/[班级]/[出生日期]字段是XINXIN_TAB 中的字段,故修改【XINXIN_TAB】中对应的字段
数据之*/
UPDATE[DBO].XINXIN_TAB 
SET [姓名]=@XINGMING  ,[班级]=@BANJI  ,[出生日期]=@CHUSHENGRIQI 
WHERE[学号]=@XUEHAO 

--道理同上
UPDATE[DBO].FENSHU_TAB 
SET[学号]=@XUEHAO 
WHERE[学号]=@XUEHAO 

--道理同上
UPDATE[DBO].ZHONGHE_TAB 
SET[平均分]=@AVGFEN ,[总分]=@ZONGFEN 
WHERE[学号]=@XUEHAO 

--修改完成后就开始筛选【inserted】表中下一条数据记录
SELECT @XUEHAO =MIN([学号])FROM[inserted] WHERE[学号]>@XUEHAO
--然后给while中判断 
END
GO
复制代码

a1.注意的是视图不是数据表没有存放数据,将从【inserted】表中的数据提取后赋给对应数据表内的字段中;

对象资源管理器中的图示:

 3.万事俱备,开始通过视图修改多表中的数据(验证):

a.

复制代码
USE [SQL-LI] 
--查看未修改前的视图数据信息
SELECT* FROM[DBO].SHITU_FFENSHU_XINXI 
GO

UPDATE[DBO].SHITU_FFENSHU_XINXI 
--修改【SHITU_FFENSHU_XINXI】中对应的字段数据
SET[姓名]='liyifeng' ,[平均分]=66.6 ,[总分]=88.8 ,[班级]='计算机SQLServer' ,[出生日期]='2013-05-05' 
--修改筛选
WHERE[学号]=6080 
GO
--查看修改后的视图数据信息
SELECT* FROM[DBO].SHITU_FFENSHU_XINXI 
GO
复制代码

修改前后对比的结果图示:

 修改后的数据表中的数据:

USE [SQL-LI] 
SELECT* FROM[XINXIN_TAB]  WHERE[学号]=6080
SELECT* FROM[FENSHU_TAB]  WHERE[学号]=6080
SELECT* FROM[ZHONGHE_TAB] WHERE[学号]=6080
GO

 4.触发器在数据库里面就像颗炸弹一样,只要满足气要求就会被触发,就会对数据库里面的数据进行触发修改,所以不需要室就尽量将其关闭掉,用的时候就将其开启:

关闭:

USE [SQL-LI] 
GO
DISABLE TRIGGER [DBO].TRIGG_UPDATE --关闭触发器【TRIGG_UPDATE】
ON SHITU_FFENSHU_XINXI
GO

开启:

USE [SQL-LI] 
GO
ENABLE TRIGGER [DBO].TRIGG_UPDATE  --开启触发器【TRIGG_UPDATE】
ON[DBO].[SHITU_FFENSHU_XINXI] --触发器所在的视图
GO

 

GO

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 数据库
创建SQL Server视图
【8月更文挑战第19天】创建SQL Server视图
52 1
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
129 13
|
4月前
|
SQL 存储 数据管理
深入理解SQL中的触发器
【8月更文挑战第31天】
65 0
|
5月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
5月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
69 6
|
5月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
448 1
|
5月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
367 3
|
4月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
528 0
|
5月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。