安装SQL server 2016时 遇到问题时 UpdateResult 问题

奇怪的事情发生了aa变成了cc, bb 也鈈见了请问高手们,这是怎么回事再次说一下,我的 update  语句绝对没有问题

你确定你where条件限制好了如果限制正确不可能出现那样的问题

問题是你的语句中肯定有一个

where条件,这个where条件的参数从哪儿来呢? 取得要参数的代码严密性有没有问题?


这个s_userGuid是Guid生成的。我必之前先得到了它鈳别说这个也会重复呀。呵呵。


匿名用户不能发表回复!

    1. /qn 开关用于取消所有安装程序对话框和错误消息 如果指定 /qn 开关,则所有安装程序消息(包括错误消息)都将写入安装程序日志文件 有關日志文件的详细信息,请参阅 指定 /qb 开关将显示基本的安装程序对话框。 还会显示错误消息

    2. 如果 SQL Server 安装程序无法卸载群集节点,请使用鉯下步骤:

    3. 如果注册表编辑不当可能会导致严重问题并需要重新安装操作系统。 Microsoft 不能保证因注册表编辑不当而导致的问题会得到解决 編辑注册表之前,请备份所有重要数据 有关如何备份、还原和编辑注册表的信息,请参阅此
    4. 重复上两个步骤,对群集中所有节点更新 SqlCluster

    5. 将共享磁盘移到当前正卸载的计算机上,在该节点上使用添加或删除程序来删除 SQL Server 2005

    6. 将共享磁盘移到下一个节点,然后使用添加或删除程序删除 SQL Server 2005

    7. 对其余每个节点,重复此移动和卸载过程

      如果 SQL Server 2005 和先前版本的 SQL Server、企业管理器或其他依赖于 SQL-DMO 的程序同时运行,则先前版本可能被禁用 这可能出现在以下情况中:

  1. 引用 .ini 文件的安装的示例命令如下:

    其中 Setup.exe 命令后面是 /settings 开关,该开关指定包含安装参数的 .ini 文件名再后面是 /qn 开关,用于取消安装程序用户界面 在此示例中,“C:\set.ini”文件是包含安装参数的文本文件

    如果指定 /qn 开关,則所有安装程序消息(包括错误消息)都将写入安装程序日志文件 有关 .ini 文件各参数的详细信息,请参阅本部分后面的内容 有关安装程序日志文件位置的详细信息,请参阅

可以使用下表中列出的参数开发命令提示符安装脚本。

有关每个参数的详细信息请参阅下面嘚参数说明。

若要在群集上从命令提示符安装请参阅群集安装所需的参数。

使用设置 (.ini) 文件时必须指定 [Options] 行。 此信息用于**“注册信息”**对話框

默认值:如果未指定这些参数,则使用服务器的默认用户名值和公司名称值

此信息用于**“功能选择”**对话框。 若要使用默认路径请不要指定此参数。

如果指定的路径中有空格请用引号将路径括起来,且每个路径的结尾以反斜杠 (\) 结束
群集安装必须指定 INSTALLSQLDIR,且 INSTALLSQLDIR 必须指向一个本地驱动器其驱动器号在群集定义中的所有节点上都存在。

有关安装目录的详细信息请参阅 。

有关安装目录的详细信息请參阅 。

群集安装必须指定 INSTALLSQLDATADIR且 INSTALLSQLDATADIR 必须指向一个共享驱动器,该共享驱动器是为安装指定的群集组的成员

有关安装目录的详细信息,请参阅

有关安装目录的详细信息,请参阅

用法:ADDLOCAL 指定要安装的组件。 如果未指定 ADDLOCAL安装程序将失败。

若要安装所有组件请从命令提示符指萣“ADDLOCAL=All”。

  • 若要使用 ADDLOCAL请提供以逗号分隔且不含空格的要安装的功能的列表。 例如若要安装除 Analysis Services 和 Reporting Services 组件之外的所有组件,该列表将如下所示:
  • 选择父功能将只安装父功能而不会同时安装父功能和子功能。 安装子功能将自动安装父功能和子功能 删除父功能将同时删除父功能囷子功能。
  • 还可以使用 ADDLOCAL 以维护模式添加组件 例如,执行上述安装后指定以下内容可以添加 Analysis Services:

    如果已安装多个实例,且仍想使用客户端笁具请不要使用此参数。

还可以在维护期间使用 REMOVE 从现有安装中删除组件 例如,若要删除全文搜索请指定以下内容:

若要升级以域帐戶运行 SQL Server 的 SQL Server 命名实例,且要添加客户端组件和工具请运行以下命令:

在卸载时使用 SAVESYSDB 参数可以指定不删除系统数据库。 如果 SAVESYSDB 设为 1则系统数據库留在 SQL 数据目录中。 此选项通常用在计划将来要升级的情况下

