当我使用时nodetool compactionstats
,我可以看到Active compaction 剩余时间。但是该值不正确,它比实际时间慢得多。
例如,它的 1 秒可能等于实时时间的 1 分钟。
如果它不正确,这个计时器的目的是什么?我错过了什么吗?
当我使用时nodetool compactionstats
,我可以看到Active compaction 剩余时间。但是该值不正确,它比实际时间慢得多。
例如,它的 1 秒可能等于实时时间的 1 分钟。
如果它不正确,这个计时器的目的是什么?我错过了什么吗?
SELECT 查询需要 SCH-S 锁。这可以与其他读取查询共享。
UPDATE 查询需要 SCH-M 锁。这不能与其他读取/更新查询共享。
该示例显示索引重组 (Sch-S) 锁阻塞了统计信息更新的 Sch-M 锁。但为什么它也阻止了 SELECT 查询请求的后续 Sch-S 锁?Sch-S 锁不是共享的吗?
C盘是OS盘
D盘是数据盘(系统和用户dbs)
E盘是日志盘(系统和用户dbs)
D盘坏了。所以 sql 没有启动,因为缺少主 mdf 文件。
我可以通过指向主 mdf 文件的备份来启动 sql server,然后恢复 msdb/model/user dbs。但是我所有的备份文件都是 .bak 格式。
我有系统/用户数据库 (.bak) 的完整备份和日志备份。如何提取主 mdf 文件以启动我的 sql server?
也许在新的测试服务器上恢复 master,然后将该 master mdf 文件复制到原始的 sql server。还是重建系统数据库,然后恢复 master/msdb/model/user 数据库是否合适?
我有以下形式的数据:
10334,99.4,4241
14354,99.5,6018
16807,93.9,2279
22042,97.5,70341
22117,96.4,70335
22138,95.7,70332
23869,94.4,135649
23937,97.5,135642
23982,96.6,135638
24055,95.7,135628
24119,98.7,135624
25803,96.5,135597
25852,98.8,135592
我可以用其他方式塑造它,例如让它用空格而不是逗号分隔——这个输出是由一些 Linux shell 管道产生的,其中最后一个是awk
.
我希望 sqlplus 将每一行解释为单独的记录以放入临时表,然后我将在脚本中的一个非常简单的连接中使用它。
我希望 sqlplus 能够解析放入其标准输入的任何内容,这可能吗?或者以其他方式访问此类数据。通常不会超过 30 条记录。该脚本必须创建一个表并用此类输入填充它。怎么做?
我有这些 JSON:
Application 1:
{
"business_industry": "Agriculture",
"docs": [
{
"internal": false,
"type": "Asset & Liability Statement"
},
{
"internal": false,
"name": "Privacy Consent",
"type": "Privacy Consent"
}
],
"quote": {
"principal": 0,
"short_id": "3856545"
}
}
Application 2:
{
"business_industry": "Construction",
"docs": [
{
"internal": false,
"name": "Privacy Consent",
"type": "Privacy Consent"
}
],
"asset": {
"model": null,
"make": "3856545"
}
}
Application 3:
{
"business_industry": "Coal Mining",
"business_business_names": [
{
"business_organisation_name": "Centron Consulting Services",
"business_effective_from": "2018-04-11"
}
],
"lite_doc": {
"total_sales": 0,
"total_sales2": 0,
"refunds_present": false,
"payment_arrangement_evident": false
}
}
我想查询所有应用程序并自动获取以对象作为值的键。因为我将使用这些键作为在另一个数据库中创建新模型的参考。
就像是:
+----------+-----------+-------+----------------------------+-----------------------------+
| docs | quotes | asset | business_business_names | lite_doc |
+----------+-----------+-------+----------------------------+-----------------------------+
| internal | principal | model | business_organisation_name | total_sales |
| type | short_id | make | business_effective_from | total_sales2 |
| name | | | | refunds_present |
| | | | | payment_arrangement_evident |
+----------+-----------+-------+----------------------------+-----------------------------+
然后,我将创建五个模型:docs
、quotes
、asset
、business_business_names
,lite_doc
它们具有上面列出的属性。对象可以是另一个dictionary
或一个array
.
这段代码目前是我所拥有的:
WITH docs AS (
SELECT docs = STRING_AGG(j.[key], '
')
FROM (
SELECT DISTINCT j.[key]
FROM Application a1
CROSS APPLY OPENJSON(a1.DataReceived, '$.docs') j0
CROSS APPLY OPENJSON(j0.value) j
) j
),
quotes AS (
SELECT quotes = STRING_AGG(j.[key], '
')
FROM (
SELECT DISTINCT j.[key]
FROM Application a1
CROSS APPLY OPENJSON(a1.DataReceived, '$.quote') j
) j
),
asset AS (
SELECT asset = STRING_AGG(j.[key], '
')
FROM (
SELECT DISTINCT j.[key]
FROM Application a1
CROSS APPLY OPENJSON(a1.DataReceived, '$.asset') j
) j
),
business_business_names AS (
SELECT business_business_names = STRING_AGG(j.[key], '
')
FROM (
SELECT DISTINCT j.[key]
FROM Application a1
CROSS APPLY OPENJSON(a1.DataReceived, '$.business_business_names') j0
CROSS APPLY OPENJSON(j0.value) j
) j
),
lite_doc AS (
SELECT lite_doc = STRING_AGG(j.[key], '
')
FROM (
SELECT DISTINCT j.[key]
FROM Application a1
CROSS APPLY OPENJSON(a1.DataReceived, '$.lite_doc') j
) j
)
SELECT *
FROM docs
CROSS JOIN quotes
CROSS JOIN asset
CROSS JOIN business_business_names
CROSS JOIN lite_doc;
但是如果我添加一个key-value
值为object
or的新对array
,我还必须添加另一个查询。
我如何自动执行并捕获不是对象的DataReceived
值?
我们的 PT 环境就像我们的 Prod 环境一样是 SQL AlwaysOn。App 团队现在希望每周发布一个 PROD BAK,也许在发布之前发布一些 Daily;然后恢复到 PT AO AG。
不想使用链接服务器,还有什么其他方法可以删除辅助数据库
我正在使用 ODBC 驱动程序将数据从 Postgres 传输到 SQL Server https://learn.microsoft.com/en-us/sql/integration-services/import-export-data/connect-to-a-postgresql-data-source -sql-server-import-and-export-wizard?view=sql-server-ver16
问题是有些桌子在扔,
错误 0xc0047062:数据流任务 1:System.Data.Odbc.OdbcException (0x80131937):错误 [57014] 错误:由于语句超时而取消语句;在 System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle,RetCode retcode)处执行查询时出错在 System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior 行为,字符串方法,布尔 needReader) 在 System.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior 行为)
在 System.Data.Odbc.OdbcCommand.ExecuteDbDataReader(CommandBehavior 行为) 在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior 行为) .SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute(IDTSManagedComponentWrapper100 包装器)(SQL Server 导入和导出向导)
30 秒后出现此错误。我在 postgres 中增加了 statement_timeout 并Command Timeout
在连接字符串中设置但没有帮助。使用 SQL Server 导入功能时是否有增加 OdbcCommand.CommandTimeout 的方法?
我看到有人发帖说他们没有看到 sys.dm_os_performance_counters 返回任何结果。对我来说有点不同。见下文。
实例一:
+-------------------------------------+-----------------------+---------------+------------+
| object_name | counter_name | instance_name | cntr_value |
+-------------------------------------+-----------------------+---------------+------------+
| MSSQL$TRAINING:Workload Group Stats | CPU usage % | internal | 0 |
| MSSQL$TRAINING:Workload Group Stats | CPU usage % base | internal | 0 |
| MSSQL$TRAINING:Resource Pool Stats | CPU usage % | internal | 0 |
| MSSQL$TRAINING:Resource Pool Stats | CPU usage % base | internal | 0 |
| MSSQL$TRAINING:Resource Pool Stats | CPU usage target % | internal | 0 |
| MSSQL$TRAINING:Query Store | Query Store CPU usage | _Total | 0 |
+-------------------------------------+-----------------------+---------------+------------+
@@版本:Microsoft SQL Server 2019 (RTM-CU20) (KB5024276) - 15.0.4312.2 (X64) Apr 1 2023 12:10:46 Copyright (C) 2019 Microsoft Corporation Standard Edition (64-bit) on Windows Server 2019 Standard 10.0(内部版本 17763:)(管理程序)
实例 2:
+--------------------------------+-----------------------+---------------+------------+
| object_name | counter_name | instance_name | cntr_value |
+--------------------------------+-----------------------+---------------+------------+
| SQLServer:Workload Group Stats | CPU usage % | default | 1177 |
| SQLServer:Workload Group Stats | CPU usage % base | default | 4044 |
| SQLServer:Workload Group Stats | CPU usage % | internal | 50 |
| SQLServer:Workload Group Stats | CPU usage % base | internal | 4044 |
| SQLServer:Resource Pool Stats | CPU usage % | default | 1177 |
| SQLServer:Resource Pool Stats | CPU usage % base | default | 4044 |
| SQLServer:Resource Pool Stats | CPU usage target % | default | 0 |
| SQLServer:Resource Pool Stats | CPU usage % | internal | 50 |
| SQLServer:Resource Pool Stats | CPU usage % base | internal | 4044 |
| SQLServer:Resource Pool Stats | CPU usage target % | internal | 0 |
| SQLServer:Query Store | Query Store CPU usage | _Total | 0 |
+--------------------------------+-----------------------+---------------+------------+
@@版本:Microsoft SQL Server 2016 (SP3-GDR) (KB5021129) - 13.0.6430.49 (X64) Jan 22 2023 17:38:22 版权所有 (c) Windows Server 2016 Standard 10.0 上的 Microsoft Corporation Developer Edition(64 位) (构建 14393:)(管理程序)
我如何更改它以便实例 1 返回填充的值,如实例 2?
询问:
SELECT RTRIM(LTRIM(object_name)) AS [object_name], RTRIM(LTRIM(counter_name)) AS counter_name, RTRIM(LTRIM(instance_name)) AS instance_name, cntr_value
FROM sys.dm_os_performance_counters
WHERE counter_name like '%CPU usage%'
我有这些JSON
:
Application 1:
{
"business_industry": "Agriculture",
"docs": [
{
"internal": false,
"type": "Asset & Liability Statement"
},
{
"internal": false,
"name": "Privacy Consent",
"type": "Privacy Consent"
}
],
"quote": {
"principal": 0,
"short_id": "3856545"
}
}
Application 2:
{
"business_industry": "Construction",
"docs": [
{
"internal": false,
"name": "Privacy Consent",
"type": "Privacy Consent"
}
],
"asset": {
"model": null,
"make": "3856545"
}
}
Application 3:
{
"business_industry": "Coal Mining",
"business_business_names": [
{
"business_organisation_name": "Centron Consulting Services",
"business_effective_from": "2018-04-11"
}
],
"lite_doc": {
"total_sales": 0,
"total_sales2": 0,
"refunds_present": false,
"payment_arrangement_evident": false
}
}
这是从DataReceived
我的模型中派生出来的Application
。
我想查询所有应用程序并获取带有对象的键作为值。因为我将使用这些键作为在另一个数据库中创建新模型的参考。
就像是:
+----------+-----------+-------+----------------------------+-----------------------------+
| docs | quotes | asset | business_business_names | lite_doc |
+----------+-----------+-------+----------------------------+-----------------------------+
| internal | principal | model | business_organisation_name | total_sales |
| type | short_id | make | business_effective_from | total_sales2 |
| name | | | | refunds_present |
| | | | | payment_arrangement_evident |
+----------+-----------+-------+----------------------------+-----------------------------+
然后,我将创建五个模型:docs
、quotes
、asset
、business_business_names
,lite_doc
它们具有上面列出的属性。对象可以是另一个dictionary
或一个array
.
这段代码目前是我所拥有的:
BEGIN TRANSACTION;
BEGIN TRY
SELECT
asset.[key] AS asset
FROM dbo.Application
-- SELECT ALL KEYS THAT HAVE OBJECTS AS VALUES AND DISPLAY THOSE OBJECTS' KEYS
CROSS APPLY OPENJSON(DataReceived, '$.asset') AS asset;
END TRY
BEGIN CATCH
-- Do nothing
END CATCH
ROLLBACK TRANSACTION;
但它只能查询asset
而不能查询DISTINCT
。
由于某种原因DISTINCT
在查询中不起作用。
我很难理解 replicaSet 如何使用 2 个节点和一个仲裁器工作,在 3 个服务器和 ubuntu 22.04 中使用 MongoDB 6 社区。
我的实际情况是我在一个 replicaSet 中有 2 个服务器,其中第一个是主服务器(优先级 1)和一个优先级为 0.5 的辅助服务器(我是这样设置的,所以我总是可以将主服务器作为主服务器)。第三台服务器不存储任何作为仲裁器工作的数据。
我测试关闭我的主要,所以我的次要被选为主要没有问题。但是如果我试图在上面写任何数据,他不会保存直到我的主要回来。
我的想法是让我的辅助服务器作为备用服务器,以防我的主服务器因任何原因出现故障,这样我的应用程序就可以继续保存和读取。
我知道我可以使用 3 个服务器节点,所以我会有 2 个可写服务器来投票,考虑到这个数据库将有大约 1TB 的数据,我现在不能让第三个服务器保存相同数量的数据。
我尝试了一些关于写关注的命令,但我有两种不同的行为:
1 - 使用此命令,使用 mongodb Compass,似乎写入了新数据,但在主数据库返回之前不会列出:
db.adminCommand({ "setDefaultRWConcern": 1, "defaultWriteConcern": { "w": 1 } })
2 - 使用 mongodb Compass,显示“Iinserting Document”,但永远不会完成,直到 primary 返回:
db.adminCommand({ "setDefaultRWConcern": 1, "defaultWriteConcern": { "w": "majority" } })
更新连接方式:通过 PHP 应用程序,将 ssh 与mongosh
带有连接字符串的 MongoDB Compass 结合使用(在 Wernfried 的帮助下):
mongodb://rootuser:rootpasswd@primaryip:27017,secondaryip:27017/?replicaSet=myRepl&authSource=admin&readPreference=primaryPreferred
如果我关闭我的主服务器,次要服务器将被选为主要服务器,但在两个节点都在线之前我无法写入。
这就是我的 rs.conf() 现在的样子
{
_id: 'rspd01',
version: 13,
term: 51,
members: [
{
_id: 0,
host: 'primaryIP:27017',
arbiterOnly: false,
buildIndexes: true,
hidden: false,
priority: 1,
tags: {},
secondaryDelaySecs: Long("0"),
votes: 1
},
{
_id: 1,
host: 'secondaryIP:27017',
arbiterOnly: false,
buildIndexes: true,
hidden: false,
priority: 0.5,
tags: {},
secondaryDelaySecs: Long("0"),
votes: 1
},
{
_id: 2,
host: 'arbiterIP:27017',
arbiterOnly: true,
buildIndexes: true,
hidden: false,
priority: 0,
tags: {},
secondaryDelaySecs: Long("0"),
votes: 1
}
],
protocolVersion: Long("1"),
writeConcernMajorityJournalDefault: true,
settings: {
chainingAllowed: true,
heartbeatIntervalMillis: 2000,
heartbeatTimeoutSecs: 10,
electionTimeoutMillis: 10000,
catchUpTimeoutMillis: -1,
catchUpTakeoverDelayMillis: 30000,
getLastErrorModes: {},
getLastErrorDefaults: { w: 1, wtimeout: 0 },
replicaSetId: ObjectId("64863fd09a9b54d4cd0da913")
}
}
我可以使用任何命令来处理这个结构吗?
此致。