小编K09*_*K09的帖子

高磁盘 I/0 问题

我们的数据库偶尔会出现此错误...“超时已过期。在操作完成之前超时时间已过或服务器没有响应。---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out在 System.Data.SqlClient.SqlInternalConnection.OnError"

我已经运行 perfmon 并得到以下结果。如何检查导致如此高磁盘 I/O 的原因?平均值 磁盘队列长度计数器(蓝色)非常高。

谢谢!

在此处输入图片说明 在此处输入图片说明

sql-server-2008-r2

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

使用 CASE 按多列分组时出错

是否可以在 CASE 语句中按多个列进行分组?我收到错误“',' 附近的语法不正确。” 在下面的代码...

SELECT
  CASE 
     WHEN Type = 'Test'
       THEN Description
     ELSE MAX([Description])                
  END AS 'Description'
GROUP BY
CASE
    WHEN Type = 'Test'
        THEN Description
    ELSE ''
END,
Type, Account, Structure    
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql group-by

0
推荐指数
1
解决办法
4197
查看次数

事实表的 FK 问题

我有一个 Datawarehouse 星型架构。一张 Dim 表是“DimTweet”。这包含推文详细信息。

对于选定的日期,我希望能够显示推文的数量。

但是,我目前的设计有问题。对于 DimTweet tbl 中的多行,如何在 Fact tbl 中使用一个 TweetID 作为 FK?

代码:

INSERT INTO [CarDW].[dbo].[FactCarDetail]
           ([CarID]
           ,[RegionID]
           ,[DateID]
           ,[TweetID]
           ,[SharePrice]
           ,[ShareQty]
           ,[SalesQty]
           ,[TweetCountPositive]
           ,[TweetCountNegative])
SELECT
    c.CarID,
    r.RegionID,
    d.DateKey,
    -- ????? AS TweetID
    scsp.Price,
    scsp.Quantity,
    scs.Quantity,
    -- COUNT NO. OF TWEETS Postive
    -- COUNT NO. OF TWEETS Negative
FROM 
    dbo.DimCar c        
INNER JOIN  
    dbo.StagingCarSale scs
    ON scs.CarModel = c.Model
INNER JOIN
    dbo.DimRegion r
    ON r.Region = scs.Region
INNER JOIN
    dbo.DimDate d
    ON d.Date = scs.SaleDate
--INNER …
Run Code Online (Sandbox Code Playgroud)

data-warehouse database-design facttable star-schema

0
推荐指数
1
解决办法
126
查看次数

在 WHERE 子句的 CASE 表达式中使用 IS NULL

我有一个WHERE要在其中使用CASE表达式的子句。但是,我的CASE表达式需要检查字段是否为IS NULL.

如果@UserRole变量值 = 'Analyst',则SupervisorApprovedBy列值必须为NULL. 否则,我是说返回所有数据,即SupervisorApprovedBy = SupervisorApprovedBy.

我需要更改以下内容吗?

WHERE SupervisorApprovedBy = 
CASE 
    WHEN @UserRole = 'Analyst' THEN NULL
    ELSE SupervisorApprovedBy
END
Run Code Online (Sandbox Code Playgroud)

我不能使用=for NULL。经测试无效。

我希望返回所有行,包括那些 where SupervisorApprovedBy IS NOT NULL

null sql-server t-sql case

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