小编mus*_*cio的帖子

运行 DBCC CheckDB 时接收错误 - 多个 IAM 页面

运行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

sql-server corruption

8
推荐指数
1
解决办法
1635
查看次数

如何获得序列的下一个值?

有人可以告诉下面明显的查询有什么问题:

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)

db2 sequence

8
推荐指数
2
解决办法
5万
查看次数

通过自动递增 PK 排序是否确保按时间顺序排列?

从创建的角度来看,假设在 Postgres 中通过自动递增的 PK 排序将按时间顺序对记录进行排序是否安全?我有一个多对多的关系,除了关系本身和某种形式的创建顺序之外,我不需要跟踪其他任何东西。我正在尝试决定是否需要为此合并时间戳列,或者是否可以出于相同目的重新利用现有的自动递增 PK 列。

postgresql primary-key sequence

8
推荐指数
1
解决办法
911
查看次数

删除记录前需要检查表是否存在

我的 Ruby 应用程序中有以下 SQL 查询:

sql = "DELETE FROM `#{database}`.`table1` WHERE `same_id` = #{some_id};"
Run Code Online (Sandbox Code Playgroud)

问题是在极少数情况下table1可能不存在。我需要构造这个查询,所以即使表不存在 SQL 也不会抛出错误。

我该如何实施?

mysql query error-handling

7
推荐指数
2
解决办法
3万
查看次数

GROUP BY 使用 MIN() 聚合函数给出错误结果

我有一张看起来像这样的表:

+------+--------+--------------+------+--------+------ -+------+------------+
| 身份证 | 代码 | 类别 | MQ | 重量 | 编织| 显示| 分钟(价格)|
+------+--------+--------------+------+--------+------ -+------+------------+
| 1 | DT450R | 碳| 1 | 450 | 平原 | 1 | 90 |
| 2 | DT450R | 碳| 2 | 450 | 平原 | 1 | 40 |
| 3 | DT450R | 碳| 5 | 450 | 平原 | 1 | 75 |
| 7 | PP120Q | 碳| 3 | 120 | 斜纹| 1 | …

mysql aggregate group-by

7
推荐指数
2
解决办法
1万
查看次数

我可以批量插入空的页面压缩表并获得完全压缩吗?

我有很多大表(大约 1000 万行宽)需要定期加载到 SQL Server 2016 中以进行只读报告。我希望这些表在磁盘上尽可能小,这比加载或查询的性能改进更重要。

这是我对不需要进一步索引的表所做的工作:

  1. 使用DATA_COMPRESSION=PAGE.
  2. 使用 bcp 将平面文件中的数据批量插入到新表中。

表中的列类型是 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) 有没有办法在加载表时直接获得这个超小的压缩大小,而无需在加载数据后重建?

sql-server bcp compression sql-server-2016

7
推荐指数
2
解决办法
1278
查看次数

如何对 DML 语句的 RETURNING 子句返回的行进行排序?

我正在使用此语句以升序获取按时间戳排序的所有行

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句中的行进行排序?

postgresql timestamp

7
推荐指数
1
解决办法
124
查看次数

恢复脱机备份后无法连接到 DB2 数据库

这是针对 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)

我在以前的数据库中没有任何正在进行的事务,因为所有连接都被强制关闭并且数据库已关闭以进行脱机备份。我该怎么办?

db2 restore db2-luw

6
推荐指数
1
解决办法
3万
查看次数

大型数据库的备份调整

我正在使用压缩、写入多个文件以及更改BufferCountMaxTransferSize选项来调整 SQL Server 备份。我有一个 SQL Server 实例,其中包含 4 TB 数据库和几个从几 MB 到 150 GB 的较小数据库。

我的问题是,我是否可以开始使用 150 GB 数据库进行调整,然后将这些设置应用到 4 TB 备份,只需进行最小的更改,或者 4 TB 是否需要从头开始拥有自己的“调整会话”?由于通常需要多次备份尝试才能拨入设置,因此我尝试在可能的情况下快速开始调整 4 TB 数据库。

sql-server backup tuning

6
推荐指数
1
解决办法
2025
查看次数

在 Postgres 中将 Unix 时间戳转换为 SQL 时间戳

Date.now()我已经将和其他普通 Unix 时间戳值的结果传递1534360109480到 SQL 中,并通过以下方式运行它们:

"@converted_date" = to_timestamp("@date") AT TIME ZONE 'UTC';

而且它始终如一地返回50591-11-28 22:32:38

我不明白年份怎么可能是 50591,并且无论如何,日期/时间都不准确。

我究竟做错了什么?

postgresql timestamp datetime date

6
推荐指数
1
解决办法
9164
查看次数