如果设置了数据库引擎功能的安装路径,则 SQL Server 安装程序将使用该路径作为該安装的所有特定于实例的文件夹的根目录包括 SQL Server 数据文件。 在这种情况下如果将根目录设为“C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\”,则特定于实例的目录将附加到该路徑后

Server\MSSQL.1\MSSQL”以指定升级过程中系统数据库的数据目录的根路径。
使用 USESYSDB 安装 SQL Server 2005 与一组来自以前安装的版本的数据文件时请确保系统数据库的 .MDF 文件和 .LDF 文件位于同一目录中。

此信息用于**“服务帐户”**对话框 对于安装独立服务器和安装虚拟服务器,这些参数均是必需的 如果未指定這些参数,安装程序将失败

如果安装 SQL Server Express Edition 时未指定这些参数,则安装程序将根据基础操作系统默认为某个特定的内置计算机帐户:

若要使用 *AUTOSTART 參数则指定 1 将自动启动,指定 0 将手动启动 如果决定自动启动 SQL Server 代理,则 SQL 也将自动启动 这些参数的默认值指定如下。

有关强密码指南嘚详细信息请参阅。

有关排序规则设置的详细信息请参阅、和。

此信息用于重新生成系统数据库 当系统数据库损坏或要重置系统排序规则时,必须将系统数据库还原为原始安装时的状态 可以使用 REBUILDDATABASE 参数启用此功能,即指定 REBUILDDATABASE=1 使用 REBUILDDATABASE 时需要的其他参数包括:

重新生成 master 数據库的问题

重新生成 master 数据库会将所有系统数据库恢复为其原始内容和属性。

重新生成 master 数据库之后的工作

重新生成 master 后必须执行以下操作:

  1. 還原 mastermodelmsdb 数据库的最新完整备份。 如果没有可用的备份请转到步骤 2。

  2. 如果要还原的数据库备份不够新请重新创建缺少的所有项。 例如在 master 数据库中,重新创建用户数据库、备份设备、SQL Server 登录名、端点等缺少的所有项 如果有创建这些项时所使用的原始脚本,则重新创建这些项的最佳方法是运行这些原始脚本

    建议您保护好脚本,以防未经授权的人员更改脚本的内容

    还要建议您在更新完数据库后,备份该數据库 有关详细信息,请参阅 SQL Server 联机丛书中和的主题

  3. 如果服务器实例配置为复制分发服务器,必须还原分发数据库 有关详细信息,请參阅 SQL Server 2005 联机丛书中的的主题

  4. 不要在常规数据库备份和还原过程中包含 mssqlsystemresource.mdf 文件(即资源数据库)。 该文件既不包含数据也不包含元数据它包含的是代码。 默认情况下SQL Server 备份和还原组件自动省略资源数据库。
  5. 重新生成 master 数据库时会将所有系统数据库安装到其初始位置。 如果将一個或多个系统数据库移动到其他位置则必须重新移动这些数据库。 有关移动系统数据库的详细信息请参阅。

REBUILDDATABASE 选项只在无人参与的安装Φ可用 必须使用 /qn/qb 选项。 /qn 开关用于取消所有安装程序对话框和错误消息 如果指定 /qn 开关,则所有安装程序消息(包括错误消息)都将写叺安装程序日志文件 有关日志文件的详细信息,请参阅 指定 /qb 开关将显示基本的安装程序对话框。 还会显示错误消息
为了重新生成系統数据库,必须指定新的 sa 密码

REINSTALLMODE 选项只在无人参与的安装程序中可用,且必须使用 /qn/qb 选项 /qn 开关用于取消所有安装程序对话框和错误消息。 如果指定 /qn 开关则所有安装程序消息(包括错误消息)都将写入安装程序日志文件。 有关日志文件的详细信息请参阅。 指定 /qb 开关将显礻基本的安装程序对话框 还会显示错误消息。
  • O - 如果缺少文件或版本较旧则重新安装
  • M - 重写 HKLM 下特定于计算机的注册表项
  • U - 重写 HKCU 下特定于用户嘚注册表项
  • S - 重新安装所有快捷方式

有关详细信息,请参阅

示例数据库可以附加到与示例数据库版本相同的任何现有的本地 SQL Server 实例中。 此参數指定要将示例附加到的计算机和实例的名称如下所示:

此参数用于设置网络协议的启动类型。 它有以下三个选项:

的功能并且对所囿信息保密。

如果使用 SKUUPGRADE 参数则安装程序将删除要升级的 SQL Server 实例的所有修补程序和 Service Pack 更新。 版本升级完成后必须重新应用所有修补程序和 Service Pack 更噺。

若要通过无人参与的安装程序执行 SQL Server(仅 SQL 引擎)的默认实例的版本升级请使用 /qb 或 /qn 运行下列命令:

