小编Ed *_*per的帖子

何时返回确定性结果,何时返回?

如果你执行这样的语句:

select first field1, field2 from exampleTable where field1 = '1';
Run Code Online (Sandbox Code Playgroud)

然后你会收到这样的警告:

返回的结果是不确定的 SQLCode=122

到目前为止一切正常,因为在这种情况下,您需要一个“order by”子句。

但是当你在 BEGIN END 块中使用相同的语句将值放入一些声明的变量中时,

BEGIN
declare varField1 varchar;
declare varField2 varchar;

select first field1, field2 into varField1, varField2 
from exampleTable 
where field1 = '1';

END
Run Code Online (Sandbox Code Playgroud)

警告没有出现!为什么?

这里不需要“order by”子句吗?这个陈述是突然确定的吗?...

(使用 SQL Anywhere 12)

sybase

6
推荐指数
1
解决办法
6748
查看次数

是否记录了 SQLTRACE_FILE_BUFFER 等待类型?它说明什么?

我们在其中一台服务器上运行后台任务,该任务轮询sys.dm_exec_requests长时间运行的查询,并在找到它们时收集诊断信息,包括等待类型。

我在SQLTRACE_FILE_BUFFER等待中看到了许多查询。这在我看过的任何地方都没有记录 - 我想知道是否有人有关于这种等待类型的更多信息?

顾名思义,将跟踪数据写入磁盘存在延迟;我们在实例上运行了一个服务器端跟踪,该跟踪会写入文件以进行审计和性能监控。

SAN 管理员告诉我我们有可用的 IOPS,所以我认为这不是一个简单的 I/O 问题。我还应该检查什么?

更新

我们禁用了服务器端跟踪并继续看到相同的问题;最新的想法是SQLTRACE_FILE_BUFFER等待是内存压力的症状(在将跟踪缓冲区写入磁盘时使用了不同的记录等待类型 - SQLTRACE_BUFFER_FLUSH- 没有出现)。

更新 2

禁用默认跟踪将删除等待。我们仍在调查性能问题的根本原因。

sql-server sql-server-2008-r2 wait-types

6
推荐指数
1
解决办法
2731
查看次数

我如何知道是什么填满了事务日志?

我们在 sql 数据库上有一个事务日志,由于某种原因,当我们的实时系统只有大约 2GB 时,它已填满了 50GB。有什么方法可以分析 sql 或事务日志来尝试找出为什么这个特定的日志增长如此之多?

sql-server transaction-log

6
推荐指数
1
解决办法
6313
查看次数