在 SQL Server 2019 中,谁能明确告诉我 xp_sqljdbc_xa_commit 和 xp_sqljdbc_xa_end 之间的功能区别?
我的猜测是 commit 正在尝试提交事务(谢谢 Obvious 先生 ;-))并且 end 告诉 DTC “嘿,这里都完成了。请清理。”
但是,代码似乎存在于 SQLJDBC_XA.dll(作为扩展 sp)中,所以我无法查看它,也找不到一个好的参考来确认我的假设。
谢谢!
在 SQL Server 2019 中,谁能明确告诉我 xp_sqljdbc_xa_commit 和 xp_sqljdbc_xa_end 之间的功能区别?
我的猜测是 commit 正在尝试提交事务(谢谢 Obvious 先生 ;-))并且 end 告诉 DTC “嘿,这里都完成了。请清理。”
但是,代码似乎存在于 SQLJDBC_XA.dll(作为扩展 sp)中,所以我无法查看它,也找不到一个好的参考来确认我的假设。
谢谢!
我们在 Windows 和 Linux 系统上使用 DB2 LUW 10.5 和 11.1,以防它与他的回答相关。
问题:在某个时候使用 4K 而不是 32K 是正确的吗?如果是这样,为什么?(当它可以使用时性能会更好吗?)或者,它只是史前时代的遗留附属物,当时 4K 只是页面大小?
背景:当我创建 DB2 数据库时,我总是只创建一个 4K、8K、16K 和 32K 表空间和关联的缓冲池。
我的经理在这方面向我提出挑战。(对他有好处 - 我应该知道这一点!)他认为我们应该只创建一个 32K 表空间并完成它。
我找不到任何可以告诉我的信息,例如,当行大小允许时,我们应该使用 4K 而不是 32K,因为 XYZ。它告诉我我可以这样做,但不是那样/什么时候应该这样做。
系统: Windows NT 6.1(内部版本 7601:Service Pack 1)(管理程序)上的 Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 开发人员版(64 位)
问题: 今天我遇到了一个工作单元 ID 为 00000000-0000-0000-0000-000000000000 的“孤立事务”(SPID -2)
我尝试执行 kill '00000000-0000-0000-0000-000000000000',但收到无法执行的消息。(对不起,我没能捕捉到确切的消息)
MS DTC 中有两个打开的事务,但它们没有设置为不确定状态,所以我无法从那里杀死它们。
最后,我通过重新启动 MS DTC 解决了这个问题。
这是一个开发系统,所以绝对可能发生任何事情导致这个。
问题: 我只是想知道是否有人看过它,并且可能对以下内容有任何见解:
A) 什么可能导致它
B) 如果有更优雅的方法来解决
SQL Server 2012。本文底部的示例查询。
我正在尝试为上次备份给定数据库的时间创建一个简单的报告。
在 SSMS 中执行带有文本输出的示例查询时,该DB_NAME
列被格式化为数据的最大可能大小(DB2 中存在同样的问题,顺便说一句)。因此,我有一列包含的数据不超过 12 个字符,但它存储在 avarchar(128)
中,无论如何我都会得到 128 个字符的数据。RTRIM
对输出没有影响。
您是否知道一种优雅的方法可以使格式化的列长度成为实际数据的最大大小,而不是数据的最大潜在大小?
我想存在一个xp_sprintf()
函数,但我不熟悉它,而且它看起来不是非常健壮。
我试过这样投射它:
DECLARE @Servername_Length int;
SELECT @Servername_Length = LEN( CAST( SERVERPROPERTY('Servername') AS VARCHAR(MAX) ) ) ;
...
SELECT
CONVERT(CHAR(@Servername_Length), SERVERPROPERTY('Servername')) AS Server,
...
但是 SQL Server 不允许我在转换时使用定义中的@database_name_Length
变量varchar
。显然,SQL Server 在声明char
orvarchar
变量时需要一个文字数字。
我决定在一个字符串中构建语句并使用类似的东西sp_executesql
,或者用我需要的实际列长度构建一个临时表,这两者都比我希望去的麻烦多一点,只是为了不得到 100我的输出中的空格在 128 个字符的列上。
搜索了互联网并找到了bupkus。
也许我在寻找错误的东西,或者谷歌对我有意见。
似乎 SSMS 会将列格式化为允许的最大大小,即使实际数据要小得多。我希望有一种优雅的方式来“解决”这个问题,而无需跳过箍。我正在使用 SSMS 2012。
如果我转到结果到网格,然后转到 Excel 或类似的东西,尾随空格将被消除。不过,我希望基本上可以创建一份我通过电子邮件发送的报告。
--------------------------------------------------------------------------
QUERY:
--------------------------------------------------------------------------
SELECT
CONVERT(CHAR(32), SERVERPROPERTY('Servername')) AS Server,
'''' + msdb.dbo.backupset.database_name + '''',
MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date
FROM msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
WHERE msdb..backupset.type = 'D'
GROUP BY
msdb.dbo.backupset.database_name
ORDER BY
msdb.dbo.backupset.database_name
这并不紧急,只是好奇。
问题:
今天我试图对一个慢速服务器进行故障排除,我遇到了一个名为PREEMPTIVE_REENLIST
. 我无法在任何地方找到这个记录。TOADWORLD 似乎至少知道它存在,但没有任何实际信息。MSDN 搜索或 Stack Exchange 搜索中没有任何内容。除了 TOADWORLD 链接外,Google 上没有其他内容。
只是想知道这里是否有人遇到过它并且知道它是怎么回事。谢谢。
平台:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2550.0 (X64) Jun 11 2012 16:41:53 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor ) (Windows Server 2008 R2 VMWare 虚拟化)
我们在 MSDTC 中显示了一些活跃的交易,这些交易已经存在很长时间并且不会消失。它们不是孤立的或有疑问的,只是看起来正常的活跃交易。
我们正试图弄清楚它们是什么以及它们存在的原因。
为此,我试图找到一种方法将 MSDTC 事务列表(组件服务 -> 我的电脑 -> 分布式事务协调器 -> 事务列表)中显示的这些活动事务之一映射到所有信息微软 SQL 服务器。
显然,我所需要的只是一个 UOW ID。
经过几个小时的研究,我在 sys.dm_tran_locks 之外找不到任何包含此信息的内容。我在 sys.dm_tran_locks 上遇到的问题是我的事务没有显示,大概是因为它们当前没有持有任何锁。
其他重要信息:SQL Server 2005。(是的,2005 :( ) 同样,没有什么是“孤立的”或“有疑问的”。交易只是显示为活动状态,但它们永远留在那里。没有集群或任何其他异国情调。这都是非常普通的 SQL Server 2005 标准版。
编辑:我还应该注意到我尝试过:
* SP_WhoIsActive (both with default settings and with more info gathering turned on)
* sys.dm_tran_locks
* sys.dm_exec_sessions
* sys.dm_exec_requests.
* sys.dm_tran_database_transactions
* sys.dm_tran_database_transactions
* sys.dm_tran_active_transactions
我开始认为您无法从这里到达那里 ;-) 同样,我想将 MSDTC 中的 UOW 与 SQL Server 中的 UOW 相关联,显然,分布式事务仍然处于活动状态但没有锁定。
根据要求,这是 MSDTC 的屏幕截图:
我有一列乱序(通常,不是在 select 语句方面),我只是不知道它是如何出现的。
我已经研究了很长一段时间,但我还是一无所获。我也无法在测试中重现它。
我已通知开发人员,正是出于这个原因,他们不允许运行未明确命名列的查询。
不过,与此同时,我不知道我们是如何走到这种状态的,这让我发疯了。