标签: sql-server-2014

永久分离数据库

如果数据库与实例永久分离,是否应该完成任何清理任务?

sql-server maintenance sql-server-2014

10
推荐指数
2
解决办法
1470
查看次数

sys.objects 列 [Type] 奇怪的值 'ST'

我在 sys.objects 中看到 [Type] 列的奇怪(未记录)值。值为“ST”,如下图(注意,dbo.Record 是一个用户表)

有谁知道这个“ST”值是什么意思?(这是在 SQL Server 2014 开发版中)

在此处输入图片说明

sql-server datatypes metadata sql-server-2014

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

如何将包含负值和零值的列的行相乘?

我正在尝试获取按查询分组的特定列的所有行的产品。我发现的大多数例子都指向组合exp,sumlog

exp(sum(log([Column A])))
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是该列包含一些值的零,因此当零传递给log函数时我收到此错误:

发生无效的浮点运算。

我以为我可以通过使用case表达式来解决这个问题,但这并不像我认为的那样工作,因为它似乎评估了所有情况......

select 
  Name,
  Product = case 
    when min([Value]) = 0 then 0 
    when min([Value]) <> 0 then exp(sum(log(I))) -- trying to get the product of all rows in this column
  end
 from ids
 group by Name
Run Code Online (Sandbox Code Playgroud)

SqlFiddle

给定以下结果集:

Id  Name  Value
_________________________________
1   a     1
2   a     2
3   b     0
4   b     1
Run Code Online (Sandbox Code Playgroud)

我希望得到以下行:

Name  Product
_____________
a     2
b     0
Run Code Online (Sandbox Code Playgroud)

所以总而言之......你如何乘以可以包含负数或零值的列中的行?

sql-server case sql-server-2014

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

根据变更日志计算库存数量

假设您有以下表结构:

LogId | ProductId | FromPositionId | ToPositionId | Date                 | Quantity
-----------------------------------------------------------------------------------
1     | 123       | 0              | 10002        | 2018-01-01 08:10:22  | 5
2     | 123       | 0              | 10003        | 2018-01-03 15:15:10  | 9
3     | 123       | 10002          | 10004        | 2018-01-07 21:08:56  | 3
4     | 123       | 10004          | 0            | 2018-02-09 10:03:23  | 1
Run Code Online (Sandbox Code Playgroud)

FromPositionId并且ToPositionId是股票头寸。某些位置 ID:s 具有特殊含义,例如0。事件 from 或 to0表示库存已创建或删除。From0可能是交货的库存,to0可能是发货的订单。

该表目前包含大约 550 …

sql-server optimization sql-server-2014 running-totals

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

系统运行状况扩展事件导致的进程利用率不正确?

我最近一直致力于了解存储在系统健康扩展事件事件文件中的数据或指标。

我们正在尝试使用此处提供的系统运行状况来实现性能指标的数据收集

有一些报告提供了从名为的系统运行状况事件收集的 CPU 利用率、其他进程利用率等指标

scheduler_monitor_system_health_ring_buffer_recorded
Run Code Online (Sandbox Code Playgroud)

对于一些繁忙的服务器,我无法理解为什么报告中列为 SQL CPU 利用率的字段“process_utilization”大部分时间都在 100 以上。在高峰时间,它在 120-160 之间变化,因此报告是始终显示 CPU 高于 100,即使当我从服务器活动监视器中检查时,情况并非如此。

我在 Github 中提出了这个问题,但似乎没有修复或回应。

因此,我的问题是

  1. 如何使用记录的系统运行状况环缓冲区获取服务器的 SQL CPU 利用率的准确数字?

  2. 报告还显示根据其报告计算的以下 2 个字段的计数器

  1. 100-System_idle-process_utilization 作为 OtherProcessUtil

  2. 100-system_idle 作为 SystemUtil

这些OtherProcessUtilSystemUtil需要/有什么帮助?

  1. 我也看到内存利用率每次总是显示为 100。这似乎也不正确。有人注意到了吗?

其他工具(如 Idera 和 sentry [我测试过的])不会显示相同服务器的 CPU 使用率超过 100%。我对相同的负载进行了并排比较。

sql-server extended-events sql-server-2012 sql-server-2014 sql-server-2016

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

是否可以在 LIKE 语句上进行 PIVOT

是否可以按表中的元素(如COLUMN LIKE='Value%')进行分组PIVOT?我有一个表 [DBT].[Status],其中包含各种状态(数据库、实例等),并且不想将所有 PROD 和 TEST 值作为单个值进行透视/查询,而是将它们分组。

例如代替具有用于状态列ProdProd ACCProd APP,...等。我将仅有一个包含的值列Name LIKE 'Prod%'Name LIKE 'Test%'

到目前为止我所拥有的:

表定义

CREATE TABLE [DBT].[Status](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_Status] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY],
 CONSTRAINT [IX_Status] UNIQUE NONCLUSTERED 
