这并不紧急,只是好奇。
题:
我今天试图对一个缓慢的服务器进行故障排除,我遇到了一个名为PREEMPTIVE_REENLIST. 我无法在任何地方找到此文档。TOADWORLD 似乎至少知道它存在,但没有任何实际信息。MSDN 搜索或 Stack Exchange 搜索中没有任何内容。除了 TOADWORLD 链接之外,Google 上没有任何内容。
只是想知道这里是否有人遇到过它并且知道它是怎么回事。谢谢。
平台:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2550.0 (X64) 2012 年 6 月 11 日 16:41:53 版权所有 (c) Microsoft Corporation 标准版(64 位),Windows NT 6.1(内部版本 7601:Service Pack 1)(管理程序) )(在 VMWare 上虚拟化的 Windows Server 2008 R2)
SQL Server 2012。本文底部的示例查询。
我正在尝试为上次备份给定数据库的时间创建一个简单的报告。
在 SSMS 中执行输出到文本的示例查询时,DB_NAME列被格式化为数据的最大可能大小(DB2 中存在相同的问题,顺便说一句)。所以,我有一列包含从不超过 12 个字符的数据,但它存储在 中varchar(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,
...
Run Code Online (Sandbox Code Playgroud)
但是 SQL Server 不会让我在转换时@database_name_Length在我的varchar定义中使用该变量。显然,SQL Server 在声明charorvarchar变量时需要一个文字数字。
我开始在字符串中构建语句并使用类似的东西sp_executesql,或者构建一个具有我需要的实际列长度的临时表,这两者都比我希望去的只是为了不获得 100 更麻烦我的输出中有 128 个字符的列中的空格。
搜索了互联网并找到了bupkus。
也许我在寻找错误的东西,或者谷歌对我不利。
似乎 SSMS 会将列格式化为允许的最大大小,即使实际数据要小得多。我希望有一种优雅的方式来“解决”这个问题,而无需跳过箍。我正在使用 SSMS 2012。
如果我转到结果到网格,然后转到 Excel 或类似的东西,则会消除尾随空格。不过,我希望基本上创建一份我通过电子邮件发送的报告。 …
我们在 Windows 和 Linux 系统上使用 DB2 LUW 10.5 和 11.1,以防它与他的答案相关。
问题:是否有时间使用 4K 而不是 32K 是正确的?如果是这样,为什么?(当它可以使用时它的性能会更好吗?)或者,它只是史前时代的遗留附属物,当时 4K 只是页面大小?
背景:当我创建 DB2 数据库时,我总是只创建 4K、8K、16K 和 32K 表空间和关联的缓冲池。
我的经理在这方面向我提出挑战。(对他有好处 - 我应该知道这一点!)他认为我们应该创建一个 32K 的表空间并完成它。
我找不到任何告诉我的信息,例如,当行大小允许时,我们应该使用 4K 而不是 32K,因为 XYZ。它告诉我,我CAN做到这一点,但不是说/我应该在何时。
我有一个乱序的列(通常,不是在 select 语句方面),我只是不知道它是如何变成那样的。
我一直在研究这个很长一段时间,结果是空的。我也无法在测试中重现它。
我已经通知开发人员,他们不允许运行未明确命名列的查询,正是出于这个原因。
然而,与此同时,我不知道我们是如何走到这种地步的,这让我很抓狂。
sql-server ×3
db2 ×1
db2-luw ×1
performance ×1
reporting ×1
ssms ×1
t-sql ×1
tablespaces ×1
wait-types ×1