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

Mickael's questions

Martin Hope
Mickael
Asked: 2024-04-22 22:13:29 +0800 CST

使用 SQL CallStackResolver 读取/理解 query_abort 扩展事件跟踪的上下文

  • 5

我们决定在query_abort所有数据库服务器上测试并可能实施新的扩展事件跟踪,以了解有关超时查询的更多信息。目前,我们使用rpc_completed带有status=2过滤器的事件。

我们将使用此Microsoft 视频中详细介绍的SQLCallStackResolver 工具,并使用该工具处理的列。task_callstack_rva

这是我们从一份声明中得到的痕迹之一SELECT:

00 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
01 YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
00 SqlDK!ThreadScheduler::SwitchWorker
01 SqlDK!SOS_Scheduler::Switch
02 SqlDK!SOS_Scheduler::SuspendNonPreemptive
03 SqlDK!WaitableBase::Wait
04 sqllang!TDSSNIClient::WriteStatus
05 sqllang!WaitOnWriteAsyncToFinish
06 sqllang!write_data
07 sqllang!flush_buffer
08 sqllang!CTds74::SendRowImpl
09 SqlTsEs!CEsExec::GeneralEval4
0a sqllang!CXStmtQuery::ErsqExecuteQuery
0b sqllang!CXStmtSelect::XretExecute
0c sqllang!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn
0d sqllang!CMsqlExecContext::ExecuteStmts<1,0>
0e sqllang!CMsqlExecContext::FExecute
0f sqllang!CSQLSource::Execute
10 sqllang!process_request
11 sqllang!process_commands_internal
12 sqllang!process_messages
13 SqlDK!SOS_Task::Param::Execute
14 SqlDK!SOS_Scheduler::RunTask
15 SqlDK!SOS_Scheduler::ProcessTasks
16 SqlDK!Worker::EntryPoint
17 SqlDK!ThreadScheduler::RunWorker
18 SqlDK!SystemThreadDispatcher::ProcessWorker
19 SqlDK!SchedulerManager::ThreadEntryPoint
<frame id="28" address="0x776D11E7" />
1d WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
1e ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

据我所知,查询正在处理并进入多个状态和等待,例如分配给调度程序。但是这些信息如何帮助我们了解导致超时的原因呢?事实上,在我看来,一切都很顺利。

sql-server
  • 1 个回答
  • 43 Views
Martin Hope
Mickael
Asked: 2022-03-23 02:06:12 +0800 CST

在 AlwaysON 集群上具有多个 SQL 实例的 gMSA 的最佳实践是什么

  • 1

我必须将 8 个 SQL Server 实例迁移到新的 SQL Server 2019 AlwaysON 集群。每个实例都将被复制到被动辅助节点。我们在全球范围内都希望使用 gMSA 而不是经典域帐户。

我找不到与此相关的最佳实践:

  • 我应该对所有节点上的所有 sql 服务使用相同的 gMSA 吗?
  • 我应该为每个实例使用专用的 gMSA 吗?(主节点和辅助节点)。
  • 如果是,我可以在每个节点上安装多个 gMSA 服务吗?(Install-ADServiceAccount gMSAsqlservice)

谢谢

sql-server service-accounts
  • 1 个回答
  • 139 Views
Martin Hope
Mickael
Asked: 2022-01-01 08:06:52 +0800 CST

MongoDB:如何将独立集转换为副本集

  • 1

我是 MongoDB 的新手,并且搜索了几个小时如何将我的 mongo 独立实例提升为副本集。我的实际环境是一台 ubuntu 服务器

root@UMONGO1:/home/msc# lsb_release -a

Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:    20.04
Codename:   focal

在端口 27017 上本地运行独立的 mongodb 实例:

root@UMONGO1:/var/lib# systemctl status mongod
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-01-01 15:46:52 CET; 10min ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 964 (mongod)
     Memory: 222.6M
     CGroup: /system.slice/mongod.service
             └─964 /usr/bin/mongod --config /etc/mongod.conf



# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

我从这里导入了一个数据库目标是再创建两台服务器并在它们上面复制数据库。

参考文档:

将独立集转换为副本集我对必须使用的两个参数 --port 和 --dbpath 感到困惑。如果我想推广我的实际实例,我应该使用现有的数据库路径和端口,对吗?但无论我在尝试什么,它都是失败的。

使用另一个端口:

mongod --port 27017 --dbpath /var/lib/mongodb/ --replSet rs0

"ctx":"initandlisten","msg":"Error setting up listener","attr":{"error":{"code":9001,"codeName":"SocketException","errmsg":"Address already in use"}}}

mongod --port 27018 --dbpath /var/lib/mongodb/ --replSet rs0

BException in initAndListen, terminating","attr":{"error":"DBPathInUse: Unable to lock the lock file: /var/lib/mongodb/mongod.lock (Resource temporarily unavailable). Another mongod instance is already running on the /var/lib/mongodb/ directory"}}

使用新目录:

mongod --port 27017 --dbpath /media/msc/MONGO/rs/ --replSet rs0

"replication":{"replSet":"rs0"},"storage":{"dbPath":"/media/msc/MONGO/rs/"}}}}
{"t":{"$date":"2021-12-31T16:55:28.885+01:00"},"s":"E",  "c":"CONTROL",  "id":20568,   "ctx":"initandlisten","msg":"Error setting up listener","attr":{"error":{"code":9001,"codeName":"SocketException","errmsg":"Address already in use"}}}

mongod --port 27018 --dbpath /media/msc/MONGO/rs/ --replSet rs0

{"t":{"$date":"2021-12-31T16:57:11.762+01:00"},"s":"I",  "c":"-",        "id":4939300, "ctx":"monitoring-keys-for-HMAC","msg":"Failed to refresh key cache","attr":{"error":"NotYetInitialized: Cannot use non-local read concern until replica set is finished initializing.","nextWakeupMillis":2000}}

而这种等待“nextWakeupMillis”永远不会停止。

您能否提供有关正确配置和问题所在的帮助?

******************编辑:2022 年 1 月 3 日******************

现在我可以使用以下方式推广我的实例:

mongod --port 27017 --dbpath /var/lib/mongodb/ --replSet rs0

然后打开一个新的shell并发送

rs.initiate()

但是为什么服务不会以这个新配置启动呢?

● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2022-01-03 11:39:51 CET; 1min 12s ago
       Docs: https://docs.mongodb.org/manual
    Process: 904 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=14)
   Main PID: 904 (code=exited, status=14)

janv. 03 11:39:35 UMONGO1 systemd[1]: Started MongoDB Database Server.
janv. 03 11:39:51 UMONGO1 systemd[1]: mongod.service: Main process exited, code=exited, status=14/n/a
janv. 03 11:39:51 UMONGO1 systemd[1]: mongod.service: Failed with result 'exit-code'.

此外,如果我重新启动服务器,我必须重复这些操作。有没有办法修复配置并启动 mongod 服务?

mongodb replication
  • 4 个回答
  • 2544 Views
Martin Hope
Mickael
Asked: 2021-09-30 01:00:23 +0800 CST

Always On 集群上的内存配置和耗尽

  • 0

我有一个托管 3 个 SQL Server 实例的 2 节点 SQL Server Always On 集群,配置如下:

  • 每个节点的服务器总内存为 768G。
  • 内存消耗为 98%。
  • LPIM 被激活。
  • 实例“A”最小服务器内存为 102G,最大 512G。
  • 实例“B”最小服务器内存为 102G,最大 490G。

最近,我安装了一个新实例“C”,最小和最大服务器内存设置为 8G。

似乎“C”在可用内存方面存在很多问题。启动时:

在此处输入图像描述

有时连接或 AG 失败并显示以下消息:

“资源池‘内部’中的系统内存不足,无法运行此查询”

参考文档有几个相关的原因。

