标签: sql-server-2014

SQL Pivot具有动态生成的列,聚合函数和没有聚合的列

我有以下查询:

WITH preEKBE AS(
SELECT 
        EKPO . MANDT,
        EKPO . EBELN,
        EKPO . EBELP,
        DD07T.DDTEXT AS c_Meaning,
        EKBE . VGABE,
        EKBE . DMBTR,
        EKBE . MENGE, 
        COUNT(VGABE) OVER(PARTITION BY EKBE . EBELN, EKBE . EBELP, ZEKKN) AS c_COUNT,
        CONVERT (varchar(10),MIN(EKBE . BLDAT) OVER ( PARTITION BY EKBE . EBELN, EKBE . EBELP, EKBE . VGABE),104) AS c_EBKE_BLDAT_First,
        CONVERT (varchar(10),MIN(EKBE . BUDAT) OVER ( PARTITION BY EKBE . EBELN, EKBE . EBELP, EKBE . VGABE),104) AS c_EKBE_BUDAT_First,
        CONVERT (varchar(10),MAX(EKBE . BLDAT) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql pivot unpivot sql-server-2014

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

尝试将不可为 NULL 的列的值设置为 NULL

我在使用 SQL Server 2014 的功能时在客户端数据库上遇到了一个奇怪的问题。ISNULL()在线搜索使我发现其他人在使用时遇到了相同的错误INSERT。运行简单的时出现以下错误SELECT

Msg 681, Level 16, State 3, Line 1
Attempting to set a non-NULL-able column's value to NULL.
Run Code Online (Sandbox Code Playgroud)

以下查询会产生该错误:

SELECT
    ISNULL( [t2].[date_update], GETDATE() )
FROM
    [dbo].[t1]
INNER JOIN
    [dbo].[t2] ON [t1].[a] = [t2].[id];
Run Code Online (Sandbox Code Playgroud)

我已经精简了表格以简化说明,但受影响的列定义如下:

CREATE TABLE [dbo].[t1] (
    [id]          INT           NOT NULL PRIMARY KEY,
    [a]           NVARCHAR(100) NOT NULL
);

CREATE TABLE [dbo].[t2] (
    [id]          BIGINT        NOT NULL PRIMARY KEY,
    [date_update] DATETIME      NULL
);
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助或见解!

编辑:

在故障排除中,我能够使用以下内容在客户端系统上重现相同的错误消息INSERT

CREATE TABLE …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2014

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

在 SQL Server 中将图像类型数据转换为 XML/纯文本

我正在研究SSRS报告。

我有数据类型的内容Image。我想把它转换成plain-textor XML。是否可以?

我没有提供样本数据,因为有大量数据。(整个报告内容保存为图像以便我们理解)

建议我最好的解决方案。

xml sql-server reporting-services sql-server-2012 sql-server-2014

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

SSMS 错误 - “尝试读取或写入受保护的内存” - 访问本地主机 - 编辑 200 行

因此,我正在运行本地主机 SQL Server,并尝试编辑表的前 200 行。然后我收到了这个(原件是德文的,我通过网络找到的):

在此输入图像描述

此后,SSMS 关闭。我研究了一下,发现如果 PATH 变量超过 2K 个符号,这是一个已知问题。我的是1336,所以问题应该出在其他地方。

这是路径变量:

C:\Program Files\Common Files\Microsoft Shared\Windows Live;
C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;
C:\ProgramData\Oracle\Java\javapath;
C:\Program Files (x86)\Intel\iCLS Client\;
C:\Program Files\Intel\iCLS Client\;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
C:\Program Files\Intel\WiFi\bin\;
C:\Program Files\Common Files\Intel\WirelessCommon\;
C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;
C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;%systemroot%\System32\WindowsPowerShell\v1.0\;
C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;
C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\;
C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;
C:\Program Files\Microsoft SQL …
Run Code Online (Sandbox Code Playgroud)

sql-server ssms sql-server-2014

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

从版本 8 到版本 6 的包迁移失败,错误为 0xC001700A

VS 2013 中构建的 SSIS 包(v 12.0.31101)
DTSExec 在 SQL Server 2014 上运行

描述:从版本 8 到版本 6 的程序包迁移失败,错误为 0xC001700A“程序包中的版本号无效。版本号不能大于当前版本号。”。

当人们使用 SQL 2012 时,我看到很多关于上述内容的 google 结果,但我使用的是 2014 年,找不到任何支持。版本应该匹配(即都是包版本 8)

select @@version
Run Code Online (Sandbox Code Playgroud)

Microsoft SQL Server 2014 (RTM-CU14) (KB3158271) - 12.0.2569.0 (X64) 2016 年 5 月 27 日 15:06:08 版权所有 (c) Windows NT 6.3 上的 Microsoft Corporation Enterprise Edition(64 位)(内部版本 9600:)

附加信息 - 看起来它正在运行较旧的 DTSExec,可能来自现已删除的 sql 2012 实例。我将如何修复/重新指向 2014?

适用于 64 位的Microsoft (R) SQL Server 执行包实用程序版本11.0.2100.60 版权所有 (C) Microsoft Corporation。版权所有。

sql-server ssis sql-server-2014

5
推荐指数
1
解决办法
2万
查看次数

表重命名后的外键约束

我正在使用 FluentMigrator 在 SQL Server 2014 数据库上进行数据库迁移。如果我使用重命名构建器来重命名表,如下所示:

Rename.Table("Old Name").To("NewName");
Run Code Online (Sandbox Code Playgroud)

然后我是否需要删除并重新创建引用表旧名称的任何外键,或者 SQL(或 FM)是否知道更新引用?

sql-server fluent-migrator sql-server-2014

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

当前事务无法提交,也无法回滚到保存点。回滚整个事务 - 'Msg 3931,Level 16,State 1

我使用 SQL Server 2014 并且我已经运行了这个测试 T/SQL。

    BEGIN TRY
        BEGIN TRANSACTION T1

        CREATE TABLE aa9
        (
            A int
        )

        SAVE TRANSACTION S1

        INSERT INTO aa9 (A) VALUES ('aa')

        COMMIT TRANSACTION T1

    END TRY 
    BEGIN CATCH 
        ROLLBACK TRANSACTION S1
        PRINT 'Error ..... '
        ;throw
    END CATCH 
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误:

消息 3931,级别 16,状态 1,第 17 行
当前事务无法提交,也无法回滚到保存点。回滚整个事务。

我应该能够将事务回滚到我的 SavePoint 事务吗?

sql t-sql transactions sql-server-2014

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

使用 T-SQL 消除前 10% 和后 10% 值进行平均计算

我需要计算正在运行的存储过程之一的平均持续时间。例如SP的持续时间(以秒为单位)为:1,30,2,5,2,15,35,7,3,4,2,1,2,40

我必须消除前 10% 的调用(快速调用)和后 10% 的调用(慢速调用)并计算其余调用的平均值。

由于必须定期在庞大的数据集上完成此操作,是否有更好的方法可以最大限度地减少性能损失?

我知道的方法是:

使用以下查询消除前 10% 的记录,该查询会产生两个值 (1,1)

SELECT TOP 10 PERCENT WITH TIES value FROM #t order by value asc
Run Code Online (Sandbox Code Playgroud)

底部 10% 给出 (35,40),

SELECT TOP 10 PERCENT WITH TIES value FROM #t order by value desc
Run Code Online (Sandbox Code Playgroud)

消除这些值(1、1、35 和 40)后,平均值将为 7。

t-sql sql-server percentile sql-server-2014

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

编写服务器属性和数据库属性的脚本

微软SQL 2014

如果可能的话,有人可以提供tsql来从服务器属性和数据库属性页面中提取设置吗?

数据库属性 服务器属性

谢谢

t-sql sql-server sql-server-2014

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

MS SQL 查询有时需要多花 500 毫秒

我遇到一些查询有时比从服务器返回结果所需的时间长 500 毫秒的情况。准确地说:正常响应时间为 5-6 毫秒,与服务器的 ping 时间相同。SQL 探查器的正常查询持续时间约为 1 毫秒。有时响应时间会上升到500ms左右。从来没有 300 或 400 毫秒,总是非常接近 500 毫秒。SQL Profiler 报告的实际查询持续时间仍然只有 1 毫秒左右。我使用 Wireshark 分析了网络流量,发现当响应时间为 500 毫秒时,我几乎立即收到请求包的 ACK(在 5-6 毫秒 ping 时间内)。这一定意味着服务器快速接收请求并且这不是与网络相关的问题,对吧?

因此,由于某种原因,SQL 服务器收到请求,但在执行查询之前会等待,或者执行 SQL 探查器的“持续时间”中未包含的其他操作。看起来很奇怪,它总是在 500 毫秒左右 - 这会给任何人带来任何关联吗?PS:我也觉得SQL Server这么快发送ACK可能有点奇怪?通常我希望它等待更长的时间,事实上,当响应时间很短时,就不会发送 ACK(只是搭载在响应包上)。

编辑:我正在循环测试这个。大多数响应速度很快,只有一小部分有这种延迟。延误通常是分组的。这是一个生产服务器,我认为它可能与同时发生的其他请求有关,但令我困惑的是为什么它总是有 500 毫秒的延迟,以及为什么它没有包含在分析器的“持续时间”列中。

sql-server sql-server-profiler sql-server-2014

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