运行DBCC CHECKDB (dbname) WITH NO_INFOMSGS, ALL_ERRORMSGS结果出现此错误:
表错误:对象 ID 813245952、索引 ID 1、分区 ID 72057594073972736、分配单元 ID 72057594083213312(类型行内数据)的多个 IAM 页包含相同间隔的分配。IAM 页面 (1:4611577) 和 (1:2040821)。CHECKDB 在表“tablename”(对象 ID 813245952)中发现 1 个分配错误和 0 个一致性错误。CHECKDB 在数据库“dbname”中发现 1 个分配错误和 0 个一致性错误。Repair_allow_data_loss 是 DBCC CHECKDB (dbname) 发现的错误的最低修复级别。
有没有人以前遇到过这个问题并有修复的解决方案?
注意:- 我还没有运行该语句repair_allow_data_loss。
有人可以告诉下面明显的查询有什么问题:
db2 => select next value for schema_name.sequence_name;
Run Code Online (Sandbox Code Playgroud)
结果我得到:
SQL0104N An unexpected token "END-OF-STATEMENT" was found following
"schema_name.sequence_name". Expected tokens may include: "<table_expr>".
SQLSTATE=42601
Run Code Online (Sandbox Code Playgroud) 从创建的角度来看,假设在 Postgres 中通过自动递增的 PK 排序将按时间顺序对记录进行排序是否安全?我有一个多对多的关系,除了关系本身和某种形式的创建顺序之外,我不需要跟踪其他任何东西。我正在尝试决定是否需要为此合并时间戳列,或者是否可以出于相同目的重新利用现有的自动递增 PK 列。
我的 Ruby 应用程序中有以下 SQL 查询:
sql = "DELETE FROM `#{database}`.`table1` WHERE `same_id` = #{some_id};"
Run Code Online (Sandbox Code Playgroud)
问题是在极少数情况下table1可能不存在。我需要构造这个查询,所以即使表不存在 SQL 也不会抛出错误。
我该如何实施?
我有一张看起来像这样的表:
+------+--------+--------------+------+--------+------ -+------+------------+ | 身份证 | 代码 | 类别 | MQ | 重量 | 编织| 显示| 分钟(价格)| +------+--------+--------------+------+--------+------ -+------+------------+ | 1 | DT450R | 碳| 1 | 450 | 平原 | 1 | 90 | | 2 | DT450R | 碳| 2 | 450 | 平原 | 1 | 40 | | 3 | DT450R | 碳| 5 | 450 | 平原 | 1 | 75 | | 7 | PP120Q | 碳| 3 | 120 | 斜纹| 1 | …
我有很多大表(大约 1000 万行宽)需要定期加载到 SQL Server 2016 中以进行只读报告。我希望这些表在磁盘上尽可能小,这比加载或查询的性能改进更重要。
这是我对不需要进一步索引的表所做的工作:
DATA_COMPRESSION=PAGE. 表中的列类型是 varchar(不超过 512,不是最大值)、float、tinyint 或日期(不是日期时间)。所有列都创建为可为空的,并且没有定义主键或外键——它们与查询无关,表永远不会直接更新。一切的默认排序规则是SQL_Latin1_General_CP1_CI_AS.
当我这样做时,我可以看到sys.allocation_units该页面数据压缩已应用于堆,并且我可以看到sys.partitions填充因子正确为 0 (100%)。由于表比未压缩的表小得多,我认为压缩已完成。
但是,如果我然后使用相同的选项重建DATA_COMPRESSION=PAGE,则假定已经压缩的表会缩小大约 30%!看起来它从每个数据页大约 17 行到每页 25 行。(虽然只有一次。在那之后再次重建不会使它比第一次重建更小。)
问题
所以我的问题是:(a)这里发生了什么?(b) 有没有办法在加载表时直接获得这个超小的压缩大小,而无需在加载数据后重建?
我正在使用此语句以升序获取按时间戳排序的所有行
DELETE FROM @tableName
WHERE id = ANY (
SELECT id
FROM @tableName
WHERE source = :p1 AND target = :p2 @readCondition
ORDER BY createddate
LIMIT @limit
FOR UPDATE SKIP LOCKED
)
RETURNING *;
Run Code Online (Sandbox Code Playgroud)
我得到了这些结果:
"MessageType":"AssignmentChange.v1","CreatedDate":"2019-12-05T10:55:22.230886"
"MessageType":"AssignmentChange.v1","CreatedDate":"2019-12-05T10:55:22.279604"
"MessageType":"AssignmentChange.v1","CreatedDate":"2019-12-05T10:55:22.276191"
"MessageType":"AssignmentChange.v1","CreatedDate":"2019-12-05T10:55:22.202338"
Run Code Online (Sandbox Code Playgroud)
如您所见,它们没有按 排序createdate。有没有办法对子RETURNING句中的行进行排序?
这是针对 AIX 上的 DB2 9.7 Enterprise Server Edition。
我在性能环境中对我们实例中的几个数据库进行了完整的离线备份。
我想将这些数据库恢复到我们的集成环境中。
我运行了命令
db2 restore database database_name from
/bkp/instance_name/OfflineBackups/RestorePoint/my_restore_point
taken at 20120321103846 into database_name without prompting;
Run Code Online (Sandbox Code Playgroud)
对于我的每个数据库(当然,适当地修改数据库名称和时间戳)。
每个数据库都根据 DB2 成功恢复。但是,现在当我想检查数据库是否确实恢复了我的想法时,我尝试连接到数据库,但出现错误
SQL1117N A connection to or activation of database "database_name" cannot be made
because of ROLL-FORWARD PENDING. SQLSTATE=57019
Run Code Online (Sandbox Code Playgroud)
我在以前的数据库中没有任何正在进行的事务,因为所有连接都被强制关闭并且数据库已关闭以进行脱机备份。我该怎么办?
我正在使用压缩、写入多个文件以及更改BufferCount和MaxTransferSize选项来调整 SQL Server 备份。我有一个 SQL Server 实例,其中包含 4 TB 数据库和几个从几 MB 到 150 GB 的较小数据库。
我的问题是,我是否可以开始使用 150 GB 数据库进行调整,然后将这些设置应用到 4 TB 备份,只需进行最小的更改,或者 4 TB 是否需要从头开始拥有自己的“调整会话”?由于通常需要多次备份尝试才能拨入设置,因此我尝试在可能的情况下快速开始调整 4 TB 数据库。
Date.now()我已经将和其他普通 Unix 时间戳值的结果传递1534360109480到 SQL 中,并通过以下方式运行它们:
"@converted_date" = to_timestamp("@date") AT TIME ZONE 'UTC';
而且它始终如一地返回50591-11-28 22:32:38。
我不明白年份怎么可能是 50591,并且无论如何,日期/时间都不准确。
我究竟做错了什么?
postgresql ×3
sql-server ×3
db2 ×2
mysql ×2
sequence ×2
timestamp ×2
aggregate ×1
backup ×1
bcp ×1
compression ×1
corruption ×1
date ×1
datetime ×1
db2-luw ×1
group-by ×1
primary-key ×1
query ×1
restore ×1
tuning ×1