我的第一个猜测是实例“A”和“B”仍在获取所有可用内存,当新实例启动时,操作系统会回收其中的一部分。

我的第二个猜测是服务器上没有更多内存用于这个新实例,所以大部分都被发送到页面文件。

我想听听你对这个问题的看法。

我在这里看到的唯一解决方案是为每个实例正确重新配置最大服务器内存,并为操作系统留出一些可用空间。

我试图停止实例“B”,释放大量内存,然后重新启动我新安装的实例。操作系统上有很多可用内存,但错误仍在发生。

我注意到的另一点是 SOSMEMMANAGER 店员抓住了所有的记忆。

在此处输入图像描述

sql-server availability-groups
  • 2 个回答
  • 143 Views
Martin Hope
Mickael
Asked: 2019-09-04 07:14:03 +0800 CST

SQL Server 登录在创建时会在数据库上获得不需要的高权限

  • -1

我们需要创建一个只能选择 4 个特定表的新用户。为此,我们创建登录名并将其映射到所需的数据库:

USE [master]
GO
CREATE LOGIN [pos] WITH PASSWORD=N'XXXX', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO

USE [TARGETED_DB_NAME]
GO
CREATE USER [pos] FOR LOGIN [pos]
GO

之后,用户可以执行任何 DML 语句,而他除了公共角色之外没有其他权限。我们检查了公共角色权限、服务器权限等,但找不到用户可以看到数据库所有表的原因。

当我们在同一实例的另一个数据库上创建用户时,问题不存在。

知道为什么登录 pos 会获得这样的特权吗?

sql-server-2012 permissions
  • 1 个回答
  • 64 Views
Martin Hope
Mickael
Asked: 2017-01-11 07:20:17 +0800 CST

SQL Server AlwaysON:开始与选定数据库的辅助同步

  • 1

我有一个 SQL Server 2012 AlwaysON 集群,包括:

win-mssql1 : 见证文件共享

win-mssql2 (INSTANCE 1) : 主服务器

win-mssql3 (INSTANCE 2) : 辅助服务器

最近,我将主机“win-mssql4 (INSTANCE 3)”作为新的辅助副本。我的目标是:

  1. 手动将一个巨大的数据库(我们称之为“BaseSyncManual”)与这个新服务器同步。2.稍后,同步AG中的其他数据库。

第一步,我使用了以下命令:

在主服务器上:

BACKUP DATABASE BaseSyncManual TO DISK = 'I:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\Backup\setra_full.bak';
BACKUP log BaseSyncManual TO DISK = 'I:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\Backup\setra_log_2.trn';

在辅助服务器上:

  RESTORE DATABASE BaseSyncManual FROM DISK = 'I:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\Backup\setra_full.bak'
    WITH NORECOVERY

    RESTORE DATABASE BaseSyncManual FROM DISK = 'I:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\Backup\setra_log_2.trn'
    WITH NORECOVERY

在主要:启动向导以添加副本并选择“跳过初始数据同步”

在中学:alter database BaseSyncManual set hadr availability group = AvailabilityGroup1;

一切运行良好,结果符合我的预期:

在此处输入图像描述

现在我想重新运行“添加新副本助手”,以便将剩余数据库(Base1、Base2、BaseSyncAuto)与“完整”参数同步(自动备份还原并加入到 AG)。但是没有办法做到这一点!已添加到 AvailabilityGroup 的副本:

在此处输入图像描述

而且我无法使用“添加数据库”添加数据库,因为它们已经是第一个辅助复制上的 AvailabilityGroup 的成员:

在此处输入图像描述

我有哪些选择可以将这些数据库与我的新辅助副本同步?我是否注定要通过手动备份-恢复-加入到 AG 来做到这一点?

sql-server sql-server-2012
  • 1 个回答
  • 4621 Views
Martin Hope
Mickael
Asked: 2017-01-07 02:28:39 +0800 CST

oracle expdp 为 SQL Server 导出数据的类似方法

  • 1

