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-95304

sachin-SQLServernewbiee's questions

Martin Hope
sachin-SQLServernewbiee
Asked: 2021-05-20 07:06:44 +0800 CST

我们可以对一个特定的 PostgreSQL 数据库进行 PITR [重复]

  • 1
这个问题在这里已经有了答案:
是否可以将单个 PostgreSQL 数据库恢复到 PITR? (1 个回答)
去年关闭。

我是 PostgreSQL 新手,所以如果我的问题听起来很愚蠢,请忽略。

想象一下,我们在 PostgreSQL 中有三个数据库,TRUNCATE一个小时前有人错误地在其中一个数据库上运行了一个命令。现在我们想单独为那个数据库做一个 PITR,因为只有一个数据库存在问题。

在 PostgreSQL 中是否可以为一个特定的数据库执行 PITR,或者它只能在实例级别发生?

我阅读了Continuous Archiving and Point-in-Time Recovery (PITR)的文档。看起来它只能在实例级别完成(我想我们在 PostgreSQL 世界中将实例称为“数据库集群”,我来自 SQL Server 世界)。

与普通文件系统备份技术一样,这种方法只能支持整个数据库集群的恢复,而不是一个子集。

如果 PITR 在 DB 级别是不可能的,那么 Prod DBA 如何处理这种情况?

最后一件事,我有一个带有多个 DB 的测试服务器,如果 PITR 在 DB 级别是可能的,那么请分享我的步骤,以便我可以自己测试它。

我主要对受支持的 Postgres 版本感兴趣。我的测试服务器是 PostgreSQL 9.6.16。

postgresql restore
  • 1 个回答
  • 169 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2021-02-06 06:04:37 +0800 CST

<> 是否进行分区消除?

  • 2

我们有一个使用以下分区函数在 STATUS 列上分区的分区表。因此,一个表将总共有两个分区,并且根据分区方案,两个分区都将进入不同的文件组。

CREATE PARTITION FUNCTION PART_FN_STATUS(INT) AS RANGE RIGHT FOR VALUES (1000)

注意: 根据业务逻辑,状态不能大于 1000。1000 是最大值。

我们在状态列上也有一个非聚集索引,它是一个对齐分区索引,即在状态列上分区。

当我运行以下查询并观察实际执行计划时,我有以下问题:

SELECT COUNT(*) FROM ORDERS WHERE STATUS <> 1000
  1. 在 NCI Seek 上,当我将鼠标悬停在它上面时,我可以看到“Actual Partition Count”为 2。那么为什么它不进行分区消除呢?
  2. 在相同的工具提示中,当我检查估计/实际读取的行数时,它实际上是 1 个分区的计数。所以看起来分区消除发生了?
  3. <> 是一个 Non-Sargable Operator,那么如何在 NCI 上发生 SEEK 呢?
  4. Non-Sargable Operator 可以进行分区消除吗?

任何帮助,将不胜感激。

sql-server partitioning
  • 1 个回答
  • 150 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2020-08-10 02:00:54 +0800 CST

实际执行计划中缺少统计信息更新时间

  • 0

我记得我在过去的某个地方看到,当我看到实际执行计划的 XML 时,它包含有关何时更新表上索引的统计信息以及采样的行数的详细信息。我现在无法找到该信息。是否有任何需要打开的旋钮或实际计划在实际执行计划中从未有过这种信息?

sql-server execution-plan
  • 1 个回答
  • 43 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2020-05-09 06:45:50 +0800 CST

如何查找在 SQL Server 中创建分区的时间

  • 0

在 SQL Server 中,有什么方法可以找到何时在表上创建分区?

背景:我们有大约 40 个表,这些表与它们的索引一起被分区。我们总共有 4 个文件组。我们有一个与分区相关的 Windows 服务。它的作用是,如果记录数达到某个阈值(其他逻辑也存在),它会创建新分区,并且这些分区是以循环方式在 4 个文件组之一中创建的。我们有很多分区。我想知道 SQL Server 内部是否有任何地方,它是否存储这些分区的创建时间?

