小编Ian*_*n_H的帖子

将 DB 设置为简单恢复,然后返回完全恢复

我最近在没有太多警告或经验的情况下继承了我们公司的所有 SQL 数据库,并希望通过全面审查备份来给人留下好印象并获得一些快速胜利。

我已经实现了各种完整和 t-log 备份,但在这个盒子上遇到了另一个工作,它在运行之前将数据库设置为简单恢复模式,然后在运行之后恢复到完整模式,不幸的是,这是非常必要的。

我的问题是,如果在凌晨 1 点进行完整备份,并且在此后每小时的顶部进行 t-log 备份,那么在凌晨 5:30 设置简单恢复模式的其他工作是否会破坏“时间线”,例如早上 6 点的完整备份和下一个 t-log 备份?

这是用于这台特定机器的 SQL Enterprise 2012。

欣赏你们的任何见解

sql-server backup sql-server-2012 recovery-model

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

SQL Server 2016 - ColumnStore 聚集索引与非 ColumnStore 聚集索引

我刚刚阅读了位于此处的 SQL 2016 列存储索引指南。我们将在 SQL 2016 数据库中有一些相当大的表(数亿到数十亿行),用于 OLTP 和分析。

这些表将主要通过以下两种方式之一进行查询: 1) 用户将根据 Where 子句中的特定离散值检索相当小的结果集(例如,Where SubId = 'ABC');2) 用户将根据日期/时间值范围检索更大的结果集(例如,其中 ReadTime 介于 '2/1/2017' 和 '2/5/2017' 之间)。

由于列存储索引更适合场景 #2(我认为),我正在考虑为场景 #1 制作非列存储(例如,在 SubId 上)并创建非聚集列存储索引(例如,在 ReadTime 上) ) 用于场景 #2。

但是,我不确定这是否真的比在 ReadTime 上创建列存储聚集索引和在 SubId 上创建非列存储索引更好。

我不确定如何做出这个决定。

sql-server columnstore sql-server-2016

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

为什么 Microsoft SQL Server Management Studio 不断创建表别名?

当我使用设计视图创建或编辑查询时,SSMS 会无缘无故地为某些创建别名 (TableName_1) 。更烦人的是,如果我在设计视图中打开现有查询,它也会这样做。换句话说,它改变了我的 SQL 代码!即使是简单的查询也有这个问题,例如:

SELECT  
  dbo.tblCalendar.id,  
  dbo.tblCalendar.title,  
  dbo.luCalendarType.typeName  
FROM  
  dbo.luCalendarType RIGHT OUTER JOIN  
  dbo.tblCalendar ON dbo.luCalendarType.id = dbo.tblCalendar.type
Run Code Online (Sandbox Code Playgroud)

将成为:

SELECT  
  dbo.tblCalendar.id,  
  dbo.tblCalendar.title,  
  luCalendarType_1.typeName  
FROM  
  dbo.luCalendarType AS luCalendarType_1 RIGHT OUTER JOIN  
  dbo.tblCalendar ON luCalendarType_1.id = dbo.tblCalendar.type
Run Code Online (Sandbox Code Playgroud)

有什么办法可以阻止 SSMS 改变我的 SQL 代码?

sql-server ssms view

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

链接服务器的 Oracle 等效项是什么?您可以加入 SQL Server 吗?

在 SQL Server 中,我可以创建一个视图,该视图是使用链接服务器位于完全不同服务器中的两个表之间的连接。如果我将其中一台服务器从 SQL Server 更改为 Oracle,我还能这样做吗?

我需要连接表在 Oracle 中

oracle sql-server sql-server-2008-r2 linked-server oracle-12c

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

Postgres 计划中的“结果”节点和“附加”节点中实际发生了什么?

我有一个表(postgres 9.6),它按日期划分为大约 70 个子表。

EXPLAIN下面的输出被截断,因为它的大部分是每个子表的相同位图索引/堆扫描(这里是完整的详细输出)。我感兴趣的部分是树顶部附近的AppendResult节点。

  1. 从我能够收集到的(例如这里和其他地方),Append只是所有子查询的总和。事实上,它需要比这长约 3.5 秒。多余的从哪里来?
  2. I can only find the one reference to Resultwhich states当您的查询选择某个常量值时,将使用此操作。此节点大约需要 7 秒,但查询未选择常量值。

如果可能的话,我很想节省这 10 秒,但我实际上并不知道这些节点在做什么,所以我不知道该尝试什么。

