数据库管理员

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

3
如何截断SQL Server 2008数据库中的事务日志?
如何截断SQL Server 2008数据库中的事务日志? 可能的最佳方法是什么? 我从一个博客尝试了如下操作: 1)从设置数据库到简单恢复,缩小文件,然后再次设置为完全恢复,实际上您正在丢失宝贵的日志数据,并且将无法还原时间点。不仅如此,您也将无法使用后续的日志文件。 2)缩小数据库文件或数据库会增加碎片。 您可以做很多事情。首先,使用以下命令开始进行正确的日志备份,而不是将其截断并经常丢失。 BACKUP LOG [TestDb] TO DISK = N'C:\Backup\TestDb.bak' GO 删除收缩文件的代码。如果您要进行适当的日志备份,则您的日志文件通常(通常,同样会排除特殊情况)不会变得很大。

3
SQL Server-非阻塞选择语句的隔离级别是多少?
我有一个运行很长时间的事务(称为T1),该事务在SQL Server 2008 R2中的表上执行一些删除,更新和插入操作。同时,另一个进程会定期运行该表中的select语句。 在默认隔离设置下(我认为是READ COMMITTED吗?),T1会阻止所有select语句运行,直到事务提交或回滚为止。 我希望看到的是即使事务正在进行中,select语句也可以在一致的数据上起作用。我相信SNAPSHOT隔离可以提供帮助,但是不确定我的方向是否正确。这是此应用程序的最佳隔离级别吗? 其次,我对调用select语句的过程没有任何控制,但对调用T1的.NET应用程序有控制。在select语句和T1上是否都需要进行任何隔离级别更改,或者仅将T1标记为具有不同的隔离级别就足够了吗?