如果不是,我会感到震惊,因为我觉得这是无论如何都应该存在于 SQL Server 中的基本内容。请提供您的意见。

sql-server partitioning
  • 1 个回答
  • 617 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2020-02-05 04:54:54 +0800 CST

在什么情况下 SQL Server 更新统计信息

  • 0

当表中 20% 的数据发生更改时,我知道 SQL Server 更新统计信息。它通过使用修改计数器来跟踪它,我们可以在 sys.stats 表的 [modification_counter] 列中看到它。

但是我可以看到我在数据库中的一个关键表中,统计数据在达到 20% 的数据修改阈值之前就已经更新了很多。只是想知道是否还有其他东西会强制 SQL Server 自动更新统计信息。

为什么我担心的是,当 SQL Server 自动更新统计信息时,它使用 5% 的采样率,这可能会导致创建错误/不准确的执行计划。(需要确认是完全不同的问题)。

所以我想知道为什么 SQL Server 如此频繁地更新统计信息?

sql-server performance-tuning
  • 1 个回答
  • 452 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2020-01-16 23:00:06 +0800 CST

有没有最快的方法来缩小 SQL Server 中的 LOB 数据

  • 2

我们有一个总大小为 3886 GB 的数据库。其中 778 GB 是免费的。因此,总共存在 3108 GB 的数据。

其中 2458 GB 是“LOB 数据”,400 GB 是“常规”。

由于数据库托管在 AWS 上,因此为了节省成本,我们正在尝试缩小数据文件以释放空间。儿子为了容纳数据,我们已经有两个 2 TB 的驱动器,而且都快满了,我的经理不想创建另一个驱动器并将新文件放在那里。

但是,当我们尝试一次缩小 2 GB 时,会花费很多时间(看到 dbcc lobcompact 在 sp_who2 中运行),而且我们有时也会看到阻塞。谷歌搜索后,我在下面看到 Paul S. Randal 的博客文章,他还指出 LOB 数据使收缩变慢。

https://www.sqlskills.com/blogs/paul/why-lob-data-makes-shrink-run-slooooowly-t-sql-tuesday-006/

我担心的是:

在这种情况下,有什么办法可以让收缩更快,或者根本没有办法?
当涉及到云时,其他人在这种情况下正在做什么,他们想通过减少存储大小来节省一些成本?
我的理解是正确的,即缩小文件可以以某种方式节省组织成本,还是我在浪费时间并使事情变得更糟?如果是,那我该如何说服他?

sql-server shrink
  • 1 个回答
  • 1144 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2019-10-14 08:08:48 +0800 CST

托管在 Azure VM (IaaS) 上的 SQL Server 是否支持 DB 邮件?

  • 2

托管在 Azure VM (IaaS) 上的 SQL Server 中是否存在 DB 邮件?

如果不支持 DB 邮件,那么有哪些可用功能?

sql-server azure-sql-database
  • 2 个回答
  • 1496 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2019-10-14 06:50:00 +0800 CST

如何在查询执行后检查查询的实际执行计划

  • 1

在 SQL Server 中,我们如何才能看到查询执行后的实际执行计划?

据我所知,只有估计的执行计划(不是实际的执行计划)存储在计划缓存中。那是对的吗?

注意:我们没有任何第三方监控工具。

sql-server execution-plan
  • 2 个回答
  • 456 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2019-05-23 05:40:35 +0800 CST

为什么要进行索引搜索

  • 3

我创建了一个示例表,如下所示

CREATE TABLE [dbo].[StatisticsDemo](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](50) NULL
   ) ON [PRIMARY]

然后我插入下面的数据如下:

SELECT NAME,COUNT(*) AS COUNT 
FROM StatisticsDemo 
GROUP BY NAME

NAME    COUNT
-------------
AABBCC  59999
XXYYZZ  1

然后我在非聚集索引下创建:

