小编Nic*_*mas的帖子

您在使用 SQL Server 时遇到的前 3 个性能问题是什么?

我是埃因霍温 Fontys 大学的学生,我目前正在进行一系列采访以帮助开发 SQL Server 工具,我想从该领域的专家那里得到反馈。

我的问题之一是:

您在使用 SQL Server 实例时遇到的前 3 个性能问题是什么?您如何确定这些问题?

我对用于衡量这一点的脚本和工具特别感兴趣。

performance sql-server

15
推荐指数
8
解决办法
1429
查看次数

当作业失败时,如何让 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 Databases).
Run Code Online (Sandbox Code Playgroud)

要确定失败的原因,您必须导航到 SQL Server Management Studio 中的实例,找到作业并查看其执行历史记录。在大型环境中,必须不断地这样做可能会很痛苦。

理想的警报电子邮件应预先包含失败原因,并让您直接着手解决方案。

我熟悉这个问题的解决方案。有没有人有任何经验?它的缺点是:

  1. 你必须为每一份工作添加一个新步骤,并且
  2. 你必须祈祷没有人弄乱警报过程, spDBA_job_notification

有没有人想出更好的解决方案?

monitoring sql-server

15
推荐指数
1
解决办法
2万
查看次数

如何找到我当前的 SCN?

给定任何版本的 Oracle:

  • 如何找到我当前的 SCN?
  • 最大可能的 SCN 是多少?

oracle

15
推荐指数
2
解决办法
8万
查看次数

断开网络会停止查询吗?

我最近对 ​​100,000 条记录执行了更新查询。我意识到我在查询运行时犯了一个错误,并迅速拔掉了网络电缆。

是否更新查询

  1. 停止处理并完全回滚?
  2. 继续处理完成并提交?
  3. 停止处理并只保留部分目标行更新?

sql-server network

15
推荐指数
3
解决办法
2万
查看次数

如何更快地查询这 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],'') 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)

index sql-server optimization view

14
推荐指数
3
解决办法
8112
查看次数

以自动化方式编写 Oracle DDL 脚本

Oracle SQL Developer 能够通过Tools -> Database Export...这种方式导出 DDL效果很好,但需要人工干预。

我知道DBMS_METADATA.get_ddl(),但发现导出并不完美。我遇到了导出的DBMS_METADATADDL 无法使用的问题,如果没有首先解决诸如关键字中间中断之类的问题,甚至更糟。但是,如果有人知道一种DMBS_METADATA无需手动修复即可运行的导出 DDL 的方法,那也将是一个很好的解决方案。

基本上,我正在寻找一种自动/脚本化的方式来导出通过手动方式导出的 DDL相同的DDL 。

我怎样才能做到这一点?

oracle export scripting oracle-sql-developer ddl

14
推荐指数
2
解决办法
3万
查看次数

如何分析 SQL Azure?

我正在编写一个大量使用 SQL Azure 的网站。然而,它是痛苦的缓慢。

有没有一种简单的方法来分析实时 SQL Azure 实例?

monitoring profiler azure-sql-database

14
推荐指数
1
解决办法
8648
查看次数

存储来自传感器阵列的大量数据

我的任务是实施一个解决方案(应用程序和数据库)来存储来自巨大传感器阵列的数据样本。该阵列目前由大约 20,000 个传感器组成,但很快就会增长到 100,000 个传感器。每个传感器每 10 秒发送一个数据样本,每个样本的大小为 28 字节。

因此,进行求和会导致:

  • 每个传感器每天 8640 个样本
  • 每个传感器每天 242kB 的数据
  • 每天 8.64 亿个样本

现在我一直想知道存储/检索数据的最佳方法是什么?我在指定软件后“加入”了这个项目,所以它需要在使用 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 …

database-design sql-server

14
推荐指数
1
解决办法
7346
查看次数

在oracle sql查询中创建增量数

如何在不创建任何表的情况下在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)

oracle-10g

13
推荐指数
3
解决办法
10万
查看次数

有没有人在实践中使用过 sqlcmd 模式?

SQLServer 2005 引入了称为SQLCMD 模式 msdn 链接的东西 。

乍一看,这种模式从命令行批处理文件中添加了变量替换,还有一些转义到操作系统命令。

此功能是否在您的环境、生产或测试中使用?

sql-server-2005 ssms sqlcmd

12
推荐指数
1
解决办法
1039
查看次数