在我们的 oracle 数据库上,我们定期通过 expdp/impdp 实用程序运行数据库导出(为便于阅读而包装):

$ expdp user/[password] SCHEMAS=<nom_schema> DIRECTORY=expDatapump 
     DUMPFILE=exp.<schema>.dmp LOGFILE=exp.<schema>.log

多亏了它,例如,我们能够从测试数据库上的特定模式刷新数据。

我想知道在 Microsoft SQL Server 中是否有这样的方法。我已经在 SSMS 中测试了 -> 任务 -> “导出数据”向导,但这并不是很有帮助(仅适用于非常小的数据库、删除了 PK 和 FK 等)。

您可以从 SQL Server 数据库执行转储吗?另一方面,是否最好(如果可能)直接从 .bak 文件恢复特定的 SQL Server 架构?

sql-server export
  • 1 个回答
  • 2135 Views
Martin Hope
Mickael
Asked: 2016-12-10 07:45:00 +0800 CST

从 SQL Server 2008 R2 SP1 升级到 SP3

  • 1

我必须在使用 SP1 运行的 SQL 实例上安装 Service Pack 3。没有测试,直接在生产服务器上安装。好吧,这不是一项复杂的任务,并且该主题已经要求其他版本,但是我想确保不要忘记一些步骤,并且总是欢迎有经验的 dba 反馈。这是我的自定义计划清单:

1.列出服务包中已解决的所有错误。即: https: //support.microsoft.com/en-us/kb/2509302

2.进行虚拟机备份,备份所有数据库。

3.禁用 SQL Server 代理。

4.申请Sp。

5.如果需要,重新启动服务器/实例。

6.检查 SQL 实例的 Service Pack 级别。

7.检查 SQL Server 错误日志中关于 Service Pack 更新的所有条目,并确保没有写入任何错误。

8.参考步骤N°1,检查最终的错误问题。

9.启用 SQL Server 代理。

从客户端:

  1. 检查他的软件和 SP3 之间的兼容性问题。
  2. 安装后,检查数据库/软件之间的客户端连接。

您会发现与添加/删除/修改相关的任何步骤吗?

sql-server upgrade
  • 2 个回答
  • 12872 Views
Martin Hope
Mickael
Asked: 2016-10-20 01:15:54 +0800 CST

SQL Server 内存分配和最大服务器内存设置

  • 4

对于我们的 SQL Server 之一,我们最近添加了更多内存。初始值为 12GB。服务器出现物理内存不足,因此我们又增加了 12GB,总共 24GB。然后我设置了以下值:分钟。服务器内存 1024MB - 最大服务器内存:19456。一切都运行良好,但我对 SQL Server 内存使用情况几乎没有疑问。事实上,SQL 服务器突然使用了所有分配的内存:

在此处输入图像描述

我有一本好书,上面写着:“一旦内存使用量增加到超过最小服务器内存设置,SQL Server 将不会释放低于该数量的任何内存” - 与最大服务器内存发生同样的事情吗?

在此处输入图像描述

我想知道(再次)如何测量 SQL 实际使用了多少内存。我对参数“ Total server memory (KB) ”(“这个计数器测量 SQL Server 的总缓冲池使用量”)感到困惑。根据 perfmon,它只有 2MB:

在此处输入图像描述

也许我们可以为 ESX 节省一些 RAM 和 SQL Server 内存(即 PLE)仍将显示良好的值 - 如何确定?在这种情况下 SQL 内存如何工作的一个很好的解释将非常感激!

sql-server memory
  • 3 个回答
  • 8054 Views
Martin Hope
Mickael
Asked: 2016-09-16 05:58:42 +0800 CST

为什么我不能将我的日志文件缩小到要求的值?

  • 3

在我的测试实验室中试验 VLF 行为。首先,我创建了两个具有不同日志文件大小(1024 和 2048 MO)的数据库(BASE2 和 BASE3):

在此处输入图像描述

