数据库管理员

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

2
如何用两个相关的“许多”表展平一个表的结果?
我已经对数据库中的某些表进行了重组,以使其更加灵活,但是我不确定如何编写SQL从中提取有意义的数据。 我有以下表格(为简洁起见,略有缩写): CREATE TABLE Loans( Id int, SchemaId int, LoanNumber nvarchar(100) ); CREATE TABLE SchemaFields( Id int, SchemaId int, FieldName nvarchar(255) ); CREATE TABLE LoanFields( Id int, LoanId int, SchemaFieldId int, FieldValue nvarchar(4000) ); 带有以下数据: INSERT INTO Loans (Id, SchemaId, LoanNumber) VALUES (1, 1, 'ABC123'); INSERT INTO SchemaFields (Id, SchemaId, …

1
我可以在镜像数据库上收缩事务日志文件吗?
这是先前问题的后续问题,该问题为何我无法缩小主体数据库上的日志文件。 简而言之,我设置了数据库镜像,但是忘记确保备份事务日志的作业再次运行,并且事务日志增长到将近60GB。 由于已建立镜像,因此在镜像服务器上重复进行了此大小增加,最终占用了所有磁盘空间,并使镜像数据库不可用。 每这一问题有关镜像数据库事务日志的维护,你不能备份日志上镜,但是当在特别要求评论有关如何收缩镜像数据库上一个杂草丛生的日志文件,一个注释中留下了 一种方法是将故障转移到镜像数据库并在该数据库上进行收缩。在非生产环境中进行彻底测试,以确保它具有您想要/期望的行为。 这似乎表明可能还有其他方法可以将镜像文件收缩到镜像上,并且这种方法在生产服务器上不一定是安全的。 有没有办法安全地缩小数据库镜像上的事务日志文件?

3
SSIS保持强制更改excel源字符串浮动
Excel中有一列应该是文本,但是SSIS在那里看到数字文本,并自动使其成为双精度浮点[DT_R8]。 我可以在“输出”分支的“外部”和“输出”列中手动更改它,但是“错误输出”只是拒绝让我更改相应的列。 Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)". Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)". 我尝试修改包xml。我尝试了IMEX=1,typeguessrow=0但这些都没有解决我的问题。这有什么解决办法吗?也有文章建议您修改注册表,以便excel在猜测数据类型之前读取更多的行,然后读取默认的8行。我不想走这条路,因为即使它可以工作,那我也必须在打算运行该程序包的计算机上修改注册表。 例如,要导入到SQL …

