资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

sqlserver提交行,提交sql语句

sql2008中未更新任何行 未提交1中 数据 错误源Microsoft SqlServer Management Datatools怎么解决

用update语句直接更新,有时候打开表修改表中的数据会报这种错误

创新互联是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,微信小程序开发,10多年建站对石雕等多个方面,拥有多年的网站制作经验。

delphi+sqlserver,如何获取数据让用户选择,然后批量提交到数据库?

这个是你的工作么,这个问题应该不难,

针对你的三个问题给你三个解决方案:

写一个查询语句个ado控件,然后连接connection控件就可以了,

使用合适的支持多选的客户端表格控件控件可以实现;

写一个循环遍历你的ado控件检测是否选中的标记,对于选中的记录一个update语句就搞定了

问题都不难,应该不困难。

.net的sqlserver事务里,delete语句如何只锁行,不锁表

你理解错了!

默认sqlserver都是行数据锁定,隔离级别是 read commited 也就是读取可 提交数据。

我给你举个例子!

SELECT TOP 1000

[ID]

,[DeleteBy]

,[DelDate]

FROM [dbo].[DeleteLog]

显示结果

-----------------------------------------------

ID DeleteBy DelDate

1 admin 2008-04-13 00:00:00.000

2 admin 2008-05-04 00:00:00.000

-------------------------------------------------

表数据就两行

然后我做如下操作:

打开 SQL Server Management Studio

输入:

begin transaction

DELETE FROM [HMS].[dbo].[DeleteLog]

where ID='1'

在另一个窗口中:

SELECT

[ID]

,[DeleteBy]

,[DelDate]

FROM [dbo].[DeleteLog]

where ID=1

你发现 这一个窗口被阻塞了,

但是查询

SELECT

[ID]

,[DeleteBy]

,[DelDate]

FROM [dbo].[DeleteLog]

where ID=2

可以正确返回结果。 这充分证明了,sqlserver默认隔离级别是行数据锁定。

然后你此时在第一个删除窗口 中输入

rollback

,记住前面的删除不执行,只执行rollback。

此时看一下查询

SELECT

[ID]

,[DeleteBy]

,[DelDate]

FROM [dbo].[DeleteLog]

where ID=1

那个窗口的结果已经出来了,阻塞被解除了。

========================================

当然了!你执行了全表检索肯定也是被阻塞的,因为删除操作还没提交啊,检索数据中又包含了你要删除的数据,当然被阻塞了。

你的问题出现在哪里了,你应该明白了吧!

解决这个问题其实很简单,不要长事务占用。检索的时候避开要删除的数据。

当然也可以改变隔离级别,sqlserver分为两类隔离级别,改成非阻塞类就可以。

但是我个人不推荐这么做。改变隔离级别可以如下方式:

set transaction isolation level read uncommitted

begin transaction

DELETE FROM [HMS].[dbo].[DeleteLog]

where ID='1'

这个删除没有提交

检索的时候

set transaction isolation level read uncommitted

SELECT

[ID]

,[DeleteBy]

,[DelDate]

FROM [dbo].[DeleteLog]

where ID=1

根本不会阻塞。 比较顺利,删除更新也一样。

这种方式 适合 数据量庞大的社交,天文数据库,企业管理不适合。

可以从侧面看出,你的程序并不优良,明白了否?

sqlserver 数据库 已经显示提交成功 但数据库里面的数据没有发生改变 过一会才改变 请问为什么?谢谢

不知你用什么提交的,如果是软件,也许软件先提示后修改,如果是在查询分析器里边,修改了一定会立即变化的。是不是你查看的方式有问题?

sqlserver中多用户提交数据发生错误的问题

死锁中的其中一种情况吧。

1.建立“锁定表”,每当用户进行评价时,在"锁定表"中设定评价事项的状态,比如0代表无人评价,1代表正在评价中。当状态为1时,则表示已有用户在进行评价,当用户退出评价或锁定时间超过一个阈值时则删除锁定记录,允许其他用户进行评价并锁定。

这样处理适合锁定多行相关数据,锁定表中也可以保存其他附加信息。

2.试试使用事务来更新数据库吧,这样可以确保在同一时间只允许一个用户可以对行进行更新。这个可以在存储过程中加以限定,或者在你的类库中写更新的方法时,可以引入事务啊。

SqlConnection conn = new SqlConnection("你的连接字符串");

conn.Open();

SqlTransaction trans = conn.BeginTransaction();

...

int result = cmd.ExecuteNonQuery();

if(result !=-1)

{

trans.Commit();

}

conn.Close();

//可以运用try...catch...finally错误处理机制来控制该事务的提交或者回滚。

当然,提供的方法仅供参考。呵呵


名称栏目:sqlserver提交行,提交sql语句
转载来源:http://www.cdkjz.cn/article/hdhdec.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220