数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

1
非企业版和性能的noexpand提示
我必须使用索引视图才能达到性能。从该比较表中可以看出,标准版不支持索引视图。但是BOL说: 可以在任何版本的SQL Server中创建索引视图。在SQL Server Enterprise中,查询优化器会自动考虑索引视图。要在所有其他版本中使用索引视图,必须使用NOEXPAND表提示。 这样行得通吗(我在说性能) select * from dbo.OrderTotals with (noexpand, index=IXCU_OrderTotals) 在SQL Server Standard Edition上正常运行 select * from dbo.OrderTotals 对企业一? 这是查看代码: CREATE VIEW dbo.OrderTotals WITH SCHEMABINDING AS select OrderId = r.OrderId , TotalQty = SUM(r.Quantity) , TotalGrossConsid = SUM(r.Price * r.Quantity) , XCount = COUNT_BIG(*) from dbo.Order r …

4
是否有工具可以在两个不同的模式之间执行数据比较?
我们正在将数据库迁移到新架构,但要验证数据是否已正确移动。 如果架构相同,则传统的数据比较工具可以比较两个数据库之间的差异。在我们的案例中,表设计有所更改,但是旧模式中的所有数据都在新模式中,只是稍微移动了一下,我需要确保它是正确的。我们有数千万行,因此不能选择手动检查。 是否有任何工具可以帮助进行这种比较? 如果没有,那么是否有任何库/框架可以帮助启动定制解决方案的开发? 如果有必要,我很高兴使用特定于数据库的解决方案,在这种情况下,对于SQL Server 2008。 我的解决方案:我通过VIEW在旧数据库上创建每个表的字段与新数据库表相同的字段来比较这两个数据集。 然后,我使用这里描述的技术比较数据:在SQL Server中比较两个表的最短,最快和最简单的方法:UNION! 在这次迁移中,我很幸运,因为整个表的结构类似于旧数据库,其中字段从一个表移动到另一个表,或者被删除或添加。在删除和添加的情况下,没有什么可比较的,对于已移动或聚合的字段,我会在视图中进行计算以提供正确的信息以进行比较。 该UNION比较显示我只能用不同的行,所以只要数据是正确的,我得到一个空的结果集。

3
SQL Server 2008 / R2恢复模型
我们某些服务器上的几乎所有数据库都不需要完全恢复模型(我们不执行事务日志备份),默认应始终是创建数据库并指定简单恢复模型。 出于某些实际原因,经常使用SSMS创建许多数据库。但是,可能会出错,并且操作员会忘记指定简单恢复模型。几天后,由于三个或四个从未被截断的60GB日志文件而导致磁盘空间不足时,这会导致“意外”。 通过在model数据库上配置恢复模型,可以使简单恢复模型成为新数据库的默认设置。但是,是否建议这样做,如果我这样做,将来它会以任何方式咬我吗?

4
Oracle导入问题由不同的字符集引起
我正在尝试将Oracle 11导出导入Oracle 11 XE。 我收到以下消息: 在XE中导入fehlerhaft在WE8MSWIN1252字符集和AL16UTF16 NCHAR字符集中完成的 导入服务器使用AL32UTF8字符集(可能的字符集转换) 有什么想法,我如何将这个转储导入Oracle 11 XE? 编辑: 给定一张桌子 CREATE TABLE BDATA.Artikel( Key VARCHAR2(3) NOT NULL, Name VARCHAR2(60) NOT NULL, Abkuerzung VARCHAR2(5) NOT NULL ); 我收到这样的错误 IMP-00019: row rejected due to ORACLE error 12899 IMP-00003: ORACLE error 12899 encountered ORA-12899: value too large for column "BDATA"."ARTIKEL"."ABKUERZUNG" …
11 oracle  import 

3
如果主服务器离线,如何将主MySQL数据库与从数据库更改重新同步?
MySQL Server 1以Master身份运行。 MySQL Server 2作为从属服务器运行。 两个DB都联机时,它们处于“完美同步”状态。如果从站脱机,则Master仍然在线也没有问题;从站再次联机后,它们将恢复同步。 除了服务器配置之外,如果主服务器脱机,我将重定向从服务器DB的连接(使用JSP代码)(我当然使用/etc/init.d/mysqld stop进行了测试)。 当主服务器重新联机时,是否有任何自动方法将主服务器与从设备更新同步?

5
从SQLite迁移到PostgreSQL的工具
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我需要不断地从SQLite迁移到PostgreSQL。连续地说,我的意思是我每天都会将SQLite数据库重新导入到PostgreSQL中。如果可以根据需要在SQLite中更改表而不必手动对PostgreSQL数据库进行任何更改,那将是很好的。我将从Python运行迁移,但是它可以是任何外部工具,可以从命令行进行控制。该工具需要可用于Linux,如果它也可以在Windows上运行,那就太好了。

