我有一个关于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
我想MAXDOP
在我的电脑上测试一下。所以我MAXDOP
为特定查询设置为 2。但是,当我在运行查询时查看任务管理器中的逻辑处理器时,看起来它们都被使用了。我认为如果MAXDOP
设置为 2 ,它只会使用 2 个逻辑处理器?有谁知道发生了什么?请看下图。
另一个问题是,DOP
执行计划返回的值是1。现在我知道设置MAXDOP
并不意味着SQL Server 会实际使用设置的数字。然而,考虑到我的 4 个逻辑处理器似乎都被用于处理查询,看到DOP
1.
这是我运行的查询:
这是我运行时发生的情况(即看起来所有 4 个逻辑处理器都用于运行查询):
这个问题以前有人问过,但我没有看到任何答案(/sf/ask/452816941/)
当用户最初是使用 GUI 中的“SQL User without login”用户类型选项创建时,如何将登录映射到用户?我正在使用 SQL Server 2012
我们都知道 SQL Server 的事务日志记录了有关事务的信息。但是,在完整恢复模型中,事务日志中实际记录的是什么?你会说:交易!
啊,但是 SQL Server 可以有多种方法来记录事务。那么问题来了,它是如何记录交易的呢?
以下是我设想的工作方式:
它只是记录运行了哪个语句。在这种情况下,事务日志包含 DML 语句的实际文本,如下所示:
"插入 test_database.dbo.Test_People (FirstName, LastName) VALUES ('James' ,'Smith')"
在这种情况下,事务日志包含上面引用的全部内容。
然后,在事务日志还原中(在完整备份还原之后),SQL Server 将针对数据库实际执行事务日志中包含的语句以更新它。
然后,在事务日志还原中(在完全备份还原之后),SQL Server 将事务日志中包含的行数据复制到数据库中,插入它或用事务日志中的数据覆盖表中的同一行。
然后,在事务日志还原中(在完全备份还原之后),SQL Server 将事务日志中包含的行数据复制到数据库中,插入页面或覆盖具有相同 pageID 的页面。
或者,也许以上都不是。有人知道吗?
我想将列与SELECT *
. 例如:
SELECT * FROM Table1
Result:
Col1 Col2
---- ----
Joe Smith
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情 SELECT CONCAT(*) FROM Table1
我不能按名称提及列的原因是它们是由行中的 PIVOT 生成的,因此这些列可以有任意数量。
如果有人知道答案,或者知道如何将任意数量的行中的数据获取到单个单元格中,以逗号分隔,请告诉我。