数据库管理员

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

5
如何使SSMS大写关键字
我最近使用Management Studio 2012在使用MySQL工作台开始,一个方便的功能是,我可以留在所有情况下和任何保留字(如SELECT,INSERT)将自动转换为大写。如何在SSMS中复制此行为?

6
如何获得用户所属的所有角色(包括继承的角色)?
假设我有两个Postgresql数据库组,即“作者”和“编辑”,以及两个用户,“ maxwell”和“ ernest”。 create role authors; create role editors; create user maxwell; create user ernest; grant authors to editors; --editors can do what authors can do grant editors to maxwell; --maxwell is an editor grant authors to ernest; --ernest is an author 我想编写一个性能函数,该函数返回maxwell所属角色(最好是其oid)的列表,如下所示: create or replace function get_all_roles() returns oid[] …

4
如何验证我正在使用SSL连接到mysql?
我已将服务器配置为允许SSL,并修改了客户端〜/ .my.cnf,所以我使用SSL: [client] ssl ssl-cipher=DHE-RSA-AES256-SHA ssl-ca=~/certs/ca-cert.pem 当我使用客户端登录并查看状态时,它在SSL行上列出了一个密码: mysql> \s -------------- SSL: Cipher in use is DHE-RSA-AES256-SHA 如果没有安装wireshark之​​类的工具来验证连接是否安全,是否可以基于此信息假设我正在通过SSL连接?
23 mysql  ssl 

1
动态端口什么时候“动态”?
我今天正在Dynamic Ports与一位同事进行讨论,可以用一些帮助来阐明他们的工作方式。 第一个问题:如果IPALL TCP Dynmaic Ports设置为特定数字(例如1971),是否表示您有1971的静态端口或当前为1971的动态端口,并且将来可能会更改。 第二个问题:这是我最好奇的问题。IPALL TCP Dynmaic Ports通过数十次实例重新启动,我们有一个拥有多年相同端口(设置中的值)的实例。是什么导致实例实例重新启动后动态端口实际发生更改?

6
缩小日志文件不会减小大小
我有一个数据库,该数据库具有350 MB数据文件(.mdf)和4.9 GB日志文件(.ldf)。恢复模型设置为FULL。 当我尝试收缩日志文件时,它没有收缩。 我知道收缩数据库是不好的,不应该这样做。但是我仍然在尝试缩小日志文件。 我跑的时候 DBCC SQLPerf(logspace) 我发现日志大小为4932 MB,使用的日志空间为98.76%! 然后我尝试了这个命令 USE <databasename>; DBCC loginfo; 现在几乎所有的VLF均为“状态2”,这意味着所有VLF都在使用中。 我尝试进行日志备份,然后缩小日志文件。缩小并没有减小尺寸。 我将恢复模型更改为SIMPLE并尝试再次缩小,但这也无济于事。 我检查了未结交易 DBCC opentran (database); 并发现现在没有任何交易打开。 是什么阻止了我缩小日志文件?我该如何解决?

1
在SQL Server中“无联接谓词”到底是什么意思?
MSDN“ 缺少连接谓词事件类 ”说“ 表明正在执行的查询没有连接谓词 ”。 但是不幸的是,这似乎并不那么容易。 例如,非常简单的情况: create table #temp1(i int); create table #temp2(i int); Select * from #temp1, #temp2 option (recompile); 表中没有数据,也没有警告,尽管它显然没有连接谓词。 如果我看一下SQL Server 2005的文档(相同的链接,只是其他服务器版本),则会有额外的一句话:“ 仅当连接的两面都返回多行时,才会产生此事件。 ”在以前的情况下具有完美的感觉。没有数据,因此双方都返回0行且没有警告。插入行,得到警告。嗯不错。 但是对于下一个令人困惑的情况,我在两个表中插入了相同的值: Insert into #temp1 (i) values (1) Insert into #temp1 (i) values (1) Insert into #temp2 (i) values (1) Insert into #temp2 …

1
将SQL Server 2000数据库升级到2008 R2并启用新功能
我最近将SQL Server 2000数据库升级到2008 R2。 我所做的是: 在旧计算机上关闭SQL Server 2000(快速)服务, 将数据文件(mydatabase.mdf和mydatabase.ldf)移至新计算机, 运行SQL Server Management Studio 2008, 连接到本地数据库引擎, 将数据文件附加到数据库。 将数据库的兼容性级别更改为SQL 2008(100)。 问题:我还应该怎么做才能完成迁移? 我想要: 使用诸如校验和和完整恢复模型之类的新功能, 使该数据库与在SQL 2008 R2中创建的数据库完全相同, 使该数据库具有完全的兼容性,正确性,并且非常适合新的SQL 2008 R2数据库引擎。 换句话说:我只想知道如何正确地将旧的SQL 2000数据库正确地完全转换为新的2008 R2数据库,请对所有事情都做对了保持冷静,并对所有新功能感到满意。 我问这个问题,是因为我在Internet上发现了很多网站,这些网站说了很多不同的内容,这让我感到困惑:有些人说需要重建索引,而另一些人说要做其他事情……现在我一无所知,所以我想听听经验丰富的人的意见和清晰的分步说明。我在一家非常小的公司工作,我一个人工作,我不想搞砸。 主席先生,您的回答给我留下了深刻的印象,没想到那么多。 所以一些评论: 该数据库现已投入生产。就像我说的那样,如我在第一篇文章中所描述的那样,它使用deattach-attach方法进行了升级,并且在MSDN 上进行了描述:http : //msdn.microsoft.com/zh-cn/library/ms189625.aspx必须快速完成,所以我被迫那样做。让我们忘记这有多么不恰当,而将注意力集中在当前情况上。 用户/权限在这里不是问题-人数很少,权限很简单。 直到2012年,使用数据库的应用程序都与SQL 2000兼容,因此这也不是问题。 数据库文件(MDF)并不大-只有大约1GB。 几个问题: 您建议使用备份/还原方法,但是我如上所述,所以现在可以遇到任何问题吗?一切正常,没有任何问题。 关于校验和和完整恢复模型:在SQL 2000上不可用/未启用,因此我现在想使用它们。您说过,我唯一需要做的就是在数据库属性中启用这些选项?我读过某个地方,那还不够,还应该重建索引或其他内容。我真的不知道,我只是问。 我正在准备将该数据库迁移到SQL 2012-首先是从SQL 2000到2008 R2,现在是从2008 R2到2012(由于缺少对SQL …