CREATE NONCLUSTERED INDEX [NCI_STATISTICSDEMO_NAME] ON [dbo].[StatisticsDemo]
(
    [Name] ASC
)

现在我运行了以下查询:

SELECT NAME FROM [dbo].[StatisticsDemo] 
WHERE NAME = 'AABBCC'

正如预期的那样,它返回 59999 行,但它正在对非聚集索引进行索引查找。但据我所知,它应该进行索引扫描,因为 99.99% 的数据满足选择查询中提到的过滤条件。

有人能告诉我为什么它在做索引搜索而不是索引扫描吗?

整个活动的目的是证明(因为我将要介绍统计数据)SQL Server 在准备执行计划之前并根据记录匹配表中的总记录,它将决定进行扫描或搜索。如果记录匹配的百分比大约等于表中的记录总数,则应该进行 SCAN。但这并没有发生。当我使用 AdventureWorks2016 数据库并运行以下查询时也是如此:

select * from [Sales].[SalesOrderHeader] WHERE SalesOrderID >= 43659 AND 
SalesOrderID <= 73659

上面的查询返回 31465 条记录中的 30001 条记录。但它仍在执行 Clustered Index Seek。

我变得非常困惑,它正在动摇我的概念。:( 可以请一些帮助。

PS:我也清理了计划缓存,但没有运气。SQL Server 版本是 2016。

sql-server execution-plan
  • 2 个回答
  • 304 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2019-03-27 01:04:23 +0800 CST

如何使用 SQL Server VSS Writer Service 进行数据库备份

  • 3

我们几乎没有从未知来源运行备份的服务器。backupmediafamily 表中的 physical_device_name 类似于{922DDBA9-0686-46B8-94BC-XXXXXXXXXX}2.

我随机检查并注意到这种备份正在数据库上运行。所以我停止了 SQL Server VSS Writer 服务,备份过程也停止了。这促使我认为该服务也在进行备份。我仍然不知道 Windows/SQL 是如何决定在特定时间触发这些备份的,因为 SQL Server VSS Writer 服务正在 24*7 运行。

我还看到在少数服务器上运行 SQL Server VSS Writer 但这些备份并未在数据库级别进行的情况。

有人可以帮助我理解(识别)是什么导致 SQL Server 触发此类备份,因为我想在整个组织中停止它们。

sql-server backup
  • 1 个回答
  • 474 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2019-02-01 21:39:23 +0800 CST

SQL传统集群每个节点是否有独立的主库

  • -1

在SQL Server传统集群中,集群的每个节点是否都有自己的主数据库?我确信在身体上他们不会……但逻辑上可能是?

另外我们知道,在传统集群上应用 SQL 补丁的方法是先给被动节点打补丁,然后进行故障转移,然后再做主动节点......如果被动节点上没有 SQL,那么首先如何在被动节点上应用 SQL 补丁地方???

任何输入表示赞赏...

sql-server clustering
  • 2 个回答
  • 613 Views
Martin Hope
sachin-SQLServernewbiee
Asked: 2016-09-06 06:30:47 +0800 CST

为 SQL Server 2008R2 运行但不为更高版本运行的 Powershell 脚本

  • 0

我在 SQL Server 2008R2 机器的 Powershell 脚本下运行。该脚本的目的是一次性在所有提到的 SQL Server 实例上远程创建 SQL 作业。服务器名称、实例名称和端口号已通过记事本提及。它能够在 2008R2 实例上执行此操作,但不能在 SQL Server 2012 上执行此操作。我一直怀疑 powershell 脚本是否取决于 SQL Server 版本?

如果有人可以帮助我消除疑虑并解决问题,那就太好了。

错误信息:

以下错误消息不断重复我们为作业设置的所有参数,例如 OwnerLoginName、Subsystem、Command 等

新对象:使用“2”参数调用“.ctor”的异常:“SetParent failed for Job 'SQL Services Restarted Aler” At E:\Sachin\create-SQLJOB_AllInstances_V1.ps1:18 char:16 + $j = new-object <<<< ('Microsoft.SqlServer.Management.Smo.Agent.Job') ($s.JobServer,'SQL Services Restarted Aler + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

在此对象上找不到属性“描述”;确保它存在并且可设置。在 E:\Sachin\create-SQLJOB_AllInstances_V1.ps1:19 char:4 + $j。<<<< Description = 'Alert to identify the SQL Services Restart' + CategoryInfo : InvalidOperation: (Description:String) [], RuntimeException + FullyQualifiedErrorId : PropertyNotFound

您不能对空值表达式调用方法。在 E:\Sachin\create-SQLJOB_AllInstances_V1.ps1:21 char:10 + $j.Create <<<< () + CategoryInfo : InvalidOperation: (Create:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull

提前致谢。`

    function CreateSQLJob{
    param (
    [string]$svr,
    [string]$inst,
    [string]$port
    )
    foreach ($instancename in $inst)
    {
    $ConnectionString = "data source = $inst,$port; initial catalog = master; trusted_connection = true;"
    [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
    $s = New-Object ('Microsoft.SqlServer.Management.Smo.Server')
    $s.ConnectionContext.ConnectionString = $ConnectionString
    $j = new-object ('Microsoft.SqlServer.Management.Smo.Agent.Job') ($s.JobServer,'SQL Services Restarted Alert')
    $j.Description = 'Alert to identify the SQL Services Restart'
    $j.OwnerLoginName = 'sa'
    $j.Create()
   $js = new-object ('Microsoft.SqlServer.Management.Smo.Agent.JobStep') ($j,'Step 01')
   $js.SubSystem = 'TransactSql'
   $js.Command = "IF(SELECT DATEDIFF(MI,Crdate,GETDATE()) FROM master.dbo.sysdatabases WHERE NAME='TEMPDB')<=2
   BEGIN
   EXEC msdb.dbo.sp_send_dbmail
   @profile_name='XXX',
   @recipients=N'[email protected]',
   @subject=N'SQL Services Restarted on on Server - $inst',
   @body=N'This is an informational message only: SQL services possibly restarted on this server. Please restart any dependent application services after verifying status with DBA Team first.'
  END"
  $js.OnSuccessAction = 'QuitWithSuccess'
  $js.OnFailAction = 'GoToStep'
  $js.OnFailStep=2
  $js.Create()
  $SQLJobStep2 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Agent.JobStep -argumentlist $j,"Failure Notification"
  $SQLJobStep2.Command = "EXEC msdb.dbo.sp_send_dbmail 
  @profile_name = 'XXX',
  @recipients='[email protected]',
  @subject = 'SQL Services Restarted Alert job - FAILED on $inst',
  @body = 'Hi Team,<br><br> 
            SQL Services Restarted Alert job failed . <br><br>
                     Thank You.', 
 @body_format = 'HTML' ;"
 $SQLJobStep2.DatabaseName = "master"
 $SQLJobStep2.OnSuccessAction = "QuitWithFailure"
 $SQLJobStep2.OnFailAction = "QuitWithFailure"
 $SQLJobStep2.Create()
 $jsid = $js.ID
 $j.ApplyToTargetServer($inst)
 $j.StartStepID = $jsid
 $j.Alter()
 $jsch = new-object ('Microsoft.SqlServer.Management.Smo.Agent.JobSchedule') ($j,'Sched 01')
 $jsch.FrequencyTypes = 'AutoStart'
 $jsch.ActiveStartDate = get-date
 $jsch.Create()
 write-host "SQL Services Restarted Alert Job created on server $inst"
 }
 }
 $servers = Get-Content 'E:\Sachin\SQL_Servers1.txt'

 foreach ($sv in $servers) {
 $srvr = $sv.Split(",")
 $server = $srvr[0]
 $instance = $srvr[1]
 $port = $srvr[2]

 CreateSQLJob $server $instance $port
 }`
sql-server powershell
  • 1 个回答
  • 722 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