我每周都会在 Win 2008 和 SQL 2008 R2 上收到这些错误消息。MAX DOP 设置为 1。知道如何解决这个问题吗?
谢谢。
描述:从网络读取输入流时发生致命错误。会话将终止(输入错误:64,输出错误:0)。描述:客户端无法重用 SPID 60 的会话,该会话已为连接池重置。失败 ID 为 29。此错误可能是由较早的操作失败引起的。在此错误消息之前立即检查错误日志中是否有失败的操作。
我有一个包含大约 200 万行的 SQL Server 表,该表存储简短的文本文档。这是我的架构:
CREATE TABLE Documents (
documentId bigint IDENTITY NOT NULL,
content nvarchar(MAX) NOT NULL,
isIndexed bit NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
我有一个单独的基于 Lucene 的索引器进程来执行此操作:
SELECT TOP 1 documentId, content FROM Documents WHERE isIndexed = 0
Run Code Online (Sandbox Code Playgroud)
然后在执行此操作之前执行索引操作:
UPDATE Documents SET isIndexed = 1 WHERE documentId = @documentId
Run Code Online (Sandbox Code Playgroud)
最初这工作正常。当表中的每个文档都没有被索引时(即所有isIndexed值都是 0),那么每次检索大约需要 5 毫秒。
然而,随着越来越多的文档被索引,检索时间慢慢增加。目前大约是 150 毫秒 - 速度降低了 30 倍。我注意到 UPDATE 语句似乎总是在 2 毫秒内运行,所以我知道这不是问题。
从一开始,表在 isIndexed 列上一直有一个非聚集索引,但实际执行计划显示 SQL Server 使用索引扫描(而不是搜索)。
我可以做些什么来加速系统?
我知道现有的“isIndexed”列本身很糟糕,但由于索引器的工作方式,它无法直接通过 documentId 请求文档。由于这个原因和其他原因,我不能接受任何不能解决手头直接问题的答案。
我是 SQL 的初学者。
我想知道SWITCH表分区的重要性是什么?
我创建了一个按月分区的表,总共有 12 个分区。
范围是:
'2012-01-31 23:59:59.000',
'2012-02-29 23:59:59.000',
'2012-03-31 23:59:59.000',
'2012-04-30 23:59:59.000',
'2012-05-31 23:59:59.000',
'2012-06-30 23:59:59.000',
'2012-07-31 23:59:59.000',
'2012-08-31 23:59:59.000',
'2012-09-30 23:59:59.000',
'2012-10-31 23:59:59.000',
'2012-11-30 23:59:59.000',
'2012-12-31 23:59:59.000'
Run Code Online (Sandbox Code Playgroud) 如果要确保备份的完整性,是否有必要对所有备份使用校验和,而不仅仅是“验证备份”选项?
我正在创建一系列将启用页面级压缩的新表。
这是否也会影响索引,还是在创建索引时我还必须指定压缩?
create table Message
(
pk_Message int identity NOT NULL constraint PK_Message primary key,
[Message] varchar(900) NOT NULL constraint UK_Message__Message unique,
DateCreated datetime NOT NULL default getdate()
) with (data_compression = page)
go
Run Code Online (Sandbox Code Playgroud)
正如您在我的示例中看到的那样,我计划对相当大的数据类型创建唯一约束,并希望利用压缩。
是否可以在指定自定义应用程序名称的同时从 SQL 代理作业执行存储过程,类似于在连接字符串中指定应用程序名称?
我想这样做的原因是为了避免数据库上的触发器专门区分连接字符串使用的应用程序名称。
我知道您可以使用不同的连接字符串执行集成包,但我希望这也适用于 T-sql 作业。
如果我们对数据库备份启用压缩(因为数据库备份大小很大)但不在大小相对较小的差异上启用它,还原是否有效?因为完整备份已压缩,但差异未压缩。
我最近开发了一个游戏,数据库运行在 MSSQL 上。
这是我的数据库结构
表:播放器
PlayerID uniqueIdentifier (PK)
PlayerName nvarchar
Run Code Online (Sandbox Code Playgroud)
表:游戏结果
ID bigint (PK - Auto Increment)
PlayerID uniqueIdentifier (FK)
DateCreated Datetime
Score int
TimeTaken bigint
PuzzleID int
Run Code Online (Sandbox Code Playgroud)
我做了一个 SQL 列出了按最高分 (DESC) 和耗时 (ASC) 排序的前 50 名玩家,下面的 Sql 允许我获得每个谜题 ID 的结果。我不确定它是否是 100%,但我相信它是正确的。
;with ResultSet (PlayerID, maxScore, minTime, playedDate)
AS
(
SELECT TOP 50 PlayerID, MAX(score) as maxScore, MIN(timetaken) as minTime, MIN(datecreated) as playedDate
FROM gameresult
WHERE puzzleID = @PuzzleID
GROUP BY PlayerID
ORDER BY maxScore desc, minTime asc, playedDate asc …Run Code Online (Sandbox Code Playgroud) 当我必须调查由 IMPLICIT_TRANSACTIONS ON 引起的问题时,我可以专注于客户端工具设置 IMPLICIT_TRANSACTIONS ON 或 ANSI_DEFAULTS ON 还是可以针对影响所有客户端的整个数据库进行设置?
我可以通过将标准脚本头更改为来避免该问题
SET ANSI_DEFAULTS ON
SET IMPLICIT_TRANSACTIONS OFF
Run Code Online (Sandbox Code Playgroud)
但是这个设置会在哪些级别的会话、数据库、服务器上受到影响呢?
编辑:
似乎可以在服务器级别进行设置。
在“服务器属性”对话框(“连接”页面)中,我发现选项已更改并编写了脚本:
隐式交易:
EXEC sys.sp_configure N'user options', N'2'
GO
RECONFIGURE WITH OVERRIDE
GO
Run Code Online (Sandbox Code Playgroud)
隐式交易关闭:
EXEC sys.sp_configure N'user options', N'0'
GO
RECONFIGURE WITH OVERRIDE
GO
Run Code Online (Sandbox Code Playgroud)
但执行
exec('dbcc useroptions')
Run Code Online (Sandbox Code Playgroud)
SSMS中没有反映变化。对于此类连接,服务器设置似乎以某种方式被覆盖。
现在我必须重新提出这个问题,
是否有客户端不会覆盖服务器设置,并且在服务器设置更改时可能会崩溃。
我们有一个带有 SP4、x86 的 SQL Server 2005。当我们尝试进行差异备份时,我们收到以下错误消息。
无法对数据库“ABCD”执行差异备份,因为当前的数据库备份不存在。通过重新发出 BACKUP DATABASE 执行完整的数据库备份,省略 WITH DIFFERENTIAL 选项。[SQLSTATE 42000](错误 3035)BACKUP DATABASE 异常终止。
对解决此问题的任何帮助表示赞赏