1
是否在SQL:2008标准中指定了CTE(WITH查询)的优化隔离行为?如果是这样,在哪里?
我看到对WITH查询(公用表表达式或CTE)的频繁引用充当了优化隔离,不允许服务器将过滤器下推到CTE查询中,将常用表达式从CTE中拉出,等等。成为SQL标准要求的行为。 CTE 绝对是PostgreSQL中的优化栅栏……但这是标准要求的,还是实际上只是实现细节? 例如,这些邮件列表张贴声明或表明它是标准的: http://www.digipedia.pl/usenet/thread/11566/101385/ 在评论中提到它之后,我被问到了它的指定位置-在查看了SQL:2008的唯一草稿后,我获得了访问它的机会,但运气并不好。 我尚未深入研究该标准,因此希望有人提出以下建议:标准实际上需要PostgreSQL中CTE的优化范围吗?如果是这样,它在哪里指定?还是Pg邮件列表上的语句有误? 另请参阅待办事项列表上的线程CTE优化围栏?。

1
MySQL交易大小-太大太大了吗?
我有一个经常运行的导入过程,我希望它是一种“全有或全无”的交易,又名:交易。 涉及的方面很多,进口量可能在10万至100万以上的记录之间。这相当于有效载荷范围从几MB到几百MB的数据。 我知道临时表是另一种选择-但是此方法似乎很方便。 对于这种在提交之间进行大量数据操作的做法,是否有需要注意的警告?(提交后在典型的写/索引加载突发之外)

1
如何强制SQL Server Management Studio更新IntelliSense缓存?
除非我关闭并重新启动,否则SSMS中的IntelliSense不会更新。我曾尝试从服务器断开连接,然后在SSMS会话处于活动状态时重新连接,但这不起作用。 重建步骤: 建立表格 从该表中选择某项 SSMS在其下方显示波浪状的红线,并显示提示“无效的对象名称” 执行查询 如何在不重新启动SSMS的情况下强制IntelliSense更新?

8
用户登录失败-错误18456-严重级别14,状态38
SQL Server日志文件查看器显示的消息: Login failed for user [User] Error: 18456, Severity: 14, State 38 实际上是什么意思: Failed to open the explicitly specified database 我的问题: 在严重性和状态的每种组合中,是否都列出了18456错误(登录失败)的所有变化形式,以及有用的描述文字? 我有一个Google,但是除了特定的组合之外找不到其他东西。

1
向用户授予SQL Server SHOWPLAN权限有任何风险吗?
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 我正在对大型SQL Server 2008数据库进行性能调整,并且IT小组不愿意授予SHOWPLAN权限。过去,“显示执行计划”一直是了解单个查询和过程的性能的最有效方法。 授予此许可有哪些固有风险?对数据库的开发副本进行此限制是否有合理的理由? 注意:该SQL IT组在一个SQL Server实例下有200多个数据库。谢谢。 答:我认为缺乏响应是指除以下所述之外,没有重大的安全风险。基本上,将其限制在开发数据库上会适得其反。 如果有人想出更好的答案,我将进行更新。感谢您的意见!

8
mysqldump可以忽略数据库进行备份的任何选项吗?
我们的服务器中有40个数据库。 我们希望使用mysqldump备份36个数据库。我如何在mysqldump命令中忽略其余4个数据库?mysqldump是否有任何选项可以忽略要在MySQL中备份的数据库? 我知道一般的mysqldump命令,但是它很长。我只想忽略4个数据库,而需要进行剩余的dbs备份。


3
证明在每个查询中不使用(nolock)提示
您是否曾经有过不使用查询提示的理由? 我WITH (NOLOCK)在每一个查询中都看到一个非常繁忙的服务器。关键是,开发人员认为默认情况下应该启用它,因为他们讨厌在代码中看到它数千次。 我试图解释说,这将允许脏读,最终它们将得到错误的数据,但是他们认为性能的折衷是值得的。(他们的数据库是一团糟;难怪他们会遇到性能问题。) 如果您有一个明确的示例,说明如何针对这种滥用NOLOCK提示的情况进行陈述,那将不胜感激。

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.