问题列表 - 第23页

重建事务日志

我们有一个非常大的数据库(~6TB),其事务日志文件被删除(SQL Server 关闭时。我们尝试过:

  1. 分离和重新附加数据库;和
  2. 取消删除事务日志文件

...但到目前为止没有任何效果。

我们目前正在运行:

ALTER DATABASE <dbname> REBUILD 
LOG ON (NAME=<dbname>,FILENAME='<logfilepath>')
Run Code Online (Sandbox Code Playgroud)

...但考虑到数据库的大小,这可能需要几天时间才能完成。

问题

值得注意的是,数据来自其他来源,因此可以重建数据库,但是我们怀疑修复数据库比再次重新插入所有数据要快得多。


更新

对于那些记分者:ALTER DATABASE/REBUILD LOG命令在大约 36 小时后完成并报告:

警告:数据库“dbname”的日志已重建。事务一致性已丢失。RESTORE 链被破坏,服务器不再拥有先前日志文件的上下文,因此您需要知道它们是什么。
您应该运行 DBCC CHECKDB 来验证物理一致性。数据库已置于 dbo-only 模式。当您准备好使数据库可供使用时,您将需要重置数据库选项并删除任何额外的日志文件。

然后我们运行了一个DBCC CHECKDB(大约需要 13 小时),它成功了。假设我们都了解了数据库备份的重要性(以及授予项目经理访问服务器的权限......)。

sql-server-2005 sql-server recovery dbcc-checkdb

21
推荐指数
2
解决办法
6万
查看次数

为什么某些 DBMS 不允许回滚某些 DDL 语句?

最近我发现 MySQL不支持回滚 DDL,例如“alter table”... 习惯了 PostgreSQL,这让我感到奇怪,但我的一个朋友告诉我,即使是 Oracle 也不允许它..不支持它是否有技术原因?对他们来说,这只是一个“无趣”的功能吗?

编辑:刚刚发现这个比较。它看起来像有很多的DBMS是做支持事务DDL。

feature-comparison database-agnostic ddl rollback

21
推荐指数
4
解决办法
3866
查看次数

EXP-00085 做完整备份时的警告

在完全导出我的 Oracle 10.2.0.2 数据库期间,我遇到以下警告

[...]
. exporting post-schema procedural objects and actions
EXP-00008: ORACLE error 6502 encountered
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "SYS.DBMS_SCHED_MAIN_EXPORT", line 351
ORA-06512: at "SYS.DBMS_SCHED_JOB_EXPORT", line 14
ORA-06512: at line 1
EXP-00085: The previous problem occurred when calling     SYS.DBMS_SCHED_JOB_EXPORT.create_exp for object 102269
EXP-00008: ORACLE error 6502 encountered
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "SYS.DBMS_SCHED_MAIN_EXPORT", line 351
ORA-06512: at "SYS.DBMS_SCHED_JOB_EXPORT", line 14
ORA-06512: …
Run Code Online (Sandbox Code Playgroud)

oracle export

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

优化此 SQL 查询以提高性能

我正在尝试优化以下语句:

'VI'+CAST(month(GETDATE()) AS NVARCHAR)+'/'+CAST(year(GETDATE()) AS NVARCHAR)
+'/00000' +CAST(@number+1 AS VARCHAR)
Run Code Online (Sandbox Code Playgroud)

该语句产生的值等VI1/2011/000002,如果该@number参数1。

我想在删除多余的强制转换语句和提供连接字符串和整数的有效方法方面对此进行优化。

sql-server stored-procedures

4
推荐指数
2
解决办法
1286
查看次数

什么是聚集索引?

我需要对聚集索引做一个简短的解释。

  • 什么是聚集索引?
  • 使用聚集索引的最佳做法是什么?

sql-server clustered-index interview-question

15
推荐指数
1
解决办法
7764
查看次数

MySQL:加入未使用的表时的索引(性能优化问题)

我需要优化以下查询:

SELECT /* [things omitted] */ articles.blogpost_id, articles.id AS articleid
FROM blogposts
JOIN articles ON articles.blogpost_id = blogposts.id
WHERE blogposts.deleted = 0
AND blogposts.title LIKE '%{de}%'
AND blogposts.visible = 1
AND blogposts.date_published <= NOW()
ORDER BY blogposts.date_created DESC
LIMIT 0 , 50
Run Code Online (Sandbox Code Playgroud)

EXPLAIN SELECT 给我以下结果:

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE articles ALL blogpost_id NULL NULL NULL 6915 Using temporary; Using filesort
1 SIMPLE blogposts eq_ref PRIMARY PRIMARY 4 articles.blogpost_id 1 Using where
Run Code Online (Sandbox Code Playgroud)

为什么它先是文章,然后是博客文章?是因为博客文章有更多条目吗?以及如何改进查询以便文章帖子可以使用索引? …

mysql performance index query optimization

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

SQL Server 2005:如何使用数据透视代替一堆 case 语句?

请告诉我如何修改此 SQL 选择以使用数据透视而不是所有 case 语句。

SELECT t.ProjectId,    
   COALESCE(MAX(ExecutiveChampion), 'n/a'),    
   COALESCE(MAX(BusinessOwner), 'n/a'),    
   COALESCE(MAX(BusinessAnalyst), 'n/a'),    
   COALESCE(MAX(GeneralContractor), 'n/a'),    
   COALESCE(MAX(PrimaryPM),  'n/a'),    
   COALESCE(MAX(DevelopmentManager), 'n/a'),    
   COALESCE(MAX(DevelopmentLead), 'n/a'),    
   COALESCE(MAX(TDM), 'n/a'),    
   COALESCE(MAX(PTM), 'n/a')    
FROM (    
    SELECT pl.ProjectId,     
           CASE WHEN StakeholderCID = 95  THEN FullName ELSE NULL END as 'ExecutiveChampion',    
           CASE WHEN StakeholderCID = 96  THEN FullName ELSE NULL END as 'BusinessOwner',    
           CASE WHEN StakeholderCID = 97  THEN FullName ELSE NULL END as 'BusinessAnalyst',    
           CASE WHEN StakeholderCID = 100 THEN FullName ELSE NULL END as 'GeneralContractor',    
           CASE WHEN StakeholderCID …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 syntax pivot

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

检测索引合并

有没有办法知道COALESCE一个索引是否已经完成?这样一个似乎没有更新CREATED,LAST_DDL_TIME或LAST_ANALYZED属性。

注意:我指的COALESCE不是返回表达式列表中第一个非空 expr 的 ,而是用于在块中使空闲空间像这样连续的那个:

ALTER INDEX [Index Name] COALESCE;
Run Code Online (Sandbox Code Playgroud)

index oracle oracle-11g-r2

4
推荐指数
1
解决办法
1869
查看次数

更改了 max_allowed_pa​​cket 并仍然收到“数据包太大”错误

我使用 mysqldump 创建一个用于备份的平面文件。我已使用此文件在备用服务器上重新创建数据库。我在命令行上通过 ssh 运行导入过程,但收到多个Packet too Large错误。

我用更大的 max_allowed_pa​​cket(即 1000M)重新启动了 mysql,但仍然收到错误消息。我什至尝试在导入文件中设置 max_allowed_pa​​cket,仍然收到错误。

有没有办法确保设置 max_allowed_pa​​cket 和/或使用 mysqldump 来创建不会导致此问题的文件?

以供参考:

未压缩的 mysqldump 文件约为 2GB

数据库类型是 INNODB

mysql mysql-5 mysqldump backup

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

跟踪更新者、更新时间的最佳方法是什么

在 MS SQL Server 中,更新表上一组字段的更新者、更新时间的最佳方法是什么?我已经在代码中看到它触发了它。等等。我看到触发的好处是这一切都发生在同一个地方。不利的一面是,有时管理员必须批量修复表并且不想删除上次用户更新的用户名/时间。

注意:我不想要时间戳。我想要 Windows 用户 ID 和上次更改的人类可读日期/时间。

寻找您推荐的产品以及为什么它是一个不错的选择。

sql-server

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