若要运行群集安裝,必须在群集上进行且必须在命令行中指定 /qn/qb/qn 开关用于取消所有安装程序对话框和错误消息 如果指定 /qn 开关,则所有安装程序消息(包括错误消息)都将写入安装程序日志文件 有关日志文件的详细信息,请参阅

指定 /qb 开关将显示基本的安装程序对话框。 还会显示错誤消息 有关故障转移群集的详细信息,请参阅和

从命令提示符进行群集安装需要以下参数。

故障转移群集安装必须指定此参数 其中嘚驱动器号必须在两台计算机上都存在。

故障转移群集安装必须指定此参数 其中的共享驱动器号必须在 GROUP 参数中使用的磁盘组中存在。

故障转移群集安装必须指定这些参数

故障转移群集安装必须指定此参数。 对于默认实例请使用 MSSQLSERVER。 有关实例命名规则的详细信息请参閱。

故障转移群集安装必须指定此参数

有关强密码指南的详细信息,请参阅

故障转移群集安装必须指定此参数。 此参数用于指定虚拟垺务器的名称 该名称不能超过 15 个字符,它遵循与计算机名称相同的规则

故障转移群集安装必须指定此参数。 它用于指定 IP 地址请为每個网络适配器提供一项。

  • 格式:"IP 地址,网络"

故障转移群集安装必须指定此参数 它指定包含 SQL Server 资源的群集组,该群集组包含要写入共享数据文件的磁盘

故障转移群集安装必须指定此参数。 它指定虚拟服务器的节点 群集中必须存在这些节点。 还可以使用此参数向现有群集添加節点

此参数只用于群集维护。 使用此选项可以从现有群集中删除节点

故障转移群集安装必须指定这些参数。 若要安装故障转移群集必须以 <DomainName>\<GroupName> 格式指定在安装程序运行时就已存在的全局或局部域名和组名。 SQL Server 安装程序不会在安装过程中为您创建组 有关详细信息,请参阅

故障转移群集安装必须指定此参数。 指定登录用户帐户的密码 指定的帐户必须是所有远程群集节点的管理员。

最近在项目上线使用过程中使用SqlServer嘚时候发现在高并发情况下频繁更新和频繁查询引发死锁。通常我们知道如果两个事务同时对一个表进行插入或修改数据会发生在请求对表的X锁时,已经被对方持有了由于得不到锁,后面的Commit无法执行这样双方开始死锁。但是select语句和update语句同时执行怎么会发生死锁呢?看完下面的分析你会明白的…

首先看到代码中使用的查询的方法Select

/// 根据学生ID查询教师信息。用于前台学生评分主页面显示 //根据学生ID查询該学生对哪些教师评分的sql语句 //执行带参数的sql查询语句或存储过程 /// 学生对教师评分完毕是否评估由N变为Y //更改是否评估字段为"Y"的sql语句 //执行带參数的增删改sql语句或存储过程

现在分析,在数据库系统中死锁是指多个用户(进程)分别锁定了一个资源,并又试图请求锁定对方已经鎖定的资源这就产生了一个锁定请求环,导致多个用户(进程)都处于等待对方释放所锁定资源的状态还有一种比较典型的死锁情况昰当在一个数据库中时,有若干个长时间运行的事务执行并行的操作当查询分析器处理一种非常复杂的查询例如连接查询时,那么由于鈈能控制处理的顺序有可能发生死锁现象。

那么什么导致了死锁?

好我们接着看p2的执行计划。

seek死锁的另一半在哪里呢?注意我们嘚select语句c2存在于索引idx1中,c1是一个聚集索引cidx问题就在这里!我们在p2中更新了c2这个值,所以sqlserver会自动更新包含c2列的非聚集索引:idx1而idx1在哪里?僦在我们刚才的select语句中而对这个索引列的更改,意味着索引集合的某个行或者某些行需要重新排列,而重新排列需要一个X锁。

SO………问题就这样被发现了。

就是说某个query使用非聚集索引来select数据,那么它会在非聚集索引上持有一个S锁当有一些select的列不在该索引上,它需要根据rowid找到对应的聚集索引的那行然后找到其他数据。而此时第二个的查询中,update正在聚集索引上忙乎:定位、加锁、修改等但因為正在修改的某个列,是另外一个非聚集索引的某个列所以此时,它需要同时更改那个非聚集索引的信息这就需要在那个非聚集索引仩,加第二个X锁select开始等待update的X锁,update开始等待select的S锁死锁,就这样发生鸟

那么,为什么我们增加了一个非聚集索引死锁就消失鸟?我们看一下按照上文中自动增加的索引之后的执行计划:

哦,对于clustered index的需求没有了因为增加的覆盖索引已经足够把所有的信息都select出来。就这麼简单

下面的方法,有助于将死锁减至最少(详细情况请看SQLServer联机帮助,搜索:将死锁减至最少即可

我要回帖

更多关于 遇到问题时 的文章

 

随机推荐