其次,我正在运行以下查询以确定日志空间使用情况和 VLF 的活动部分:

USE BASE2
dbcc loginfo
GO
USE BASE3
dbcc loginfo
GO

在此处输入图像描述

DBCC SQLPERF(LOGSPACE)

在此处输入图像描述

所以在我看来,我可以回收很多空间。现在开始此查询以缩小所有数据库日志文件:

DECLARE
@db nvarchar(255),
@fileName nvarchar(255),
@cmd nvarchar(255)

BEGIN

DECLARE dbcursor CURSOR
FOR

SELECT table2.name AS BASE, table1.name AS FICHIER_JOURNAL_BASE

    --table1.database_id, 
    --table1.physical_name, 
    --table1.type_desc
FROM sys.master_files AS table1

INNER JOIN sys.databases AS table2 
ON table1.database_id = table2.database_id

WHERE table1.database_id > 4 AND table1.type_desc = 'LOG' 
AND table2.state_desc = 'ONLINE' AND table2.recovery_model_desc = 'FULL';

OPEN dbcursor  
FETCH NEXT FROM dbcursor INTO @db, @fileName;
WHILE (@@FETCH_STATUS <> -1)
BEGIN

--print @db;

 SET @cmd = 'USE ['+ @db +']; DBCC SHRINKFILE ('''+@fileName+''',512);'
      PRINT 'USE ['+ @db +']; DBCC SHRINKFILE ('''+@fileName+''',512);'
        EXECUTE (@cmd)

FETCH NEXT FROM dbcursor INTO @db, @fileName;
END
CLOSE dbcursor;
DEALLOCATE dbcursor;
END

结果在这里结束:

在此处输入图像描述

在此处输入图像描述

请求的值为 512MO,但磁盘上的当前值约为 650MO。如果我重新启动查询

USE [BASE2]; DBCC SHRINKFILE ('BASE2_log',8);
USE [BASE3]; DBCC SHRINKFILE ('BASE3_log',8);

磁盘上的价值将在 250 MO 左右。那么为什么我的第一个查询没有将日志文件缩小到请求的值 512 MO 呢?实际上,文件末尾没有活动的 VLF,而且仍有大量未使用的空间。

sql-server shrink
  • 1 个回答
  • 77 Views
Martin Hope
Mickael
Asked: 2016-08-30 04:03:40 +0800 CST

SQL Server堆表碎片监控

  • 3

作为一名 SQL Server DBA,我有定期重建/重组索引的维护工作。最近,我问自己有关 SQL Server 中表碎片的问题。然后我阅读了有关堆表及其碎片的文章。我们不断地以各种方式检查 SQL 服务器的状态,我想知道添加对表碎片的检查是否有用。

我正在考虑开发类似的东西:“他们是集群索引吗?” 是 -> 什么都不做,否 -> 所以检查:

percentage of fragmentation > x%

numbers of forward pointing > x

numbers of rows > x

如果 x > 某些值则发出警报。

您如何看待设置这种支票,有用与否?

堆表的碎片整理是否会减少磁盘上数据库文件的物理大小?

编辑 :

我最终使用这段代码来检测需要重建的堆表:

SELECT Database_id, Object_name([object_id]) as TableName, Index_type_desc, 
Avg_fragmentation_in_percent, rowmodctr, forwarded_record_count
From sys.dm_db_index_physical_stats(db_id(),object_id(''),null,null,'detailed') AS SDDIPS
Inner join sys.sysindexes AS SI on SDDIPS.[object_id] = SI.id 
AND SDDIPS.index_id = SI.indid
--Inner join sysobjects AS SO on  SI.id = SO.id
Where index_level = 0 AND index_type_desc = 'HEAP' AND Avg_fragmentation_in_percent > 40 
AND rowmodctr > 100 AND forwarded_record_count > 1000

但是它运行了很长一段时间并且性能像PLE崩溃

sql-server clustered-index
  • 2 个回答
  • 708 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