5
查询在SQL 2005与SQL 2008R2上的运行方式不同
在我的办公室,我们有一个非常丑陋的查询,但在生产环境和开发环境(分别为20秒和4秒)中运行得很好。但是,在我们的测试环境中,它需要4个小时以上。SQL2005(+最新补丁程序)正在生产和开发中。SQL2008R2正在测试中。 我看了一下查询计划,它表明SQL2008R2通过表假脱机(惰性假脱机)使用TempDB来存储从链接服务器返回的行。下一步显示嵌套循环(左半连接)占用了查询的96.3%。两家运营商之间的界限为5,398MB! SQL 2005的查询计划不使用tempdb,也不使用左反半联接。 下面是经过清理的代码,执行计划顶部是2005年计划,底部是2008R2。 是什么导致急剧的减速和变化?我期望看到一个不同的执行计划,所以这不会打扰我。查询时间的急剧下降是困扰我的原因。 由于2008R2版本使用的是tempdb,因此我是否必须查看底层硬件,所以我必须查看如何优化其用法? 有没有更好的方法来编写查询? 谢谢您的帮助。 INSERT INTO Table1_GroupLock (iGroupID, dLockedDate) SELECT Table1.iGroupID, GETDATE() FROM Table1 WHERE NOT EXISTS ( SELECT 1 FROM LinkedServer.Database.Table2 Alias2 WHERE ( Alias2.FirstName + Alias2.LastName = dbo.fnRemoveNonLetter(Table1.FullName) AND NOT dbo.fnRemoveNonLetter(Table1.FullName) IS NULL AND NOT Alias2.FirstName IS NULL AND NOT Alias2.LastName IS NULL …

3
如何释放SQL Server内存?
我在本地计算机上安装了SQL Server沙箱。我已将SQL Server实例可以使用的内存设置为1000 mb。运行密集型操作时,内存使用量会上升到1000 mb。操作结束后,SQL Server仍在保留内存。如何释放此内存保留?

1
中位数,众数,百分位数和OLAP
我是新手,试图绕过OLAP,但我有几个问题。 问题1: OLAP多维数据集可以存储中位数,众数,百分位数吗? 问题2:用户编写的MDX查询能否返回行级数据的摘要?(例如:%交易> $ 100美元)。还是多维数据集设计者必须将此添加到多维数据集? 问题3:现在有没有OLAP产品提供访问行级数据的机制?哪一个? 我们的IT部门正在寻找有关特定MS Analsis Services ROLAP多维数据集所遇到的问题的反馈。我们无权访问其背后的关系数据库,并且需要执行多维数据集中当前不可用的计算。 让我看看我是否拥有这项权利。 多维数据集可以提供计数,均值,比例,标准差的统计信息。 如果没有通过多维数据集设计器提供的度量来满足特定的统计信息,我们可以编写MDX查询来获取它吗?还是他们需要更改多维数据集以便从行级数据进行预先计算? 多维数据集无法提供诸如中位数,众数或百分位数之类的统计信息,因为这些统计信息无法正确聚集。 他说,我正在阅读利兰·威尔金森(Leland Wilkinson)的《图形语法》及其有关数据挖掘和OLAP的章节。 这些[多维数据集运算]可以很好地处理统计数据,例如计数,均值,比例和标准偏差。可以通过对和,平方和和其他项进行运算来计算子类上的简单聚合,这些和在线性函数中组合以产生基本的汇总统计信息。 它们不适用于中位数,众数和百分位数之类的统计信息,因为这些统计信息的总和不是其总和的统计信息。例如,中位数不是聚合的中位数。 他继续补充: 但是,最近出现了一个更复杂的ROLAP模型。通过多种技术,可以使统计算法通过关系模型实时访问原始数据。这种方法比诸如数据多维数据集之类的结构提供的刚性聚合更有希望。 在此体系结构最优雅的形式中,应用程序可以请求远程连接以提供有关其数据处理方法的信息,并根据返回的信息采取适当的措施。以这种形式,组件体系结构可以实现分布式计算的真正希望:独立于站点,操作系统或语言的设计和执行。 那是在2005年左右写的。有人知道采用这种方法的产品可以进行行级数据访问吗?
9 ssas  statistics  olap 

2
在存储过程中临时运行时,代码会创建不同的计划
我有一条delete语句,在存储过程中运行时使用了错误的计划,但是在临时运行时选择了更好的计划。 我已经为查询使用的表重建了所有索引,并删除了所有缓存。优化器仍然为存储过程选择了错误的计划。 我想知道为什么优化器对存储过程使用的是与临时SQL不同的执行计划。 更新:我猜想它毕竟一定是参数-当我运行带有硬编码变量的临时代码时,我可以获得具有正确值的“坏”计划(这是一个日期,一个岁的值)似乎会产生“好的”计划)。现在继续尝试通过使用查询提示在proc上强制执行“良好”计划。 解决方案:我最终使用OPTIMIZE FOR UNKNOWN提示获得了想要的计划。

7
尽管总是说作业成功,但计划备份任务并不总是备份所有数据库
我在SQL 2008中有一项工作,该工作运行存储的proc来备份所有数据库。这每天通过sql server agent作业运行。 它每天都会成功退出,但是有些时候只有备份了一些数据库后才能成功退出。每次可以有不同数量的数据库。大多数情况下,它成功备份了所有数据库,但有时成功备份了2个,有时成功备份了5个,等等。 我在作业历史记录,事件查看器或SQL Server日志中看不到任何错误。 尽管该文件夹是可扩展存储卷上文件夹的“连接”,但备份仍在本地磁盘上进行。 操作系统是Windows 2003 64位,作为运行在Vmware ESXi 5主机上的虚拟机运行Sql Server 2008 Web版64位。 存储过程: ALTER PROCEDURE [dbo].[backup_all_databases] @path VARCHAR(255)='c:\backups\' AS DECLARE @name VARCHAR(50) -- database name DECLARE @fileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name DECLARE @dbIsReadOnly sql_variant -- is database …

5
并行性最佳实践
一般而言,设置并行性的最佳做法是什么?我知道SQL Server默认0使用所有可用的处理器,但是您想在哪种情况下更改此默认行为? 我记得在某处(我必须去看这篇文章)读过一篇文章,对于OLTP工作负载,您应该关闭并行性(将maxdop设置为1)。我认为我不完全理解您为什么要这样做。 什么时候可以将maxdop保持为SQL Server(0)?什么时候关闭并行性(1)?您何时将maxdop明确声明给特定数量的处理器? 是什么导致并行性?

1
应用程序什么时候使用太多会话?
我正在使用OCI与Oracle通信的客户端服务器应用程序。过去,我们的应用程序经常将会话视为无限资源,这很可能损害共享该Oracle服务器的其他应用程序。 我试图说服我的开发人员,对我们的应用程序来说,与他人一起玩耍而不是浪费资源很重要。 在什么时候,Oracle DBA会认为应用程序过度使用(或滥用)会话? 编辑:当前会话的最大消费者之一是使用直接路径加载来批量并行加载几张(20-30)表的组件。
9 oracle 

4
TempDB上的DDL争用
我有一个SQL Server 2005 Standard x64,在过去的几个月中,TempDB DDL争用一直遇到问题。服务器将在等待资源2:1:103(等待类型为PAGELATCH_EX)上发生争用。 当服务器处于正常负载时,该问题似乎偶尔发生。我一直在监视“销毁临时表”的速率,在我们在2:1:103遇到PAGELATCH_EX问题时,它的速率可能会跳到5,000+。根据我的阅读,该计数器在大多数情况下应该为0,但在大多数情况下,我们的计数器似乎保持在300-1100之间。仅当系统上用户很少时,计数器才会变为0。 我如何缩小在tempdb上导致DDL争用的原因,而不必在干草堆中寻找针头?

4
在MySQL DBA面试中我应该问什么?
我是一名软件开发人员,正在帮助我的团队雇用MySQL DBA。我们面临的核心挑战是: 由于休眠,查询和性能变慢。 数据库管理(备份,调整,补丁,安全性)。 由于来自新数据源的数据增加和旧数据的积累,因此具有可伸缩性。 我们计划在将来开始数据挖掘和数据仓库。不确定如何,但这就是方向。 通常,在编程案例中,我们要求开发人员为面试构建一些东西,但是以相同的方式进行DBA面试有点困难。 您能对面试提供一些建议吗?

2
这是一组普通的MySQL特权吗?
在本地测试Wamp设置上使用phpmyadmin以及几乎所有的标题状态,有3个用户标记为user = ANY,密码= NO,例如: USER | HOST | Password | Global Priv | Grant -----+---------+----------+-------------+------ Any | % | No | USAGE | No Any | Local | No | USAGE | No Any | Domain | No | USAGE | No -----+---------+----------+-------------+------ 这3个用户中的任何一个都没有对任何表具有任何特定特权,因此看来他们不能做太多事情。这是某种通用的安全措施,以明确声明不属于任何其他用户组的“任何”用户都没有特权吗?

2
如何帮助SQL Server识别我的索引视图列不可为空?
我在SQL Server 2008中定义了以下索引视图(您可以从gist下载工作架构以进行测试): CREATE VIEW dbo.balances WITH SCHEMABINDING AS SELECT user_id , currency_id , SUM(transaction_amount) AS balance_amount , COUNT_BIG(*) AS transaction_count FROM dbo.transactions GROUP BY user_id , currency_id ; GO CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id ON dbo.balances ( user_id , currency_id ); GO user_id,currency_id和transaction_amount都定义为中的NOT NULL列dbo.transactions。但是,当我看着Management Studio中的对象资源管理器,它标志着这两个视图定义balance_amount,并transaction_count为NULL在视图-able列。 我看了几个讨论,其中最相关的讨论表明一些功能改组可以帮助SQL Server识别视图列始终为NOT NULL。不过,在我的情况下,这样的改组是不可能的,因为在索引视图中不允许使用聚合函数的表达式(例如ISNULL()over SUM())。 …

4
Oracle返回错误ORA-01031:特权不足
Oracle返回错误“ ORA-01031:特权不足”,sqlplus / as sysdba但我sqlplus sys/oracle123 as sysdba没有运行,为什么? Oracle版本:Oracle数据库10g企业版10.2.0.1.0版-64位 Linux版本:SUSE Linux Enterprise Server 11(x86_64) 我知道Oracle在运行时会使用OS身份验证sqlplus / as sysdba,我也仔细检查了sqlnet.ora并包含它SQLNET.AUTHENTICATION_SERVICES = (NTS)。 我还更改了oracle用户的组,oracle用户完全属于dba组,因为当我运行命令id时,将返回以下信息: oracle@linux-mage:~> id uid=103(oracle) gid=106(dba) groups=105(oinstall),106(dba) 另一个信息是我可以通过登录sqlplus sys/oracle123 as sysdba,但无法关闭实例: oracle@linux-mage:~> sqlplus sys/oracle123 as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Mon Sep 5 16:29:57 2011 Copyright (c) 1982, 2005, …
9 linux  oracle 


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.