AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-69149

AcePL's questions

Martin Hope
AcePL
Asked: 2022-01-11 01:23:37 +0800 CST

SQL Server SSMS - 编辑 200 行功能 - 两个或更多人是否可以使用此功能更改彼此的工作?

  • 0

让我们考虑一个场景:

两个或更多人正在处理存储应用程序配置数据的表。该表中有多种配置,因此每个人都可以处理自己的数据集。

编辑 200 行功能比编写脚本要快,因为脚本中有很多特殊字符需要转义,在编辑中大多数情况下只是复制和粘贴。

每个人都在特定于配置的行上工作,因此编辑查询包含 where 子句。当然,它不会经常发生,但在测试时,有时会出现一些不寻常的此类活动。

现在的问题是:当更改保存在 Edit 200 rows 中时,SSMS 是提交整个表还是只提交窗格中的行?另外:如果两个人不小心在同一个数据集上工作——他们会覆盖彼此的工作吗?

我的直觉对第一行说“不,只是特定行”,对第二行说“是”,但我找不到任何关于 SSMS UI 功能如何在后台工作的描述(这可能是因为我异常缓慢并且今天很密集......不是日冕,但感觉不舒服)。

sql-server ssms
  • 1 个回答
  • 76 Views
Martin Hope
AcePL
Asked: 2017-04-20 06:50:06 +0800 CST

一条记录22亿次执行的表索引扫描

  • 6

在我的查询中,有些事情我不确定如何解决。

一、定义:

快递服务表。有一张唱片。

