SQL Server常用到的几个设置选项
答案:2 悬赏:40 手机版
解决时间 2021-01-23 09:21
- 提问者网友:你独家记忆
- 2021-01-23 04:30
SQL Server常用到的几个设置选项
最佳答案
- 五星知识达人网友:梦中风几里
- 2021-01-23 05:12
1. SET DEADLOCK_PRIORITY
2. SET LOCK_TIMEOUT
3.@@LOCK_TIMEOUT
4.SET IDENTITY_INSERT
5.SET IMPLICIT_TRANSACTIONS
6.SET NOCOUNT
7.@@ROWCOUNT
8.SET ROWCOUNT
9.SET TRANSACTION ISOLATION LEVEL
10.SET XACT_ABORT
1. SET DEADLOCK_PRIORITY
说明:控制在发生死锁情况时会话的反应方式。如果两个进程都锁定数据,并且直到其它进程释放自己的锁时,每个进程才能释放自己的锁,即发生死锁情况。
语法:SET DEADLOCK_PRIORITY { LOW | NORMAL | @deadlock_var }
参数:LOW 指定当前会话为首选死锁牺牲品。Microsoft® SQL Server™ 自动回滚死锁牺牲品的事务,并给客户端应用程序返回 1205 号死锁错误信息。
NORMAL 指定会话返回到默认的死锁处理方法。
@deadlock_var 是指定死锁处理方法的字符变量。如果指定 LOW,则 @deadlock_var 为 3;如果指定 NORMAL,则 @deadlock_var 为 6。
注释:SET DEADLOCK_PRIORITY 的设置是在执行或运行时设置,而不是在分析时设置。
权限:SET DEADLOCK_PRIORITY 权限默认授予所有用户。
2. SET LOCK_TIMEOUT
说明:指定语句等待锁释放的毫秒数。
语法:SET LOCK_TIMEOUT timeout_period
参数:timeout_period 是在 Microsoft® SQL Server™ 返回锁定错误前经过的毫秒数。值为 -1(默认值)时表示没有超时期限(即无限期等待)。
当锁等待超过超时值时,将返回错误。值为 0 时表示根本不等待,并且一遇到锁就返回信息。
注释:在连接开始时,该设置的值为 -1。设置更改后,新设置在其余的连接时间里一直有效。
SET LOCK_TIMEOUT 的设置是在执行或运行时设置,而不是在分析时设置。
READPAST 锁定提示为该 SET 选项提供了另一种方式。
权限:SET LOCK_TIMEOUT 权限默认授予所有用户。
2. SET LOCK_TIMEOUT
3.@@LOCK_TIMEOUT
4.SET IDENTITY_INSERT
5.SET IMPLICIT_TRANSACTIONS
6.SET NOCOUNT
7.@@ROWCOUNT
8.SET ROWCOUNT
9.SET TRANSACTION ISOLATION LEVEL
10.SET XACT_ABORT
1. SET DEADLOCK_PRIORITY
说明:控制在发生死锁情况时会话的反应方式。如果两个进程都锁定数据,并且直到其它进程释放自己的锁时,每个进程才能释放自己的锁,即发生死锁情况。
语法:SET DEADLOCK_PRIORITY { LOW | NORMAL | @deadlock_var }
参数:LOW 指定当前会话为首选死锁牺牲品。Microsoft® SQL Server™ 自动回滚死锁牺牲品的事务,并给客户端应用程序返回 1205 号死锁错误信息。
NORMAL 指定会话返回到默认的死锁处理方法。
@deadlock_var 是指定死锁处理方法的字符变量。如果指定 LOW,则 @deadlock_var 为 3;如果指定 NORMAL,则 @deadlock_var 为 6。
注释:SET DEADLOCK_PRIORITY 的设置是在执行或运行时设置,而不是在分析时设置。
权限:SET DEADLOCK_PRIORITY 权限默认授予所有用户。
2. SET LOCK_TIMEOUT
说明:指定语句等待锁释放的毫秒数。
语法:SET LOCK_TIMEOUT timeout_period
参数:timeout_period 是在 Microsoft® SQL Server™ 返回锁定错误前经过的毫秒数。值为 -1(默认值)时表示没有超时期限(即无限期等待)。
当锁等待超过超时值时,将返回错误。值为 0 时表示根本不等待,并且一遇到锁就返回信息。
注释:在连接开始时,该设置的值为 -1。设置更改后,新设置在其余的连接时间里一直有效。
SET LOCK_TIMEOUT 的设置是在执行或运行时设置,而不是在分析时设置。
READPAST 锁定提示为该 SET 选项提供了另一种方式。
权限:SET LOCK_TIMEOUT 权限默认授予所有用户。
全部回答
- 1楼网友:白昼之月
- 2021-01-23 05:24
我们知道,sql server事务日志主要是用来记录所有事务对数据库所做的修改,如果系统出现故障,它将成为最新数据的唯一来源。日志的操作常有以下几个应用:
一、事务日志文件ldf的丢失
当我们不小删除或者ldf文件丢失的时候,数据库只剩下mdf文件,此时直接通过附加mdf是无法恢复数据库的,那我们怎么样才能恢复数据库呢?我们可以把sql server的日志文件分为两种形式:一类是无活动事务的日志,另一类是有活动事务的日志,我们分别根据两种情况来进行数据库恢复。
1、无活动事务的日志恢复
当文件并没有发生活动性的日志,我们就可以很容易的利用mdf文件就可以直接恢复数据库了,具体操作方法如下:
1)数据库要是没有日志,就会处于置疑的状态,我们先可以通过企业管理器中在对应数据库中点击右键,然后在“所有任务”下选择“分离数据库”把数据库进行分离;
2)利用mdf文件附加数据库生成新的日志文件,可用企业管理器中数据库点击右键选择“所有任务”下的“附加数据库”把数据库附加上。
这样就可以直接恢复好数据库了,而如果数据库的日志文件中含有活动事务,利用此方法就不能恢复数据库,所以得使用下面的方法。
2、有活动事务的日志恢复
当日志发生了事务的记录,丢失的时候,我们采用如下的方法来实现:
1)新建一个同名的数据库,如原数据库名为mydb,然后停止sql server服务器,再把数据库主数据mdf文件移走,然后重新启动sql server服务器,新建一个同名的数据库mydb,然后再停止sql server服务器,把移走的mdf文件再覆盖回来,然后再重新启动sql server服务器,在默认的情况下,系统表是不允许被修改的,我们需要运行以下语句才可以,在查询分析器中,选择master数据库,然后执行:
sp_configure 'allow updates',1
reconfigure with override
接着运行以下语句,把sysdatabases表中mydb数据库的status属性设为‘37268’,把mydb数据库设置为紧急模式。
update sysdatabases set status=32768 where name=’mydb’
然后再把数据库mydb设置为单用户模式,然后重启sql server服务器,并把数据库mydb设为单用户模式
sp_dboption 'mydb','single user', 'true'
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