我是埃因霍温 Fontys 大学的学生,我目前正在进行一系列采访以帮助开发 SQL Server 工具,我想从该领域的专家那里得到反馈。
我的问题之一是:
您在使用 SQL Server 实例时遇到的前 3 个性能问题是什么?您如何确定这些问题?
我对用于衡量这一点的脚本和工具特别感兴趣。
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 Databases).
Run Code Online (Sandbox Code Playgroud)
要确定失败的原因,您必须导航到 SQL Server Management Studio 中的实例,找到作业并查看其执行历史记录。在大型环境中,必须不断地这样做可能会很痛苦。
理想的警报电子邮件应预先包含失败原因,并让您直接着手解决方案。
我熟悉这个问题的解决方案。有没有人有任何经验?它的缺点是:
spDBA_job_notification有没有人想出更好的解决方案?
我最近对 100,000 条记录执行了更新查询。我意识到我在查询运行时犯了一个错误,并迅速拔掉了网络电缆。
是否更新查询
对于搜索功能,我使用的视图包含我需要搜索的所有表中的记录。该视图有近 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],'') AS [nineSearch]
, ISNULL(SIT.[fld_tenthSearch],'')AS [tenthSearch]
, ISNULL(SET.[fld_eleventhSearch],'') AS [eleventhSearch]
, ISNULL(ET.[twelthSearch],'')AS [twelthSearch]
, ISNULL(NT.[thirteenthSearch],'')AS [thirteenthSearch]
, ISNULL(NT.[fourteenSearch],'') AS [fourteenSearch]
, ISNULL(NT.[fifteenSearch],'') AS [fifteenSearch]
, ISNULL(NT.[sxteenSearch],'') AS [sxteenSearch]
, …Run Code Online (Sandbox Code Playgroud) Oracle SQL Developer 能够通过Tools -> Database Export...这种方式导出 DDL效果很好,但需要人工干预。
我知道DBMS_METADATA.get_ddl(),但发现导出并不完美。我遇到了导出的DBMS_METADATADDL 无法使用的问题,如果没有首先解决诸如关键字中间中断之类的问题,甚至更糟。但是,如果有人知道一种DMBS_METADATA无需手动修复即可运行的导出 DDL 的方法,那也将是一个很好的解决方案。
基本上,我正在寻找一种自动/脚本化的方式来导出与通过手动方式导出的 DDL相同的DDL 。
我怎样才能做到这一点?
我正在编写一个大量使用 SQL Azure 的网站。然而,它是痛苦的缓慢。
有没有一种简单的方法来分析实时 SQL Azure 实例?
我的任务是实施一个解决方案(应用程序和数据库)来存储来自巨大传感器阵列的数据样本。该阵列目前由大约 20,000 个传感器组成,但很快就会增长到 100,000 个传感器。每个传感器每 10 秒发送一个数据样本,每个样本的大小为 28 字节。
因此,进行求和会导致:
现在我一直想知道存储/检索数据的最佳方法是什么?我在指定软件后“加入”了这个项目,所以它需要在使用 SQL Server 的 Windows 平台上实现。
我目前的解决方案是创建一个带有两个表的数据库来存储数据样本。第一个用作第二个的索引,将整理的样本存储在每个传感器每天的二进制字段中:
Table 1:
RecordID - BigInt - Identity
SensorID - BigInt - Primary Key
Date - DateTime - Primary Key (yyyy-mm-dd)
Table 2:
RecordID - BigInt - Primary Key (from an insert into Table 1)
Data - Binary
Run Code Online (Sandbox Code Playgroud)
基本上我会将来自所有传感器的样本写入临时文件(每个传感器 1 个)。在每天结束时,我将在表 1 中创建一个条目,使用生成的 RecordID 并将文件转储到表 2 中的数据字段中。
这样,我最终每天只有 100,000 个条目进入表,而不是 8.64 亿个条目。数据应该在 LAN 或高速 WAN …
如何在不创建任何表的情况下在oracle sql查询中创建增量数?我曾尝试使用“with”子句,但没有得到预期的结果。我正在使用 oracle 10g
这是我尝试的代码,它似乎不起作用:
WITH
TABLE3 AS ( SELECT 2008 YEARS FROM dual WHERE 1=1
union all
select t3.YEARS+1 from TABLE3 t3
WHERE 1=1 AND t3.YEARS < 2011
)
select YEARS from TABLE3
Run Code Online (Sandbox Code Playgroud)
我想要的预期结果是:
2008
2009
2010
2011
Run Code Online (Sandbox Code Playgroud) SQLServer 2005 引入了称为SQLCMD 模式 msdn 链接的东西 。
乍一看,这种模式从命令行批处理文件中添加了变量替换,还有一些转义到操作系统命令。
此功能是否在您的环境、生产或测试中使用?
sql-server ×5
monitoring ×2
oracle ×2
ddl ×1
export ×1
index ×1
network ×1
optimization ×1
oracle-10g ×1
performance ×1
profiler ×1
scripting ×1
sqlcmd ×1
ssms ×1
view ×1