(
    [Name] ASC
)WITH (PAD_INDEX …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot sql-server-2014

10
推荐指数
2
解决办法
851
查看次数

列列表中带有 , * 的 SELECT 语句比不带 * 的相同语句更快

情况

\n

当使用具有定义的列集的 SELECT 语句查询数据库时,大约 21 秒内就会收到结果。

\n

, *如果定义的列集列表末尾有一个附加星号 ( ),则查询将在 2 秒内返回结果。

\n

查询执行计划

\n

执行计划差异很大。

\n

您可以通过 PasteThePlan 中的链接找到良好的实际查询执行计划不良的实际查询执行计划。

\n

列列表中包含 , * 的语句(在末尾)

\n
\n            SELECT    -- DISTINCT -- 27.04.2020\n                \'SchuelerKlasse\' AS EcoQuery,\n                VX_PERSON.PER_MAN_ID, VX_PERSON.PER_ID, VX_PERSON.PER_NAME, VX_PERSON.PER_VORNAME, VX_PERSON.PER_LB_PER_ID, \n                VX_PERSON.PER_GESCHLECHT, VX_PERSON.PER_GEBURTSDATUM, VX_PERSON.PER_TELP, VX_PERSON.PER_MAILP, VX_PERSON.PER_NATP, VX_PERSON.PER_VERSICHERTENNUMMER, VX_PERSON.PER_LAND,\n                VX_ADRESSE.ADR_STRASSE, VX_ADRESSE.ADR_PLZ, VX_ADRESSE.ADR_ORT,\n                VX_KLASSE.KL_CODE, VX_KLASSE.KL_BEZEICHNUNG,\n                VX_KLASSEABSCHNITTSCHUELER.KAS_ANMELDE_STATUS, \n                VX_KLASSEABSCHNITTSCHUELER.KAS_ANMELDETYP, VX_KLASSEABSCHNITTSCHUELER.KAS_ABSCHNITTSNR,\n                VX_KLASSE_ZEITRAUM.KLZ_IS_ABSCHLUSSKLASSE, VX_KLASSE_ZEITRAUM.KLZ_ZR_NR,\n                VX_ZEITRAUM.ZR_BEGINN, VX_ZEITRAUM.ZR_ENDE\n                ,\'\' AS FA_CODE\n                ,\'\' AS FA_BEZ_STP, \'\' AS FA_BEZ_STP_LANG\n                , \'\' AS EcoOrig_FA_CODE, …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan index-tuning sql-server-2014

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

SQL Server 升级失败后如何“hack-drop”数据库​​快照

我正在处理SQL Server 升级到 2014 后无法删除数据库快照问题。快照已失效但无法删除。

现在,虽然 Connect 项目中有一个令人失望的评论,但我认为这最终会得到解决。但是,我需要尽快处理这个问题。

有没有办法删除由于此错误而无法删除的数据库快照?我担心我已经用尽了所有记录在案的方法来做到这一点。可能需要对系统表进行未记录的修改。有没有办法强制删除数据库(快照)?

sql-server sql-server-2014

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

缺少“将数据库部署到 SQL Azure”任务

我最近在我拥有的工作站上安装了 SQL Server 2014 Express,并正在尝试部署到 SQL Azure。我之前在使用 SQL Server 2012 Express 的以前的工作站上通过执行以下操作完成了此操作:

右键单击数据库 > 任务 > “将数据库部署到 SQL Azure”

在 SQL Server 2014 上,该选项完全丢失,取而代之的是一个新选项:“将数据库部署到 Windows Azure VM”

我不明白为什么缺少部署到 SQL Azure 的选项。现在是否需要为 SQL Server 2014 单独安装一些东西?从我在网上阅读的内容来看,2014 版应该有这两个选项。Microsoft 是否为 SQL Server 2014 Express 删除了此选项?

sql-server azure-sql-database sql-server-2014

9
推荐指数
2
解决办法
6427
查看次数

ALTER TABLE ... 从常规表切换到分区表失败

下面的代码执行以下操作:

  1. 在 C:\TEMP 中创建数据库 play_partition
  2. 创建两个相同的分区表 play_table 和 archive_play_table
  3. 将 play_table 分区 1 切换到 archive_play_table 分区 1
  4. 在与 play_table 分区 2 相同的文件组上创建一个与 play_table 具有相同结构的新未分区表 temp_table
  5. 将 play_table_partition 2 切换到 temp_table
  6. 尝试将 temp_table 切换回 play_table 分区 2 并失败

    消息 4982,级别 16,状态 1,第 64 行 ALTER TABLE SWITCH 语句失败。检查源表“play_partition.dbo.temp_table”的约束允许目标表“play_partition.dbo.play_table”上的分区 2 定义的范围不允许的值。

为什么会失败?

我使用的是 SQL Server 2014(企业版试用版)。

问候,

科林戴利

http://www.colindaley.com/translator

/* Playing with partitioned tables */

USE master;
GO

DROP DATABASE play_partition;
GO

CREATE DATABASE play_partition
    ON PRIMARY(
        NAME = play_partition
        , FILENAME …
Run Code Online (Sandbox Code Playgroud)

sql-server partitioning sql-server-2014

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