数据库管理员

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

4
有哪些工具可以为SQL Server生成测试数据?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 从我的另一个问题中可以看到,生成测试数据是我现在的主题。 此时,我仍在手动生成测试数据。但是,由于此过程是手动过程,因此始终会生成少量数据(通常为五行)。 是否有任何工具可以自动执行此过程?特别是,我希望能够生成100万条以上的行。

6
SQL Server清单
在提出其他问题之后,我想开始考虑我应该在每日/每周/每月的基础上根据警报来考虑什么。我希望能够在问题发生之前就看到问题(这是计划)... 到目前为止,我已经开始收集以下脚本(无顺序): 日常 检查系统正常运行时间(以防万一我需要以DBA身份进行检查) 检查上次备份 检查事务日志备份 检查SQL作业的状态 检查最近24小时(或1140分钟)的平均CPU使用率 每周 检查MSDB备份历史记录 检查以查看最后一次运行CheckDB的时间 检查索引碎片 检查索引状态(读与写等) 检查IO瓶颈 每月一次 检查缺少的索引 检查不再使用的索引 还有其他建议吗?(我是DBA的新手,因此随时欢迎您提供帮助/建议)

3
作业失败时,如何让SQL Server通过电子邮件将错误详细信息发送给我?
SQL Server允许您配置作业以在失败时发送电子邮件警报。这是监视您的工作的简单有效的方法。但是,这些警报不包含任何详细信息-只是成功或失败通知。 如果作业失败,典型的警报电子邮件将如下所示: JOB RUN: 'DBA - Consistency Check Databases' was run on 8/14/2011 at 12:00:04 AM DURATION: 0 hours, 0 minutes, 0 seconds STATUS: Failed MESSAGES: The job failed. The Job was invoked by Schedule 2 (Nightly Before Backup 12AM). The last step to run was step 1 (Check …

1
如何将大型Blob表从mysql迁移到Postgresql?
我现在正在将MySQL数据库迁移到PostgreSQL。除了我拥有的一张桌子外,几乎所有其他东西都很好(嗯,经过大量的谷歌搜索以查找正确的mysqldump参数等),实际上是我的应用程序中最重要的一张桌子。 表的结构很简单: mysql> show create table samples; .. skipped ... CREATE TABLE `samples` ( `File_ID` int(11) NOT NULL, `File` longblob, PRIMARY KEY (`File_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=binary 但它非常大(> 20 Gb)。 我尝试使用mysqldump的--hex-blob参数-但是当我尝试将生成的转储文件用作命令文件时,PostgreSQL不接受这种格式的数据。我尝试过的另一个选项是使用--tab选项只是获取转储,然后使用COPY命令将其插入到PostgreSQL中-但是--hex-blob无法与--tab一起使用,并且PostgreSQL仍然不接受在那说的转储文件是无效字符。 我很高兴收到关于此事的任何建议-尽管我开始认为编写自定义迁移工具毕竟不是一个坏主意...


3
在具有索引列的大表上使用ALTER TABLE
我有一个带有VARCHAR(20)列的大表,我需要对其进行修改以成为VARCHAR(50)列。通常,在此特定表上执行ALTER TABLE(添加TINYINT)大约需要90-120分钟才能完成,因此,我实际上只能在周六或周日晚上这样做,以免影响数据库的用户。如果可能的话,我想在此之前进行此修改。 该列也已建立索引,我认为这会使ALTER TABLE变慢,因为它必须在修改列长后重建索引。 该Web应用程序是在MySQL复制环境中设置的(26个从属和一个主控)。我记得曾经读过某个地方的一种方法,即首先在每个从属服务器上执行ALTER TABLE(对用户的影响最小),然后在主服务器上执行此操作,但是那不是然后尝试将ALTER TABLE命令复制到从属服务器吗? 所以我的问题是:对我来说,以最小的用户干扰来修改此表的最佳方法是什么? 编辑:该表是InnoDB。


1
在MySQL中如何实现INFORMATION_SCHEMA?
从理论上讲,INFORMATION_SCHEMA是SQL标准中指定的一组视图,允许用户检查系统的元数据。如何在MySQL中实现? 连接到全新安装时,我会看到两个数据库:mysql和information_schema。在数据库SHOW CREATE TABLE上使用语句后information_schema,看起来它并未实现为一组视图,而是使用了基本表。这个假设正确吗?还是有其他对用户隐藏的系统表?


1
为什么SQL * PLUS在CREATE TYPE之后需要一个斜杠?
我只是遇到了一个问题,我定义了一个Type并在TOAD中对其进行了测试,一切正常。但是在SQL * PLUS下运行会引发错误。 例: CREATE OR REPLACE TYPE MyType AS OBJECT ( Item1 NUMBER, Item2 NUMBER ); 由于某种原因,我必须在此处添加斜杠 CREATE OR REPLACE TYPE MyType AS OBJECT ( Item1 NUMBER, Item2 NUMBER ); / 对我来说,它看起来类似于Create Table语句,不需要斜线。我觉得这很混乱。我知道它是如何工作的,但是谁能解释为什么做出这个设计决定?

3
在SQL 2008上复制实例的最有效方法是什么?
我们有一个简单的数据库实例,数据库中只有足够的数据来保持其有用性,我们可以将其用于演示目的,我想将其副本放在笔记本电脑上,以便在以下情况下可以将其用于开发工作我不在办公室 (常规dev数据库实例大约为150GB,这一实例为3GB) 在笔记本电脑上重新创建实例的最可重复/可编写脚本的方法是什么?我确定我将不得不再次通过SqlServer2008的安装程序运行,并设置一个实例,但是在那之后...我想我希望能够每个月左右删除旧数据库,并且将所有新内容复制到我的笔记本电脑上,因为我的实例在一个演示系统或笔记本电脑上都不会更改。但是数据库本身将更新,并更新存储库等。 我考虑过脚本化所有“删除数据库文件;添加数据库文件{path}”并将它们保存在某种可运行的批处理文件中,然后我可以“删除,删除,复制,添加”,但想知道是否存在有没有比xcopy和批处理更好的方法? 我试图以便宜的价格做到这一点(我们不总是尝试以便宜的价格做事情),所以我对RedGate产品或类似产品并不特别感兴趣。我想要自己可以在文本编辑器中轻松维护的内容。

5
在MySQL中将单列与多个值匹配而不使用自联接表
我们有一个表,用于存储问题的答案。我们需要能够找到对特定问题有特定答案的用户。因此,如果我们的表包含以下数据: user_id question_id answer_value Sally 1 Pooch Sally 2 Peach John 1 Pooch John 2 Duke 并且我们想找到对问题1回答“ Pooch”而对问题2回答“ Peach”的用户,则以下SQL(显然)不会起作用: select user_id from answers where question_id=1 and answer_value = 'Pooch' and question_id=2 and answer_value='Peach' 我的第一个想法是针对需要的每个答案自行加入表格: select a.user_id from answers a, answers b where a.user_id = b.user_id and a.question_id=1 and a.answer_value = …

5
我如何更快地查询这2000万条记录视图?
对于搜索功能,我正在使用一个视图,该视图具有需要搜索的所有表中的记录。该视图有近2000万条记录。针对该视图的搜索花费了太多时间。 我应该在哪里寻求改善这种观点的表现? 该视图的大致定义如下。它包括十三张桌子和大约三十个字段。 CREATE VIEW [dbo].[v_AllForSearch] AS SELECT FT.firstField AS [firstField] , FT.fld_primary AS [fld_primary] , FT.fld_thirdField AS [thirdField] , FT.fld_fourthField AS [fourthField] , ISNULL(ST.[fld_firstSearchField],'') AS [firstSearchField] , ISNULL(TT.[fld_thirdSearch],'') AS thirdSearch , ISNULL(TT.[fld_fourthSearch],'')AS fourthSearch , ISNULL(TT.[fld_fifthSearch],'')AS fifthSearch , ISNULL(FRT.[fld_sixthSearch],'') As [sixthSearch] , ISNULL(FRT.[fld_seventhSearch],'') AS [seventhSearch] , ISNULL(FRT.[fld_eightSearch],'')AS [eightSearch] , ISNULL(FIT.[fld_nineSearch],'') …

3
当表中的字段接近最大有符号或无符号32位整数时该怎么办?
在任何以唯一的自动增量字段形式保存用户记录的给定数据库中(为方便起见,示例中为用户间消息)...当时间到了并且接近最大有符号数或无符号数时该怎么办当前数据类型?(一个32位INT)?我猜数据库服务器在尝试将(2∧32)-1数字分配给下一个条目时将溢出,因此,如何避免这种情况发生(出于问题的原因,不更改数据类型)和继续添加记录?你会怎么做? 为什么我要使用INT,而不要使用VARCHARS? 自问了这个假设问题已经好几天了,我想知道专业人员会做什么。
14 mysql 

5
附加/分离与备份/还原
我需要将数据库(作为一个整体)传输到另一台服务器,以创建一个重复的数据库来设置另一个测试环境。 我有两个选择: 在源服务器上进行完整备份/在目标服务器上进行还原; 在源服务器上分离/在目标服务器上附加。 根据我的要求,两种解决方案的优缺点是什么? 我正在使用SQL Server 2008 Enterprise。

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.