我帮助支持托管 SharePoint 和各种相关服务的 SQL Server 安装。直到今天,当我注意到一大堆数据库的数据库名称上附加了一些看起来像 GUID 的东西时,我才真正关注过数据库方面的事情。有人可以解释这些是什么吗?我试图用谷歌搜索它,但我不知道用谷歌搜索什么,而且明显的谷歌搜索没有任何结果。
Shane Wealti's questions
我有一个使用 SQL Server (2008 R2) 数据库的应用程序,我们定期遇到应用程序性能问题,这与我们的 15 分钟事务日志备份相吻合。
应用程序控制对延迟敏感的工业机械,我们发现当系统发生大量事务时,应用程序的查询运行时间过长(在短时间内 > 5 秒)。这些查询仅在事务日志备份发生的同时运行缓慢,因此它似乎与事务日志备份有关。当系统运行没有问题时,我们的事务日志备份需要 2-4 秒,而当我们处于较重的负载并且遇到问题时,它们需要 6-7 秒。这显然足以导致一些 FIFO 消息调度队列填满应用程序。
首先,我的印象是事务日志应该对应用程序非常透明,没有锁定或其他任何事情。如果我们在执行事务日志备份时看到数据库延迟,这是否表明某种类型的 IO 争用被引入。改用 5 分钟的事务日志备份节奏而不是 15 分钟的节奏有哪些优点和缺点?
磁盘后端是带有一堆 600 GB 10k SAS 驱动器的 NetApp FAS2220。DBA 确信这是一个应用程序问题,而不是数据库问题,因此我需要知道如何解决这个问题,无论是应用程序问题还是数据库问题。
TLDR:事务日志备份期间在重负载下看到的数据库或应用程序延迟。如何排查和解决?
我有一个应用程序,它与它需要运行的 SQL Server 实例之间的连接间歇性中断。解决此类问题的好方法是什么。如果 SQL 服务器故意断开连接,是否有某种日志记录某些内容。
我知道应用程序和数据库之间的任何事情都可能导致连接丢失。我不认为这是客户端和服务器之间的网络连接问题,因为该应用程序是通过 Citrix XenApp 提供服务的,并且在同一主机上运行的所有其他实例在我看到的那个时间点或附近都没有问题问题。
如果重要的话,这是 SQL Server 2005 - 企业版。我的应用程序是一个基于 Visual FoxPro 的应用程序,通过 Citrix XenApp 提供给客户端机器。这个问题很少见,而且是间歇性的(每天 1-2 次,超过数百个客户)。
此外,SQL Server 和 Citrix 在虚拟化服务器基础架构上运行。
TL;DR:如何解决间歇性数据库连接丢失问题?
更新:这是问题发生时应用程序错误日志中的消息:
Connectivity error: [Microsoft][ODBC SQL Server Driver]Communication link failure
我之前唯一一次看到该消息是在 SQL Server 完全过载以及实际网络连接本身出现问题(断开连接)时。在这种情况下,我认为这两件事都不是这种情况。
我有一个 (SS2005) 数据库,其中包含一个名为 MY_APPLICATION_USER 的用户。我正在尝试在该数据库中创建一个名为 MY_APPLICATION_USER 的角色。
当我尝试使用此脚本执行此操作时:
/****** Object: Role [MY_APPLICATION_USER] ******/
CREATE ROLE [MY_APPLICATION_USER] AUTHORIZATION [dbo]
GO
我收到错误消息:
Msg 15023, Level 16, State 1, Line 2
User, group, or role 'MY_APPLICATION_USER' already exists in the current database.
SQL Server 是否有限制不允许具有相同名称的用户和角色?我用谷歌搜索了各种问这个问题的方法,但没有找到任何解决这个问题的方法,但我肯定有可能错过了一些东西。
假设我有一个大的交易表,其中有一个日期字段和该字段的索引,按升序排列。如果我从表中选择该字段并按相反顺序排序,它是否能够以某种方式反向使用该索引,或者它是否必须进行表扫描或其他一些效率较低的方法来访问这些记录并对其进行排序?