mssql 修改SQLSERVER 查询超时时间


摘要:
下文讲述查询分析器中,限制sql脚本执行超时的情况处理,如下所示:
实验环境:sql server 2008 R2


修改查询分析器中脚本超时的方式
1.使用SSMS连接到相应的数据库引擎
2.新建查询分析器
3.点击菜单”工具”–>”选项”–>”查询执行”–>”sqlserver”–>”常规”

默认情况 0 代表无时间限制
当输入一个大于零的数,
例:输入5,代表5秒后 查询超时

mssql_sqlserver_ssms_超时设置

mssql_sqlserver_ssms_超时设置

delete 删除视图,是否可以达到同时删除多表的效果呢


摘要:
下文通过举例讲述delete对视图的删除效果,如下所示:
实验环境:sql server 2008 R2


   /* 
   1. 新建两张物理表
   2. 分别向表中插入相应的数据
   3. 新建视图

   4. 执行删除视图中的数据
   5. 查看物理表中的数据

   6. 删除视图、删除基础表
   */
create table [maomao365.com_A]
(keyIdA int,infoA nvarchar(30))

create table [maomao365.com_B]
(keyIdB int,infoB nvarchar(30))
go

insert into [maomao365.com_A]
(keyIdA,infoA)values
(1,'sqlblog'),(2,N'sql教程'),
(10,'s')
go
insert into [maomao365.com_B]
(keyIdB,infoB)values
(1,'sqlblog'),(2,N'sql教程')
go

create view vw_maomao
as  
       select 
       a.keyIdA,a.infoA,
       b.keyIdB,b.infoB 
       from [maomao365.com_A] a
        left join 
        [maomao365.com_B] b 
        on a.keyIdA = b.keyIdB 
go


/*
删除数据出错,出现影响多个基表,禁止删除
*/
delete from vw_maomao 
where keyIdA =10 
go

/*
修改视图为子查询模式
*/
alter view vw_maomao
as 
 select a.keyIdA,a.infoA
  from [maomao365.com_A] a
    where a.keyIdA in 
    ( 
     select keyIdb from [maomao365.com_B]
    )     
       go

select * from vw_maomao 
print '--重新执行删除操作--'
delete from vw_maomao 
where keyIdA =1 
go

go 
drop     view  vw_maomao

go
truncate table  [maomao365.com_A]
drop     table  [maomao365.com_A]

go
truncate table  [maomao365.com_B]
drop     table  [maomao365.com_B]


从以上的例子,我们可以看出如果视图涉及多个表时,我们不能对视图执行delete操作,只有当视图中涉及一个基础表时,才可以对视图执行删除操作,
即视图同时删除多表数据的情况是不可能发生。

mssql sqlserver 游标的分类


摘要:
下文根据游标结果集的类型对游标进行分类,如下所示:
实验环境:sql server 2008 R2



游标分类:

游标常被分为以下四类:

1.静态游标

静态游标结果集:指游标结果集中的数据,一旦生成就不会发生变化。
例:
生成一个静态游标,并将查询的结果集放入游标中,当我们对原表中的数据进行操作时,静态游标中的数据不会发生变化(除非我们重新生成游标)。

2.动态游标

动态游标相对静态游标而言,当游标结果集中所对应的原始表中的数据发生变化,原始表数据的变化对游标均可见。

3.只进游标

只进游标又称之为前进游标,只支持对游标从头到尾依次读取数据。
游标不可向后滚动。
只进游标不支持滚动,只支持从头到尾顺序提取数据,数据库执行增删改,在提取时是可见的,但由于该游标只能进不能向后滚动,所以在行提取后对行做增删改是不可见的。

4.keyset游标

keyset游标,表中各成员身份和顺序都是固定的。当打开游标时,游标结果集中行数据被唯一标识符标识,被标识的列做删改时,用户滚动游标是可见的,如果没被标识的列增该,则不可见,比如insert一条数据,是不可见的,若可见,须关闭重新打开游标

静态游标在使用时无法检测到表数据变化,占用系统资源较少;
动态游标在使用时可检测到数据变化,占用系统资源较多;
keyset游标则处于他们中间,所以根据需求建立适合自己的游标,避免资源浪费。