首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制错误被sp_MSdetect_nonlogged_shutdown掩盖,返回“字符串或二进制数据将被截断”

复制错误被sp_MSdetect_nonlogged_shutdown掩盖,返回“字符串或二进制数据将被截断”
EN

Database Administration用户
提问于 2020-08-28 20:19:12
回答 1查看 866关注 0票数 2

我们的复制作业之一在步骤3中失败,步骤3运行sp_MSdetect_nonlogged_shutdown,返回一个‘字符串或二进制数据将被截断’。这当然让我们走上了一条在数据库中寻找问题的道路。然而,我们比较了这两个数据库,它们是相同的。据我所知,这个错误实际上是sp_MSdetect_nonlogged_shutdown中的一个bug。

最后,我再次检查了工作,第二步也失败了,并抛出了一个迷你垃圾堆。当我们看垃圾堆的时候,上面写着:

线程试图读取或写入它没有适当访问权限的虚拟地址。

运行作业的id是一个SQL Id,即sysadmin,步骤(2)在代理服务帐户下运行。服务帐户可以访问快照目录。我们有多个其他复制作业,使用的安全设置与正常工作相同。

SQL版本:

Microsoft 2016 (SP2-GDR) (KB4532097) - 13.0.5102.14 (X64) 2019年12月31日22:39:35版权(c)微软公司企业版:基于核心的许可(64位) Windows 2016标准10.0 (Build 14393:) (Hypervisor)

有人知道我在哪里能找到权限错误吗?或者我可以用来缩小范围的步骤?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-08-03 10:18:32

虽然MS发布了一个修补程序(不确定是否会这样做),但这是一个快速的解决方法:

  1. 获取并保存此过程的源代码[distribution].[sys].[sp_MSdetect_nonlogged_shutdown]
  2. 编辑源并找到变量@消息,将其长度更改为4000。然后在temp表#JobHistory中找到列消息,并执行相同的操作
  3. 从管理模式path_to_binary\sqlservr.exe -m"SQLCMD"中的CMD启动单模式Server
  4. 打开另一个控制台窗口并启动sqlcmd以连接到实例sqlcmd -S . -U sa -P
  5. 将目录放入读写USE mssqlsystemresource GO alter database mssqlsystemresource set read_write GO中。
  6. 粘贴修改后的代码。
  7. 将目录还原为read_only模式alter database mssqlsystemresource set read_only GO
  8. 关闭单模实例SHUTDOWN GO
  9. 像往常一样使用服务控制台启动实例
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/274573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档