我想选择过去 15 分钟内的数据,例如:
在 12.02 我想要从 11:45 到 12:00 的行
在 12.09 我仍然想要从 11:45 到 12:00 的行
在 12.18 我想要从 12:00 到 12:15 的行
数据以datetime2格式存储,我使用的是2019标准版。感谢任何帮助让我开始。规范稍后可能会更改(例如,10 分钟而不是 15 分钟),但我希望能够自己解决这个问题。
谢谢
我想选择过去 15 分钟内的数据,例如:
在 12.02 我想要从 11:45 到 12:00 的行
在 12.09 我仍然想要从 11:45 到 12:00 的行
在 12.18 我想要从 12:00 到 12:15 的行
数据以datetime2格式存储,我使用的是2019标准版。感谢任何帮助让我开始。规范稍后可能会更改(例如,10 分钟而不是 15 分钟),但我希望能够自己解决这个问题。
谢谢
我有一个无法杀死的顽固 spid,它阻止了我的 tempdb的事务日志被截断
这就是我发现这个流氓 spid 的方法:
if object_id('tempdb..#OpenTranStatus','U') is not null
drop table #OpenTranStatus
CREATE TABLE #OpenTranStatus (
ActiveTransaction varchar(25),
Details sql_variant
);
-- Execute the command, putting the results in the table.
INSERT INTO #OpenTranStatus
EXEC ('DBCC OPENTRAN (sqlwatch) with tableresults')
SELECT * FROM #OpenTranStatus
这是它正在运行(或保留)的查询:
select d.database_id , sd.sqlwatch_database_id, sd.sql_instance
into #d
from dbo.vw_sqlwatch_sys_databases d
inner join [dbo].[sqlwatch_meta_database] sd
on sd.[database_name] = d.[name] collate database_default
and sd.[database_create_date] = case when d.name = 'tempdb' then '1970-01-01 00:00:00.000' else d.[create_date] end
and sd.sql_instance = @sql_instance
left join [dbo].[sqlwatch_config_exclude_database] ed
on d.[name] like ed.database_name_pattern collate database_default
and ed.snapshot_type_id = @snapshot_type_id
where ed.snapshot_type_id is null
option (keep plan)
它已经运行了60 多个小时:
它已经被杀死了。
所以我尝试做的事情:
alter database sqlwatch set single_user with rollback immediate
但没用
kill 54 with statusonly
SPID 54:正在进行事务回滚。预计回滚完成:0%。预计剩余时间:0 秒。
问题:
我怎样才能停止spid54?
我有具有树结构的表(由hierarchyid
列定义),我想选择特定记录的所有后代。为此,我正在使用hiearchyid.IsDescendantOf()
方法。
我预计,由于我不进行简单的比较,但我正在执行操作(在本例中我调用该IsDescendantOf()
方法),那么我将得到一些带有索引扫描等的可怕执行计划。
然而,SQL Server 将其优化为漂亮的小索引查找。
我很困惑为什么以及如何。
CLR 类型上的调用方法通常会被优化吗?我假设 SQL Server 将 CLR 类型视为不透明的黑匣子,因此无法发挥其魔力。(因为它也无法在本机 SQL 函数上执行此操作。)
或者这仅适用于该特定方法?(由于这些hieararchyid
值是按深度优先排序的,因此我只需通过比较就可以获得类似的结果。)
演示:
CREATE TABLE dbo.HierarchyExample (
Id INT PRIMARY KEY,
Hieararchy HIERARCHYID NOT NULL
);
INSERT INTO dbo.HierarchyExample(Id, Hieararchy)
VALUES
(1, hierarchyid::Parse('/1/')),
(2, hierarchyid::Parse('/1/1/')),
(3, hierarchyid::Parse('/1/2/')),
(4, hierarchyid::Parse('/1/3/')),
(5, hierarchyid::Parse('/1/3/1/')),
(6, hierarchyid::Parse('/1/3/2/')),
(7, hierarchyid::Parse('/1/3/3/')),
(8, hierarchyid::Parse('/1/4/')),
(9, hierarchyid::Parse('/1/4/1/')),
(10, hierarchyid::Parse('/1/4/2/'));
CREATE INDEX IX_HierarchyExample_Hierarchy
ON dbo.HierarchyExample (Hieararchy);
SELECT descendant.*
FROM HierarchyExample ancestor
INNER JOIN HierarchyExample descendant
ON descendant.Hieararchy.IsDescendantOf(ancestor.Hieararchy) = 1
WHERE ancestor.Id = 1
DROP TABLE IF EXISTS dbo.HierarchyExample;
有以下表格片段:
CREATE TABLE `some_table` (
`exp_col_1` TINYINT(1) NOT NULL DEFAULT '0',
`mark_col_1_as_exported` TINYINT(1) DEFAULT '0',
`exp_col_2` TINYINT(1) DEFAULT '0',
`mark_col_2_as_exported` TINYINT(1) DEFAULT '0',
);
有没有一种方法可以编写一个查询:
mark_col_1_as_exported
更新列exp_col_1=1
mark_col_2_as_exported
更新列exp_col_2=1
我知道我可以为它们每个人编写一个更新,但这只是一个片段,我们在这里谈论要更新的 20 列
最近,我的 mariadb 崩溃了,这引发了一场噩梦。当我恢复转储时,有时守护进程会在批量插入期间挂起。这种情况只发生在少数“大”innodb 表上(我有许多小型数据库,它们实际上不包含太多数据,而大多数其他数据库仅在少数表中包含大量数据)。数据库通常最终会恢复(有时在几个小时后),但有时会崩溃。我在几分钟之内就在另一台机器上恢复了数据库,没有出现任何问题,然后将数据目录移动到生产机器上。两者之间唯一的严重区别是成功的机器不是虚拟机和运动 SSD 存储。
从那时起,所描述的问题仍然在随机时间发生,并且总是在访问这些大表时发生。一般来说,我会冻结多个查询,但有时只有一个查询就足以触发该行为。
我发现实际上很难相信的是,iotop 报告了一个 mariadb 线程在查询挂起的整个过程中每秒稳定地写入千兆字节。这在物理上是不可能的,因为磁盘的性能甚至无法接近这些数字。我还搜索了互联网以找到可以优化设置的方法,直到几天前,这些设置似乎非常适合我的环境,我调整了一些变量,但没什么大不了的,“导入成功”机器上的默认值也没有太大不同首先。
这个问题与https://jira.mariadb.org/browse/MDEV-30884类似,但是自从我在 Gentoo 上使用 10.6.14(我也测试了 10.6.15)以来,这个问题应该已经得到解决。
我很茫然,这可能是什么原因造成的?机械硬盘存储能否以某种方式证明正在发生的事情是合理的?
我正在将 SQL Server 数据库移动到与使用它的应用程序不同的服务器(当前应用程序和 SQL 在同一服务器上)。
根据我所理解的一般最佳实践,新实例已配置为默认数据 ( .mdf
) 和日志 ( .ldf
) 文件存储在单独的驱动器上。
我经历了将非主系统数据库文件(临时、模型等)实际移动到这些位置的过程,将主系统留在最后,因为它使用不同的进程。有关我使用的说明,请参阅此链接:https://learn.microsoft.com/en-us/sql/relational-databases/databases/move-system-databases ?view=sql-server-ver16
对于主数据库,说明说移动它后,您应该更新SQLDataRoot
注册表中的值以指向“主数据库文件”的位置,但由于数据和日志文件现在位于不同的文件夹中,所以我没有'不确定要指定哪个位置。从那里,我更广泛地想知道我是否应该将它们分开,或者它们是否应该始终保持在一起,并且只有新数据库才将其数据和日志文件移动到单独的驱动器。
我还没有尝试移动主数据库,因为我对配置注册表值以及任何系统数据库文件是否应该分开或保留在一起有疑问。
我正在恢复一个数据库,这个数据库非常大,它有 6 个备份文件(意味着备份被分成 6 个较小的文件)我可以使用恢复标签看到指示
MediaFamilyId uniqueidentifier 媒体系列的唯一标识号。
MediaSequenceNumber int 该媒体在媒体系列中的序列号。
这是恢复命令:
restore filelistonly
FROM DISK = '\\MY_BACKUP_SERVER\SQLBackups\MY_SERVER\MY_DATABASE\FULL\MY_SERVER_MY_DATABASE_FULL_20231215_180002_6.bak'
restore labelonly
FROM DISK = '\\MY_BACKUP_SERVER\SQLBackups\MY_SERVER\MY_DATABASE\FULL\MY_SERVER_MY_DATABASE_FULL_20231215_180002_6.bak'
restore headeronly
FROM DISK = '\\MY_BACKUP_SERVER\SQLBackups\MY_SERVER\MY_DATABASE\FULL\MY_SERVER_MY_DATABASE_FULL_20231215_180002_6.bak'
我的问题是,如何在 msdb 中找到(在本例中为 6 个)文件?
基本上是一个查询来获取这 6 个文件 - 最后的完整备份 - 恢复这 (6) 个文件。
我有一个由 21 个节点组成的 Cassandra 集群(每个节点有 4 TB Cassandra 数据量),我需要更换节点(从 Ubuntu 18.04 迁移到 22.04)
我想知道是否可以将数据量从现有实例重新附加到新实例而不产生负面后果?我正在考虑以下计划:
这样做有什么风险吗?唯一会改变的是节点的私有IP地址。
我可以在Postgresql中执行这样的事情,即CASCADE DELETE
只执行一条语句吗?
DELETE CASCADE FROM foo WHERE bar = 'baz';
我的目标是不仅删除表中选定的记录foo
,还删除所有表中列用作外键的所有记录,而不添加整个表的约束:。foo.id
foo
ON DELETE CASCADE
有关的:
ALTER
是整个表,并影响所有DELETE
语句。我想做这样的事情,但是基于每个语句。ON DELETE CASCADE
-本问答的答案中讨论了优点和缺点。我在 Windows 服务器上运行 Postgres16。开始研究 pg_basebackup - 当我执行以下命令时,pg_basebackup.exe -h SERVERNAME -U postgres -p 5432 -D Z:\PostgreSQL\16\backups\ -Fp -Xs -P -R --checkpoint=fast --max-rate=1024M
出现以下错误:
pg_basebackup:错误:与“servername”端口 5432 处的服务器连接失败:致命:没有来自主机、用户“postgres”的复制连接的 pg_hba.conf 条目,无加密
我认为这是因为我添加了SSPI 连接。
我在 sspi 之前有以下条目,但仍然出现错误
host all all 0.0.0.0/0 scram-sha-256
host all all 127.0.0.1/32 scram-sha-256
host all all ::0/0 sspi map=sspi
如何修复 pg_hba 以便我可以对某些用户名使用 sspi 将能够允许本地登录的连接(很像 MSSQL 中的混合模式)?
谢谢