首页 > 解决方案 > SSMS :: 使用标题复制并粘贴到 Excel 会导致目标中的行更多

问题描述

特殊问题:我有一个140.588行和246,313MB 表,如下所示:

CREATE TABLE [dbo].[DMA_assessment](
    [InstanceName] [varchar](128) NULL,
    [DatabaseName] [varchar](128) NULL,
    [SizeMB] [varchar](30) NULL,
    [ImpactedObjectName] [varchar](128) NULL,
    [ImpactDetail] [varchar](max) NULL,
    [AssessmentName] [varchar](128) NULL,
    [AssessmentNumber] [int] NULL,
    [SourceCompatibilityLevel] [varchar](15) NULL,
    [TargetCompatibilityLevel] [varchar](15) NULL,
    [TargetSQLServerEdition] [varchar](15) NULL,
    [Category] [varchar](50) NULL,
    [Severity] [varchar](15) NULL,
    [ChangeCategory] [varchar](30) NULL,
    [Title] [varchar](500) NULL,
    [Impact] [varchar](max) NULL,
    [Recommendation] [varchar](max) NULL,
    [MoreInfo] [varchar](max) NULL,
    [ObjectType] [varchar](40) NULL,
    [DBOwnerKey] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

点击放大。

在此处输入图像描述

此表是由DMA 工具创建的,我想使用输出来可视化 Power BI 上的结果。查询这么大的表是不可能的。我需要将其导出为 .csv 或 .xlsx 文件

如果我进行臭名昭著的右键单击并“使用标题复制”,然后将其粘贴到 Excel 文件中,则结果有141186行(-1,因为第一行是列名)

(再次点击查看详情)

在此处输入图像描述

所以我们在这里:

141186 - 140558 = 598

它们来自那 598 行?

我试了多次,结果还是一样。

标签: sql-serverexcelssmsexport-to-excel

解决方案


我猜你varchar(max)是问题的原因。Excel 中文本字段的大小是有限的。举个例子:

DECLARE @x VARCHAR(MAX) = '***************************************************************************';
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)
SELECT @x=CONCAT(@x,@x)

SELECT @x AS Test, 'Test' AS Test2

将结果复制到 excel 文件中,您将得到两行,其中第二列 (Test2) 仅在第二行中出现。


推荐阅读