小编Pau*_*ite的帖子

由于“XTP_CHECKPOINT”,数据库“database_name”的事务日志已满

我有一个关于XTP_CHECKPOINT.

我使用的是 SQL Server 2014。我有一个处于 SIMPLE 恢复模式模式的数据库。它也在被复制。

没有未结交易。我跑了DBCC OPENTRAN,它返回:

“没有活跃的未结交易。”

但是每当我尝试创建或删除表或删除数据时,我都会收到此消息:(
我已将实际数据库名称替换为单词database_name

“由于 'XTP_CHECKPOINT',数据库 'database_name' 的事务日志已满”

有谁知道为什么会发生这种情况,更重要的是,我怎样才能让它停止?

是的,数据库确实处于 SIMPLE 恢复模式模式。即事务日志应自动截断。

顺便说一句,我在完全恢复模式下的另一个数据库做了同样的事情,开始返回相同的错误:

由于“XTP_CHECKPOINT”,数据库“database_name”的事务日志已满

我试图将日志增长设置更改为无限增长,但它不会让我返回相同的错误。

除了文件组之外,我可以在没有任何 XTP 内容的情况下重现该问题。方法如下:http : //pastebin.com/jWSiEU9U

sql-server transaction-log sql-server-2014 memory-optimized-tables

26
推荐指数
3
解决办法
2万
查看次数

将一列从 NOT NULL 更改为 NULL - 幕后发生了什么?

我们有一个包含 2.3B 行的表。我们想将一列从 NOT NULL 更改为 NULL。该列包含在一个索引中(不是聚集索引或 PK 索引)。数据类型没有改变(它是一个 INT)。只是可空性。声明如下:

Alter Table dbo.Workflow Alter Column LineId Int NULL
Run Code Online (Sandbox Code Playgroud)

该操作在我们停止之前需要超过 10 次(我们甚至还没有让它运行完成,因为它是一个阻塞操作并且花费的时间太长)。我们可能会将表复制到开发服务器以测试实际需要多长时间。但是,我很好奇是否有人知道 SQL Server 在从 NOT NULL 转换为 NULL 时在幕后做了什么?此外,受影响的索引是否需要重建?生成的查询计划并不表明发生了什么。

有问题的表是集群的(不是堆)。

sql-server sql-server-2008-r2 alter-table database-internals

26
推荐指数
2
解决办法
4万
查看次数

活动连接数和剩余连接数

我想获得有关一段时间内连接峰值数量的统计信息。

我知道这种pg_stat_activity观点,就像select count(*) from pg_stat_activity,但我认为这种方法不是很聪明。

是否有其他视图或表格可以提供我需要的信息?

postgresql monitoring

26
推荐指数
1
解决办法
5万
查看次数

SQL Server 显示恢复中的数据库

今天,在断电后,一个数据库(恢复:已满)在 SSMS 中显示“In Recovery”。所以:

myDatabase (In recovery) (数据库状态:recovery, Shutdown)

完成后,“恢复过程”数据库显示名称 myDatabase 没有“(恢复中)”。我以为问题解决了,但事实并非如此。

当我启动使用该数据库的应用程序时,额外的文本“(恢复中)”再次出现在我的数据库名称旁边。

我等到“恢复过程”完成,然后将数据库脱机并重新联机。

我重新启动了服务器,重新启动了计算机,当我的应用程序运行时,额外的文本再次出现。在 SQL Server 日志中,消息“正在启动数据库‘myDatabase’”出现了几次。似乎数据库正在工作,因为我可以插入数据,但状态显示它发生了一些事情。

服务器日志没有显示任何有趣的内容。唯一不正常的是我有30个条目“启动数据库'myDatabase'”。

我知道当服务器启动时,每个数据库在准备使用之前都会经过恢复。但就我而言,数据库联机然后显示“myDatabase(恢复中)”。如果我关闭应用程序,数据库将进入状态:正常。这真让我抓狂。

我什至安装了一个新的 SQL Server 实例,并将旧数据库“myDatabase”放在上面。问题仍然发生。

当我运行此查询时:

SELECT databasepropertyex('nyDatabase', 'STATUS')
Run Code Online (Sandbox Code Playgroud)

它显示正在恢复、在线、可疑和回到在线然后恢复等。

sql-server recovery

25
推荐指数
3
解决办法
18万
查看次数

完整备份和仅复制完整备份的区别

我在 SQL Server Central 线程中看到完整备份是否会截断日志?完整备份不会截断日志:

不会。完整备份或差异备份都不会截断事务日志。- Lynn Pettis
否 - 完整备份不会截断日志。-查德克劳馥

那么完整备份和仅复制完整备份有什么区别呢?

对于日志备份,只有复制备份可以防止日志链在不截断日志的情况下中断。那么什么是仅复制完整备份?

sql-server backup sql-server-2008-r2 transaction-log

25
推荐指数
3
解决办法
7万
查看次数

为什么表将其主键用作自身的外键

查看数据库,我遇到了一个表,该表使用其主键作为其自身的外键。

我已经看到一个表可以有一个自身的外键来构建层次结构,但它会使用另一列来引用主键。

由于主键是唯一的,在这种情况下,该行不是只能指向自身吗?这似乎是一个同义反复的链接,因为如果我已经有了该行,那么我已经有了该行。

有什么理由这样做吗?

连接到自身的表

我确信约束是这样写的(不仅仅是查看图表),因为相同的表和列用于定义的两半。

foreign-key sql-server primary-key

25
推荐指数
2
解决办法
4万
查看次数

如何删除SSMS中的换行符?

我正在处理如下所示的 SQL

create procedure


as


begin
Run Code Online (Sandbox Code Playgroud)

注意大的差距,例如asbegin

我怎样才能删除这些?我使用了 SQL 格式化程序,但这不起作用。

sql-server ssms

25
推荐指数
2
解决办法
2万
查看次数

需要了解并行查询执行错误

今天,我们的生产 sql 服务器的性能下降了。在发生这种情况时,我们记录了几个"The query processor could not start the necessary thread resources for parallel query execution"错误。我所做的阅读表明,这与执行复杂查询时要使用的 CPU 数量有关。但是,当我在停电期间检查我们的CPU Utilization was only at 7%. 还有什么其他的东西可以指代我还没有遇到过吗?这是性能下降的可能罪魁祸首还是我在追逐红鲱鱼?

我的 sp_configure 值如下:

name                                minimum maximum config_value run_value
cost threshold for parallelism      0       32767   5            5
Run Code Online (Sandbox Code Playgroud)

sql-server parallelism sql-server-2008-r2

24
推荐指数
2
解决办法
3万
查看次数

SQL Server 2012:从命令行生成脚本

我正在运行 SQL Server 2012。

SQL Server Management Studio 可以选择右键单击数据库,然后选择任务和生成脚本。

有没有办法通过命令行以某种方式自动化?

我想创建一个包含整个数据库的架构和数据的脚本。

之类的工具ScriptDB,并sqlpubwiz.exe似乎都针对SQL Server 2005的什么有关SQL Server 2012?

sql-server scripting

24
推荐指数
4
解决办法
4万
查看次数

归档除当前年份以外的所有数据并同时对表进行分区的最佳方法是什么

任务

从一组大表中归档除滚动 13 个月之外的所有内容。存档数据必须存储在另一个数据库中。

  • 数据库处于简单恢复模式
  • 这些表从 5000 万行到几十亿行,在某些情况下每个表占用数百 GB。
  • 表当前未分区
  • 每个表在不断增加的日期列上都有一个聚集索引
  • 每个表额外有一个非聚集索引
  • 对表的所有数据更改都是插入
  • 目标是最大限度地减少主数据库的停机时间。
  • 服务器是 2008 R2 Enterprise

“归档”表将有大约 11 亿行,“活”表大约有 4 亿行。显然存档表会随着时间的推移而增加,但我希望活动表也能合理快速地增加。至少在接下来的几年里说 50%。

我曾考虑过 Azure 扩展数据库,但不幸的是我们在 2008 R2 并且可能会在那里停留一段时间。

当前计划

  • 创建一个新的数据库
  • 在新数据库中创建按月(使用修改日期)分区的新表。
  • 将最近 12-13 个月的数据移动到分区表中。
  • 对两个数据库进行重命名交换
  • 从现在的“归档”数据库中删除移动的数据。
  • 对“归档”数据库中的每个表进行分区。
  • 将来使用分区交换来归档数据。
    • 我确实意识到我必须换出要存档的数据,将该表复制到存档数据库,然后将其交换到存档表中。这是可以接受的。

问题: 我正在尝试将数据移动到初始分区表中(实际上我仍在对其进行概念验证)。我正在尝试使用 TF 610(根据数据加载性能指南)和一个INSERT...SELECT语句来移动数据,最初认为它会被最少记录。不幸的是,每次我尝试它都被完全记录。

在这一点上,我认为我最好的选择可能是使用 SSIS 包移动数据。我试图避免这种情况,因为我正在处理 200 个表,并且我可以通过脚本轻松生成和运行任何我可以做的事情。

我的总体计划中是否遗漏了任何内容,SSIS 是快速移动数据和最少使用日志(空间问题)的最佳选择吗?

没有数据的演示代码

-- Existing structure
USE [Audit]
GO

CREATE TABLE [dbo].[AuditTable](
    [Col1] [bigint] NULL,
    [Col2] [int] NULL,
    [Col3] [int] NULL,
    [Col4] [int] NULL,
    [Col5] [int] …
Run Code Online (Sandbox Code Playgroud)

sql-server architecture sql-server-2008-r2 archive

24
推荐指数
1
解决办法
7949
查看次数