2
非DBA询问:如何通过备份/还原将SQL Server实例无痛地复制/移动到另一台服务器?
我们只有一台新服务器,因此我需要从旧数据库框中复制现有SQL Server 2008实例。 我通常通过复制.mdf和日志文件并附加它们来执行此操作,但是由于它们使用24/7,因此无法脱机,因此我已经备份了数据库并将其还原到新数据库上机。但是,我最终遇到了一些问题,其中一个与孤立用户有关。因此,我要寻找的是一种故障转移过程,以最小的麻烦/痛苦/头痛使一切顺利进行。我是一个.Net开发人员,我掌握了大量SQL,但是SQL Server的内部工作方式在很大程度上对我还是个谜,我发现拖累MS文档很麻烦。 请帮忙。

3
魔术列“名称”从何而来?
我是偶然得到的: db=> select name from site; ERROR: column "name" does not exist LINE 1: select name from site; ^ db=> select site.name from site; name --------------- (1,mysitename) (1 row) 第二个查询返回一个包含整行的元组。使用Postgres 9.0.1。 编辑:按要求定义站点。我并不重要,这个怪癖适用于任何桌子。 db=> \d site Table "public.site" Column | Type | Modifiers --------+---------+--------------------------------------------------- id | integer | not null default …

1
如何在SQL Server 2008中查找损坏的页面
我知道我可以执行DBCC CHECKDB并获取数据库状态。 问题 如何查找数据库中是否存在一些损坏的数据页? 如果错误归因于页面损坏,我在哪里可以找到哪些页面损坏了? 如何找到每个损坏页面的页码。 谁能告诉我在哪里可以找到这些页面ID?

5
如何监视死锁
您何时开始对SQL Server 2005/2008死锁进行故障排除以及如何解决?通过SQL Server性能状况警报,对象-> SQLServer:Locks,计数器->锁定等待/秒,实例:_Total,如果计数器:值超过3发出警报来打开SSMS警报。这是否是一种主动的监视方式?可接受的值是多少?我非常感谢您的帮助。谢谢!!!

2
为什么此查询会导致死锁?
为什么此查询会导致死锁? UPDATE TOP(1) system_Queue SET [StatusID] = 2, @ID = InternalID WHERE InternalID IN ( SELECT TOP 1 InternalID FROM system_Queue WHERE IsOutGoing = @IsOutGoing AND StatusID = 1 ORDER BY MessageID ASC, InternalID ASC) 添加了死锁图: <keylock hobtid="72057594236436480" dbid="9" objectname="Z.dbo.system_Queue" indexname="PK_system_Queue" id="lock5b25cc80" mode="X" associatedObjectId="72057594236436480"> <owner-list> <owner id="processc6fe40" mode="X"/> </owner-list> <waiter-list> …


1
SQL Server 2008 R2脏读-如何非原子性?
我想知道在未提交未提交的隔离级别下,“脏”读取会“多么脏” 。我知道已经更新但尚未提交的行是可见的,但是: 行是否可以显示为部分更新-即某些列已更新而另一些未更新? 单个列是否可以显示为部分更新。例如,如果您有一个varchar(4000)列正在完全更新并且假设它实际上包含4000个字符。您能读说以前状态的2k字符和新状态的2k字符吗?长度大于8k的varchar(max)呢? 更新:经过一番辩论,最小的共识是,如果列大小> 8KB,则即使在列本身内也可能进行脏读。

2
大数据移动
我想将数十亿行从schema1.table1移到新的schema2.table2,其中table2是table1的重构行。因此,它们的表结构是不同的。table1和table2都已分区,但table2为空。这两种模式都在同一个oracle数据库中。执行此数据迁移的性能有效方式是什么?您只想在最后执行提交还是选择增量提交?也就是说,假设完成了耗时数小时的99%的工作后,数据迁移失败。现在回滚吗?如果执行增量提交,如何处理失败?
11 oracle 

1
PostgreSQL中的BLOB或引用
我需要将二进制数据文件存储在可在Ubuntu服务器上运行的PostgreSQL数据库中。最初,将有几十个文件,每个文件大小约为250kb。但是,文件数会随着时间增加。有时我可能需要从文件中提取数据以进行其他下游分析。 我已经对将二进制数据存储为BLOB或引用的古老问题进行了一些研究。两者显然都有各自的优缺点。我应该注意与PostgreSQL有关的任何特定问题吗?如果我想通过PostgreSQL函数或通过外部Python程序从文件中提取数据,是一种方法还是另一种方法更可取? 如果我将数据文件直接存储在数据库中,是否最好将它们存储在带有引用“主”表的外键的单独表中,而不是存储在包含所有其他字段的表中? 我在这里阅读了问题和答案; 那里的评论建议在Linux上通过引用(在文件系统中)存储二进制文件更好。我在这里的问题特别与PostgreSQL有关,并且与从文件中提取数据进行各种分析有关。 更新:类似的问题。
11 postgresql 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.