EXPLAIN ANALYZE 输出:

  ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
  ?                                                                                      QUERY PLAN                                                                                       ?
  ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
  ? HashAggregate  (cost=4459946.40..4473566.96 rows=1089645 width=64) (actual time=26289.308..26419.989 rows=190112 loops=1)                                                             ?
  ?   Group Key: frontend_prescription.processing_date, frontend_prescription.pct_id, substr((frontend_prescription.presentation_code)::text, 1, 9)                                       ?
  ?   Buffers: shared hit=172527                                                                                                                                                          ?
  ?   ->  Result  (cost=0.00..4296499.68 rows=10896448 width=60) …
Run Code Online (Sandbox Code Playgroud)

postgresql explain postgresql-9.6

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

SELECT from Clustered Columnstore 导致 LOB 读取

我正在从以下包含 52 亿条记录的聚集列存储索引中执行 SELECT。当我查看 STATISTICS IO 的输出时,我看到的是 LOB 逻辑读取。

我的问题是当表中的数据类型都不是 LOB 值时,为什么查询执行 LOB 逻辑读取?

我在 SQL Server 2014 SP3 企业版环境中工作。

表定义:

CREATE TABLE [dbo].[ColumnstoreTableA](
    [RollupID] [bigint] IDENTITY(1,1) NOT NULL,
    [DT_DIMID] [int] NOT NULL,
    [TC_DIMID] [int] NOT NULL,
    [C_DIMID] [int] NOT NULL,
    [CD_DIMID] [int] NOT NULL,
    [AC_DIMID] [int] NOT NULL,
    [UA_DIMID] [int] NOT NULL,
    [UL_DIMID] [int] NOT NULL,
    [JP_DIMID] [int] NOT NULL,
    [RTT_DIMID] [int] NOT NULL,
    [RA] [int] NOT NULL,
    [Impressions] [int] NOT NULL,
    [Clicks] [int] NOT NULL,
    [Conversions] [int] NOT …
Run Code Online (Sandbox Code Playgroud)

sql-server columnstore sql-server-2014

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

计算字段更新每一行

我在表中添加了一个计算字段,并且只想更新NULL行(或“新”行)。出了点问题,DateTime当插入 1 行时,我的表中的每一行都用当前更新。这是Create Table语法,我必须做什么才能仅使用当前更新“新”行DateTime

CREATE TABLE [dbo].[SE](
[dbID] [int] IDENTITY(1,1) NOT NULL,
[uqID] [varchar](31) NOT NULL,
[POD] [varchar](255) NULL,
[EC] [varchar](255) NULL,
[S1] [varchar](35) NULL,
[S2] [varchar](35) NULL,
[S3] [varchar](35) NULL,
[S4] [varchar](35) NULL,
[S5] [varchar](35) NULL,
[S6] [varchar](35) NULL,
[S7] [varchar](35) NULL,
[PSD] [varchar](50) NULL,
[DS] [datetime] NULL,
[CN] [varchar](max) NULL,
[autodate]  AS (getdate()),
PRIMARY KEY CLUSTERED 
(
[dbID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,     ALLOW_ROW_LOCKS = …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2 default-value computed-column

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

为什么向视图添加列会损坏表值函数?

我有一个 TVPmyTVP实现为select val.* from vw_MyView val. 前几天,我修改了vw_MyView,将: 替换
select Foo,Bar from DB
select Foo, Bash, Bar from DB

这有一个奇怪的副作用:调用select Bar from myTVP()返回一个名为Bar填充了内容的列Bash(尽管事实上BarBash甚至没有相同的类型)。

展示问题的匿名计划:https://www.brentozar.com/pastetheplan/?id=ryJLJmqdl

请注意,Object2Object1是相同的,但两个计划之间最左侧嵌套循环的输出列表完全不同。

笔记:

  • 使用中没有计划提示。未设置跟踪标志。
  • CheckDB 没有发现错误。
  • 使用选项(重新编译)并没有解决问题。
  • 在 TVP 上运行右键单击 alter 且不进行任何更改修复了该问题。
  • 在名称更改的 TVP 上运行右键单击 alter 修复了该问题,但新的 TVP 除名称外与之前的相同。
  • 使用SQL 2014标准版。

问题:

  1. 向视图添加新列以更改对该视图的其他引用所使用的视图列是否正常?
  2. 在什么情况下向视图添加列会导致这种行为?

sql-server view sql-server-2014 set-returning-functions

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