CREATE TABLE [dbo].[CS](
    [ServiceID] [int] IDENTITY(1,1) NOT NULL,
    [CSID] [nvarchar](6) NULL,
    [CSDescription] [varchar](50) NULL,
    [OperatingDays] [int] NULL,
    [DefaultService] [bit] NULL,
 CONSTRAINT [CourierServices_PK] PRIMARY KEY CLUSTERED 
(
    [ServiceID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
       ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90
) ON [PRIMARY]
) ON [PRIMARY]

GO
SET IDENTITY_INSERT [dbo].[CS] ON 

INSERT [dbo].[CS] ([ServiceID], [CSID], [OperatingDays], [DefaultService])
           VALUES (1, N'RM48', 2, 1)
SET IDENTITY_INSERT [dbo].[CS] OFF
SET ANSI_PADDING ON

GO
/****** Object:  Index [ix_CourierServices]    Script Date: 19/04/2017 14:27:03 ******/
CREATE NONCLUSTERED INDEX [ix_CourierServices] ON [dbo].[CS]
(
    [CSID] ASC,
    [DefaultService] ASC,
    [OperatingDays] ASC
)
INCLUDE (   [CSDescription]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

日历数据库和表格,代码由Genius Jim Horn编写:

CREATE TABLE [dbo].[days](
    [PKDate] [date] NOT NULL,
    [calendar_year] [smallint] NULL,
    [calendar_quarter] [tinyint] NULL,
    [calendar_quarter_desc] [varchar](10) NULL,
    [calendar_month] [tinyint] NULL,
    [calendar_month_name_long] [varchar](30) NULL,
    [calendar_month_name_short] [varchar](10) NULL,
    [calendar_week_in_year] [tinyint] NULL,
    [calendar_week_in_month] [tinyint] NULL,
    [calendar_day_in_year] [smallint] NULL,
    [calendar_day_in_week] [tinyint] NULL,
    [calendar_day_in_month] [tinyint] NULL,
    [dmy_name_long] [varchar](30) NULL,
    [dmy_name_long_with_suffix] [varchar](30) NULL,
    [day_name_long] [varchar](10) NULL,
    [day_name_short] [varchar](10) NULL,
    [continuous_year] [tinyint] NULL,
    [continuous_quarter] [smallint] NULL,
    [continuous_month] [smallint] NULL,
    [continuous_week] [smallint] NULL,
    [continuous_day] [int] NULL,
    [description] [varchar](100) NULL,
    [is_weekend] [tinyint] NULL,
    [is_holiday] [tinyint] NULL,
    [is_workday] [tinyint] NULL,
    [is_event] [tinyint] NULL,
PRIMARY KEY CLUSTERED 
(
    [PKDate] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
 ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

/****** Object:  Index [ix_days]    Script Date: 19/04/2017 14:38:47 ******/
CREATE NONCLUSTERED INDEX [ix_days] ON [dbo].[days]
(
    [PKDate] ASC
)
INCLUDE (   [is_weekend],
    [is_holiday],
    [is_workday],
    [is_event]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
 SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF,
 ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

现在,我正在运行一个查询,它根据代码位引用两个表:

Select
    OID
   ,case when
     Cast(o.[CreationDate] as time) > '16:00:00' 
        then (select top 1 [PKDate] from [calendar].[dbo].days
              where is_weekend <> 1 and is_holiday <>1 and 
              PKDate > cast(o.[CreationDate] as date)
              order by PKDate asc)
        else (select top 1 [PKDate] from [calendar].[dbo].days
              where is_weekend <> 1 and is_holiday <>1 and 
              PKDate >= Cast(o.[CreationDate] as date) 
              order by PKDate asc)
        end  OperatingDate
   ,case when
     Cast(o.[CreationDate] as time) > '16:00:00' 
        then (select top 1 [PKDate] from [calendar].[dbo].days
              where is_weekend <> 1 and is_holiday <>1 and 
              PKDate > dateadd(day,isnull(
                  (select top 1 [operatingdays]
                  from [dbo].[CS]
                  where DefaultService = 1)
                 ,2)+1,Cast(o.[CreationDate] as date))
                 order by PKDate asc)
            else (select top 1 [PKDate] from [calendar].[dbo].days
                  where is_weekend <> 1 and is_holiday <>1 and
                  PKDate > dateadd(day,isnull(
                      (select top 1 [operatingdays]
                       from [dbo].[CS]
                       where DefaultService = 1)
                      ,2), Cast(o.[CreationDate] as date))
                      order by PKDate asc)
            end EstimatedDeliveryDate
  ,(select dateadd(day,3,o.[CreationDate])) DeliveryDate
From o

现在的问题是,与索引扫描和执行次数有关:为什么是 20 亿?还是60亿?不可否认,整个查询的输出是 170 万行,但这并不能解释查询计划中显示的疯狂数字:

https://www.brentozar.com/pastetheplan/?id=H1iahxHAe

如果我可以敲平所有这些扫描,我可以显着减少查询时间,但首先:我如何解释这些数字以找到解决方案?

days 表包含 7.6 k 行(涵盖 2000-2020 年)。

sql-server sql-server-2012
  • 3 个回答
  • 1286 Views
Martin Hope
AcePL
Asked: 2016-10-28 01:31:40 +0800 CST

跨多个链接服务器的 SQL Server 查询 - 性能极差

  • 1

在三个独立的链接服务器上存在三个不同的数据库SQL0,SQL1(托管 2 个数据库),SQL2(托管 1 个数据库)。SQL0充当报告服务器并将托管所有有问题的数据库(方法 TBD - 也许复制可能其他),但由于某些审计目的数据将是旧的(<24H),仍然需要实时运行一些查询数据。

两种设置:

设置 1. Localhost\SQL0- 链接到SQL1和SQL2(每个都使用各自的sa凭据进行连接)

设置 2.SQL1链接到SQL2(同样,使用sa凭据)

有问题的查询连接(目前)这三个数据库中的 8 个表。将来,查询中将有另一台服务器、另一个数据库和几个连接表,由代理定期运行并通过电子邮件发送结果。它通常返回少于 100 行,但TOP 10在开发中使用受限。

为什么运行此查询SQL2需要 3 秒或更短的时间才能执行,但运行时需要 105 秒SQL0?只要它只是网络流量,我愿意忽略 30 倍的执行时间,但如果它影响链接服务器的性能,我需要找到解决方案统计信息。

所有服务器都在同一个 LAN 上,但SQL2在另一个通过 VPN 连接的建筑物中。

一切都在 SSMS 中,在与所有其他人连接到同一网络的机器上,没有视图,没有链接服务器到链接服务器或其他“并发症”;我可以以 sa 身份访问所有服务器。

查询计划(实际)、SQL2 和 SQL0 分别为: SQL2 上的查询计划 和 SQL0 上的查询计划

sql-server sql-server-2012
  • 2 个回答
  • 2163 Views
Martin Hope
AcePL
Asked: 2016-10-11 02:59:20 +0800 CST

SSMS 2012 - 已加载的已保存查询不可执行(“对象名称无效”错误)

  • 0

我有多个已保存的查询(在我开发它们时每个都运行良好)。但是当我将它们加载到 SSMS 中时,它们会立即在脚本中的每个表名中显示错误。此外,我无法从“可用数据库”框中选择相关的数据库(或该服务器上的任何数据库,就此而言)并且USE [DB_NAME]命令也不起作用。

但是,如果我将在“对象资源管理器”中导航到我想要的服务器上任何数据库中的任何表,甚至做一个简单的Select Top 1000,然后粘贴整个不起作用的查询 - 瞧 - 它运行良好。

我同时连接到不同机器上的多个 SQL 服务器是否重要?如果需要 - 所有 SQL Server 2012。

有没有人知道发生了什么事?每次我需要运行查询时都要经历上述所有步骤,这非常烦人。谢谢!

sql-server sql-server-2012
  • 2 个回答
  • 384 Views
Martin Hope
AcePL
Asked: 2016-02-24 07:20:06 +0800 CST

Xquery、insert、Trigger 和无处压缩存储过程

  • 1

我有一个存储过程,基本上是 xquery 从 xml 中提取数据并将其插入到多个表中。一旦它插入到最后一个提到的表中,触发器就会启动,然后该数据用于执行更多数据操作。

这一切都很好,直到我必须做一些严肃的字符串切割和拼接。严肃地说,我的意思是将从表的多行和多列中选择的客户姓氏和名字添加到一个字符串中。以前它是通过第 3 方软件完成的,该软件分解 xml 并调用 SQL Server 存储过程,并对从 xml 派生的数据集中的每一行进行字符串操作。

现在我正在使用 Xquery,这是不可用的——insert from select from xquery 将不允许重新使用所述存储过程,而且我不能使用代码位在 xquery 中进行操作。

字符串操作的示例代码:

select top 100 @string = @string + Surname +' & '
from usr_bie
where ref = @ref and code = @code and type = 'Client' order by mc desc
Select @string = left(@string,len(@string)-2) + ', '
Select top 100 @string = @string + FirstName +
(case
 when middlename is not null 
 then ' ' + Middlename 
 else '' end
) + ' & ' 
from usr_bie 
where ref = @ref and code = @code and type = 'Client' order by mc desc
Select @string = left(@string,len(@string)-2)

我需要将上面的结果分配给 xquery 中的值:

Insert into a (col1, col2,...)
Select
t.c.value('(../Ref)[1]','varchar(50)') as col1
....
from @xml.nodes(...)t(c)

我知道 Xquery 插入多行,所以没有简单的方法来为每一行调用旧的存储过程,但是 OTOH 我也不能@string像上面那样进行操作。

有没有我不熟悉的解决方案?

我(再次)将字符串操作代码转换为函数,这次它起作用了。但是在 xml 的其他值上还有很多工作要做……所以问题是:有没有办法用 xquery 做 RBAR,所以我可以根据需要以各种方式操作数据?就像现在一样,插入是在多行上完成的,所以我不能做简单的条件:if @variable = somevalue begin...,其中 @variable 作为存储过程参数传递?我坚持慢速方式 (rbar) 而不是像@Duffy 建议的那样去 CTE 有什么意义吗?

stored-procedures sql-server-2012
  • 1 个回答
  • 262 Views
Martin Hope
AcePL
Asked: 2015-11-24 05:07:59 +0800 CST

使用默认命名空间和不一致的根节点解析类型化 XML

  • 5

我有一个结构化的类型化 xml 文件。

<WebService xmlns="http://www.orbis-software.com/WebSvcCon">
 <NewLeads>
  <OutputSchema>
  <root xmlns="" type="array">
   <item type="object">
   <SaleProperty type="object">
    <Type type="string">Freehold</Type>
    <PostDistrict type="string">xxx</PostDistrict>
    <Address type="string">address</Address>
     <Value type="number">17.0</Value>
   </SaleProperty>
   <Transaction type="string">SaleOnly</Transaction>
   <Quote type="object">
    <Sale type="object">
     <Fees type="number">450.0</Fees>
     <Disbursements type="number">0.0</Disbursements>
     <StampDuty type="number">0.0</StampDuty>
     <Total type="number">450.0</Total>
    </Sale>
   <Discount type="number">0.0</Discount>
   <VAT type="number">90.0</VAT>
   <Total type="number">540.0</Total>
  </Quote>
  <MoverId type="number">12345678</MoverId>
  <Name type="string">Mr AS</Name>
  <Email type="string">[email protected]</Email>
  <Telephone type="string">0123456789</Telephone>
  <Comments type="string">Joint ownership</Comments>
  <EstimatedMoveDate type="string">2015-11-25T05:57:00</EstimatedMoveDate>
  <Charge type="number">4.99</Charge>
  <ChargeStatus type="string">Chargeable</ChargeStatus>
 </item>
</root>
</OutputSchema></NewLeads></WebService>

此外,对象 SaleProperty 可能会丢失,而可能是对象 PurchaseProperty。同样,对象 Quote 可以同时包含销售、购买、再抵押对象或销售和购买我找不到通过 SQL Server 2012 上的 xquery 将其插入到一个表中的任何提示。基本问题是每次我构建查询以提取除了我得到的错误之外,即使是一个值(即事务)也是空字符串。

我的示例查询(基于 MSDN 示例):

SELECT t.c.value('(.)[1]','varchar(50)') as type
from @ixml.nodes('/root/item/transaction') as t(c)

我想举个例子,如何将此 xml 插入表中(每个可能的元素都有自己的列。

我认为问题出在名称空间和 xml 的强类型上。但是,这是我从 Web 服务中得到的。我在 xml 上工作,在根元素中缺少和包含第二个 xmlns 声明,以及将结构修剪到根元素。

sql-server sql-server-2012
  • 2 个回答
  • 12669 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve