Tag: sql

如何解决间歇性SQL超时错误

我们每天都有几个实例从多个应用程序中得到一系列SQL超时错误(System.Data.SqlClient.SqlException:超时已过期。在操作完成之前超时时间已到,或者服务器没有响应)我们的networking上有100多种不同的应用程序,包括networking和桌面应用程序。 一切从VB6和经典的ASP到.NET 4.我可以find各种数据,显示副作用,但不能指出是什么原因造成的。 我们的数据库pipe理员说,SQL服务器没有什么问题,IT人员说,networking服务器或networking没有问题,所以当然我还是试图解决这个问题。 我真的只是寻求build议,我可以做什么其他疑难解答,试图跟踪下来。 我们正在集群中运行SQL Server 2008 R2。 有一些不同的服务器连接到它,从Windows Server 2003到2008不同品种。 以下是我迄今为止所做的: 运行长时间运行的查询和死锁的SQL跟踪。 这显示在问题时没有死锁,长时间运行的查询都与我们的超时错误一致,但看起来是副作用,而不是原因。 通常返回的非常基本的查询最终会花费30,60或120秒来运行。 这发生了几分钟,然后一切都恢复正常,然后工作正常。 使用性能监视器来跟踪连接池连接。 这有时会在超时时间附近的连接数量上出现一些尖峰,但仍然没有达到默认的100个连接限制的一半。 再一次,这里似乎没有任何一个原因。 将Web应用程序分离到不同的应用程序池。 我们试图缩小我们认为可能成为主要问题的应用程序(大多数聊天等),并将它们放在单独的应用程序池中,但这似乎不会影响任何内容或帮助我们缩小范围。 监视SQL Server上的磁盘使用情况。 我们已经在SQL服务器上做了一些监控,并且在发生这些超时时没有发现尖峰或任何问题迹象。 validation过的TempDB不是问题的原因。 如果我想到我们还试过了什么,我会回来补充更多。 请让我知道接下来要排除故障的一些想法。

单个语句的交易是做什么的?

我了解一个事务如何协调一对更新。 我不明白的是在交易中包装单一的陈述,这是我所见过的90%。 实际上,在现实生活中,根据我的经验,find一系列逻辑上相关的交易,每个交易都包含在自己的交易中,但是整个交易并没有包含在交易中。 在MS-SQL中,在事务中包装单选,单更新,单插入或单删除有什么好处? 我怀疑这是迷信的编程。

SET autocommit = 1和mysql中的START TRANSACTION之间的区别(我错过了什么?)

我正在阅读关于MySQL的事务,我不确定我是否已经掌握了一些特定的东西,而且我想确定我正确地理解了这一点,所以在这里。 我知道交易应该做什么,我只是不确定我是否理解语句的语义。 所以,我的问题是,有什么不对,(如果是这样的话,有什么问题)与以下几点: 默认情况下,在MySQL中启用自动提交模式。 现在, SET autocommit=0; 将开始一个事务, SET autocommit=1; 会隐式提交。 有可能COMMIT; 以及ROLLBACK; ,在这两种情况下,自动提交仍然被设置为0(并且新的事务被隐式地启动)。 START TRANSACTION; 基本上会SET autocommit=0; 直到一个COMMIT; 或ROLLBACK; 发生。 换句话说, START TRANSACTION; 和SET autocommit=0; 除了START TRANSACTION; 相当于隐式添加一个SET autocommit=0; 在COMMIT;之后COMMIT; 或ROLLBACK; 如果是这样的话,我不明白http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html#isolevel_serializable – 看作隔离级别意味着有一个事务,这意味着autocommit应该closures吗? 如果在开始交易和设置自动提交之间还有其他的区别(除了上面描述的那个),它是什么?

什么时候值得使用数据库?