1
如何在PostgreSQL中从本地文件复制到远程数据库?[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 6年前关闭。 我是psql的新手,需要一些帮助。如何将本地CSV加载到远程数据库? 我正在使用以下命令 \COPY test(user_id, product_id, value) FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER; 但这会在远程数据库上搜索文件,而我需要在本地PC上进行搜索。


2
如何跟踪使SQL Server崩溃的SQL查询
我们有一台SQL Server 2008数据库服务器(它恰好在MS故障转移群集下运行,但是我认为这与这里无关)。 我们的应用程序运行用于数据库访问的Hibernate,并且由于我们最近从v3.1升级到3.6,所以我们一直在定期遇到SQL Server崩溃(每24-48小时,但有时更频繁)。 有问题的具体问题似乎与内存有关。在服务器崩溃之前(然后由故障转移群集管理器自动重新启动),我们得到了以下错误的负载: Error: 701, Severity: 17, State: 130. There is insufficient system memory in resource pool 'internal' to run this query. 偶尔(但定期)的消息 Error: 17300, Severity: 16, State: 1. (Params:). The error is printed in terse mode because there was error during formatting. Tracing, ETW, notifications etc …

2
单个查询的运行时间为10毫秒,使用UNION ALL则需要290毫秒以上的时间(MySQL DB记录为770万)。如何优化?
我有一个表,用于存储教师可用的约会,允许两种插入: 每小时收费:完全自由地每天为每位老师添加无限制的时间段(只要时间段不重叠即可):15年4月15日,老师可能在10:00、11:00、12:00和16:00有时间段。选择特定的老师时间/时间后,将为一个人服务。 时间段/范围:4月15日,另一位老师可以在10:00至12:00,然后从14:00至18:00上班。一个人按到达顺序得到服务,因此,如果教师在10:00到12:00之间工作,则在此期间到达的所有人员都将按到达顺序(本地队列)参加。 由于必须在搜索中返回所有可用的教师,因此我需要将所有空位与到达范围的顺序保存在同一张表中。这样,我可以通过date_from ASC进行排序,在搜索结果上首先显示第一个可用的广告位。 当前表结构 CREATE TABLE `teacher_slots` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `teacher_id` mediumint(8) unsigned NOT NULL, `city_id` smallint(5) unsigned NOT NULL, `subject_id` smallint(5) unsigned NOT NULL, `date_from` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `date_to` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `status` tinyint(4) NOT NULL DEFAULT …
9 mysql 

1
PostgreSQL如何物理排序磁盘上的新记录(在主键上的集群之后)?
需要知道PostgreSQL如何排序磁盘上的记录。在这种情况下,我想利用docs中所述的索引组合,据我所知,它使用位图来获取匹配的行并根据其物理位置返回它们。该表已通过其主键进行了聚类。 据我了解,PostgreSQL在聚类完成后不会自动继续进行聚类(尽管它确实记得它是根据某个索引进行聚类的)。现在,由于这是主键,所以我想知道物理存储顺序是否符合该顺序(如果为true,我想利用它来进行特定查询)。 总之,PostgreSQL如何排序其新记录,尤其是在集群之后? 非常感谢!

3
SQL Server 2012 catalog.execution到sysjobhistory-以任何方式加入它们?
我已经用光了资源,无法找到一种将ssisdb.catalog表加入运行它们的作业的简便方法。尝试编写一些自定义的sproc来监视我的执行时间和从目录表中写入的行,并且能够将它们与调用作业绑定在一起将非常有益。 我试图找出是否有可用于将catalog.executions表连接到msdb.sysjobhistory的表。我需要关联哪个作业称为SSIS包,然后在执行中使用数据进行分析。

3
SQL Server沙箱
我正试图为我们的报表开发人员设置一个沙盒,以供他们使用。我目前的计划是每天晚上“重置”数据库,但我不确定该怎么做。重置是指我实际上要从服务器上除一个数据库之外的所有数据库中删除任何用户表,视图,存储过程等。我想另一个选择是也删除并重新创建数据库,但是我很确定这也意味着要重新访问所有适当的AD组/人员。 我真的不知道这样做的最佳方式是什么,所以我希望你们中的一些人能够提供一些好的想法/建议。谢谢。 为了清楚起见,我们本质上希望使用我们的数据库来做到这一点:http : //try.discourse.org/t/this-site-is-a-sandbox-it-is-reset-every-day/57。唯一的不同是我们不想每天重新创建用户。 版本: SQL Server 2008 版本:开发人员和企业

1
有什么理由对很小的表(最多1000行)使用索引吗?
在应用程序开发期间,我有很多表存储“少量”的数据(通常为10-40值,有时是id+ ),其中包含“对象”的属性,例如产品的新鲜/腐烂,红色/绿色/蓝色。valuetype 我不将此属性归因于产品表,因为电子组件不能新鲜,氧气不能变为红色,并且表不能具有无限的行数... 为了存储属性,我使用了2-3个字段的自定义小表:id用于链接,name用于在应用程序中显示以及有时type属性分组在同一类别中。 主要的“对象”通过中间的多对多表链接到属性。 是否有任何理由为少于1000个项目(通常为10至40个)的“小词典”创建和维护索引? 我的目标数据库是Oracle,但我希望回答独立于供应商的问题。 我填写-不,但是没有技术技能可以证明我的填写是正确的...

2
使用'name'@'%'向MySQL添加用户失败,错误1396
我只是尝试使用添加新用户到MySQL CREATE USER 'name'@'%' IDENTIFIED BY '...' 但是,它失败并显示以下错误: ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%' 仅为本地主机添加用户可以正常工作: CREATE USER 'name'@'localhost' IDENTIFIED BY '...' 我不知道可能是什么问题。我将不胜感激。 (我正在使用mysql Ver 14.14 Distrib 5.1.66。)

2
更改数据捕获和__ $ update_mask二进制文件
我们正在使用CDC捕获对生产表所做的更改。更改后的行将被导出到数据仓库(informatica)。我知道__ $ update_mask列存储以varbinary形式更新的列。我也知道我可以使用各种CDC函数从该掩码中找出那些列是什么。 我的问题是这个。谁能为我定义该掩膜后面的逻辑,以便我们识别仓库中已更改的列?由于我们在服务器外部进行处理,因此无法轻松访问那些MSSQL CDC函数。我宁愿自己在代码中分解面具。对于此解决方案,SQL端的cdc函数的性能存在问题。 简而言之,我想通过__ $ update_mask字段手动识别已更改的列。 更新: 作为替代方案,也可以将人类可读的变更列清单发送到仓库。我们发现执行此操作的性能远胜于原始方法。 以下CLR对这个问题的回答符合这种选择,并包括为将来的访客解释口罩的详细信息。但是,对于相同的最终结果,使用XML PATH接受的答案是最快的。

5
为什么乐观锁定比悲观锁定快?
两种形式的锁定都会导致一个进程等待记录的正确副本(如果该记录当前正被另一个进程使用)。使用悲观锁定,锁定机制来自数据库本身(本机锁定对象),而使用乐观锁定,锁定机制是某种形式的行版本控制,例如时间戳,用于检查记录是否“陈旧”。 但是,两者都会导致第二个进程挂起。所以我问:为什么乐观锁定通常比悲观锁定快/优?并且,在某些用例中,悲观胜于乐观吗?提前致谢!

1
识别文件增长事件
我在我的投资组合中发现了许多数据库,这些数据库是使用默认的自动增长设置(增量为1 MB或10%)创建的,这些设置已经扩展了很长时间。如果我想了解每个数据库文件的外部碎片数量,是否可以从元数据中获取一个数据库文件已被修改(自动增长或手动修改)多少次?为了明确起见,我是否可以从元数据中获得数据库生命周期中数据库文件修改的历史记录,而不仅仅是实例重启之后?

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.