我们一直想知道 SQL Server 的页面预期寿命。所以我们使用 Perform 来查看计数器。该值为零且永不更改。我认为一定有一些错误,所以我检查了 SQL Server DMV 查询
SELECT [object_name],[counter_name],[cntr_value]
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%'
AND [counter_name] = 'Page life expectancy'
Run Code Online (Sandbox Code Playgroud)
这也整天返回零。
为了让这更有趣,我们检查了“缓冲区缓存命中率”计数器,它的平均值约为 99-100。
那么当“缓冲区缓存命中率”为 100 时,页面预期寿命如何为零?
我们缺少什么?如果它始终为零,那对我来说意味着缓冲区缓存中没有任何内容,如果缓冲区缓存命中率是 100,这似乎不正确?
提前致谢
所以,我知道所有关于 Replace 函数和 char(0) 的错误。
我有一列 ( NVARCHAR(128)) 有一些NCHAR(0x0000)来自错误导入的字符。
我正在使用 SQL Server 2008 R2。
该列的排序规则是:SQL_Latin1_General_CP1_CI_AS。
我已经尝试了所有可能在网上找到的东西,但没有任何东西可以从列中取出臭气熏天的 char(0) 字符。
这是我的最新尝试,结果是 BAFFLING(sql server 中的错误?)。
我有一个循环遍历每个字符并用特定字符替换 0x0000 的函数。
ALTER FUNCTION dbo.ReplaceCharZero
(
@testString NVARCHAR(MAX),
@charToReplaceWith NCHAR(1) = ' '
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE
@i INT = 1 ,
@fixedString NVARCHAR(MAX) = ''
WHILE @i <= LEN(@testString)
BEGIN
IF SUBSTRING(@testString, @i, 1) = CHAR(0x00)
BEGIN
--PRINT 'Found' + CAST(@i AS VARCHAR)
SET @fixedString = @fixedString + @charToReplaceWith …Run Code Online (Sandbox Code Playgroud)