我有一个关于数据库的问题,在什么地方值得深入研究。 我主要是一名embedded式工程师,但是我正在编写一个使用Qt与我们的控制器进行交互的应用程序。 我们有一个奇怪的地方,就是我们有足够的数据可以实现一个数据库(大约700多个项目和不断增长)来pipe理所有的事情,但我不知道现在是否值得现在处理。 使用从excel生成的文件和parsing的文件实现GUI是没有问题的,但是即使使用VBA脚本,也很难跟踪。 我一直在玩转换我们的数据到Microsoft Access的应用程序方面更可pipe理,似乎运作良好。 如果解决了这个问题,我只需要使用SQL数据库和使用Qt库来访问和修改它。 我没有太多的经验来pipe理这个级别的数据,我很好奇什么是解决这个问题的最好方法。 那么在这种情况下使用数据库有什么好处呢? 我意识到这其中的大部分都可以是特定于应用程序的,但是关于如何跨越embedded式/应用程序编程线的一些总体思路和build议将会有所帮助。 这不是关于将数据库放入embedded式项目。 这也不是一个通常使用大型数据库的业务types应用程序。 我正在为桌面上的单个用户devise一个GUI,以便与微控制器进行交互以进行监视和configuration。 我决定去与SQLite。 你可以用一些非常有意思的事情来做这些事情,但是在第一次启动这个项目时,我并没有真正考虑过这个选项

在查询中使用WITH NOLOCK表提示使用视图 – 是否在视图内传播?

如果在SQL Server中的View上使用“WITH NOLOCK”查询提示,是否将该提示传播给视图定义本身,即使NOLOCK未用于View定义中的原始表格? 需要这样做的原因是,有时候,支持人员想要花费大量的时间来查询,而不是强制使用应用程序本身中的视图对所有查询进行locking。

跳过复制到磁盘mysql上的tmp表

我有一个大的MySQL查询的问题。 是否有可能跳过复制到磁盘上的tmp表的步骤,MySQL需要大量的查询,或者有可能使其更快? 因为这个步骤太长,以至于我的查询结果回来。 我读了MySQL的页面,这是为了节省内存,但我不在乎节省内存,我只是想让我的查询结果回到快速,我有足够的内存在我的机器上。 此外,我的表正确索引,所以这不是我的查询速度慢的原因。 任何帮助? 谢谢

在SQL Server XML数据types上使用LIKE语句

如果你有一个varchar字段,你可以很容易地做SELECT * FROM TABLE WHERE ColumnA LIKE '%Test%'来查看该列是否包含某个string。 你怎么做的XMLtypes? 我有以下内容,只返回具有“文本”节点,但我需要在该节点内search的行 select * from WebPageContent where data.exist('/PageContent/Text') = 1

Azure SQL数据库“DTU百分比”度量标准

使用新的Azure SQL数据库层结构 ,监视数据库“DTU”用法似乎很重要,以了解是升级还是降级到其他层。 在阅读Azure SQL数据库服务层和性能级别时 ,只会谈到使用CPU,数据和日志百分比的使用情况。 但是,当我添加新的度量标准时,我也有一个DTU百分比选项: 我在网上找不到任何关于这个。 这基本上是其他DTU相关指标的摘要?

我可以在T-SQL中循环一个表variables吗?

无论如何循环T-SQL中的表variables? DECLARE @table1 TABLE ( col1 int ) INSERT into @table1 SELECT col1 FROM table2 我也使用游标,但是游标似乎不如表variables灵活。 DECLARE cursor1 CURSOR FOR SELECT col1 FROM table2 OPEN cursor1 FETCH NEXT FROM cursor1 我希望能够以与游标相同的方式使用表variables。 这样,我可以在过程的一部分中对表variables执行一些查询,然后稍后为表variables中的每一行执行一些代码。 任何帮助是极大的赞赏。

在SQL Server中只能使用“WITH SCHEMABINDING”?

我有一个数据库,其中有数以百计的名字很尴尬的表格(CG001T,GH066L等),而且我对每个人都有“友好”名字的看法(例如,“CUSTOMERS”是“SELECT * FROM GG120T”) 。 我想在视图中添加“WITH SCHEMABINDING”,这样我就可以拥有一些相关的优点,比如能够对视图进行索引,因为less数视图计算出的列在计算时非常昂贵。 SCHEMABINDING这些观点有缺点吗? 我发现了一些含糊其辞的文章,但从来没有详细介绍过。 我知道,一旦一个视图是模式化的,你就不能改变任何会影响视图的东西(例如,一个列数据types或sorting规则),而不必先删除视图,那么除了这个之外呢? 看起来索引视图本身的能力似乎远远超过了更小心地规划模式修改的缺点。