小编Joe*_*eky的帖子

何时使用非 dbo 模式与新数据库的决策标准

我主要是一名应用程序开发人员,但发现自己必须为我当前的项目(顺便说一句......它的 MS SQL Server 2008)做所有的前期数据库工作。作为第一个决定,我试图弄清楚是使用单独的数据库还是在同一数据库中使用单独的架构来划分我的状态。我对 SQL Server Schema 进行了一些阅读,这似乎是一种分离对象域(我喜欢)的自然方法,但我不确定这种模式是否存在隐藏成本。

在这两种方法之间进行选择时,我应该考虑哪些更实际的事情?如果我避免dbo.mytable赞成,myschema.mytable我是否会为我的架构带来其他挑战(或问题)?

作为旁注......在某些时候,这将被移交给真正的DBA 来维护/支持,所以我试图确保我不会让他们的生活变得更艰难。

schema sql-server-2008 database-design

23
推荐指数
2
解决办法
2400
查看次数

将 XML 数据存储在哪种数据类型中:VARCHAR(MAX) 或 XML

我正在使用 SQL Server 2008 为一组新资源定义架构...在这种情况下,每条记录(例如行)都需要存储 XML 片段。时; 虽然不经常;我需要查询 XML 以查找元素和属性值。如果留给我自己的设备,我会倾向于使用XML数据类型,尽管我一直认为这是有问题的。所以这让我想到了我的问题。

鉴于这种情况,在尝试决定将 XML 存储在XML列中还是varchar(MAX)列中时,我应该考虑哪些因素

如果有帮助……这里有一些额外的细节:

  • 尚未决定对这些片段(例如 XSD)使用模式
  • 碎片的大小从小到大不等
  • 所有 XML 都将是格式良好的
  • 在一天的过程中,将收集多达约 10,000 个片段,需要约 3 个月的在线查询支持
  • 对 XML 的查询将全天发生,但应该保持轻量级,很少有这种类型的并发查询

schema sql-server-2008 xml database-design datatypes

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

根据时间间隔对记录进行分组

我有一个具有以下架构的表,我需要定义一个查询,该查询可以根据时间间隔(例如每分钟记录)对数据进行分组,然后提供自上一组以来对 SnapShotValue 的更改总和。目前,SnapShotValue 总是递增,所以我只需要差异的总和。任何人都可以帮助使用可能执行此操作的 SQL Server T-SQL 查询吗?我愿意更改架构,但这是我目前拥有的。

架构

CaptureTime   (datetime)
SnapShotValue (int)
Run Code Online (Sandbox Code Playgroud)

样本数据

1 Jan 2012 00:00:00,   100
1 Jan 2012 00:00:30,   125
1 Jan 2012 00:01:00,   200
1 Jan 2012 00:01:30,   300
1 Jan 2012 00:02:15,   400
1 Jan 2012 00:02:30,   425
1 Jan 2012 00:02:59,   500
Run Code Online (Sandbox Code Playgroud)

所需查询结果

1 Jan 2012 00:01:00,   225 -- Sum of all captured data changes up to the 1 minute mark
1 Jan 2012 00:02:00,   500 -- Sum of all captured …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 query t-sql

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

多少存储过程参数太多了?

我刚刚开始在 SQL Server 2008 中编写存储过程,并且有 30 多个参数。我从来没有写过一个参数超过 10 个的,这让我开始思考……什么时候参数太多了?

对于背景...这个程序基本上将INSERT单列成一个单一的表。也会有一个非常相似的;虽然有点小;在同一个表上执行UPDATE 的版本。大多数列相对较小,混合了 int 和 string (varchar(200) )。

有哪些问题;是好是坏; 有一个包含大量参数的程序,我应该开始考虑其他模式的阈值是多少?

performance sql-server-2008 database-design optimization

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

在 SQL Server 中有效地从表中删除大量行

我有一张有点失控的桌子。我本身不是 DBA,但似乎记得一次性删除大量行会导致事务日志问题,在删除过程中妨碍整体系统性能等......

有没有一种有效的方法可以让我创建一个小批量删除记录以过度阻碍其他访问/性能并防止事务日志出现问题的作业?

这个过程可能会很慢,这会有所不同

对于其他上下文,删除条件将基于诸如...之类的内容where x like '%blah%'。此外,还有 1 个聚集索引和 5 个非聚集索引。

sql-server delete t-sql jobs

11
推荐指数
2
解决办法
6万
查看次数

在 SQL Azure 中实现加密表

我正在将应用程序移至 Azure,并且需要为单个表中的几列实现 PCI 合规性。我意识到我可以在存储数据之前对其进行加密,但我想知道 SQL Azure 中是否有一个功能可以为我管理其中的一部分。我读过一些,但我不确定是什么;或者不是;SQL Azure 中支持。

我已经阅读了使用 SQL Server(而不是 SQL Azure)的模式,其中在视图后面应用了数据加密和解密。在这种情况下,所有客户端都通过视图访问数据,因此从加密/解密过程中抽象出来。这么一说,好像有点危险。

我对如何处理这种情况的任何和所有建议持开放态度。

encryption azure-sql-database

7
推荐指数
1
解决办法
3634
查看次数

这个模式模式的名称是什么

几年过去了……但我遇到了一个问题集,它让我想起了模式设计模式,我正在努力回忆细节。

本质上,该模式由一个为所有插入、更新和删除提供服务的3 NF(或其他)数据库组成。在某些定期或事件驱动的基础上,它会将其全部(或部分)状态发布到另一个针对高性能只读访问进行了优化的数据库。本质上,发布通常针对完全不同或非规范化的模式。

问题是……这是众所周知的模式吗?如果是,它叫什么,除了相同状态的重复存储之外还有什么陷阱。

schema data-warehouse database-design

6
推荐指数
2
解决办法
485
查看次数

检测是否在数值中设置了位

我有一个表示一组标志的 tinyint 列。假设我想知道是否设置了特定位,我如何在存储过程中执行按位 AND/OR 操作?

sql-server stored-procedures syntax

6
推荐指数
1
解决办法
5360
查看次数

计算组内的中值

我有一个存储过程,它计算10 分钟间隔内请求/响应周期的平均持续时间。这很有效,适合我绘制图表的需求。我接下来想做的是计算值......我怀疑我需要一个子查询,但不知道如何完成这个。

SELECT dateadd(minute, 10 + (datediff(minute, 0, [Started]) / 10) * 10, 0) AS [Time]
     ,AVG(CASE WHEN Duration is null OR Duration = 0 
              THEN null ELSE Duration 
          END) AS [Mean Response Time]
FROM [Application].[Exchange] WITH (NOLOCK)
WHERE [Started] >= '24 Oct 2012' AND [Started] < '25 Oct 2012'
GROUP BY dateadd(minute, 10 + (datediff(minute, 0, [Started]) / 10) * 10, 0) 
ORDER BY dateadd(minute, 10 + (datediff(minute, 0, [Started]) / 10) * …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server aggregate t-sql azure-sql-database

6
推荐指数
1
解决办法
1847
查看次数

将表记录导出到 INSERT 脚本

我正在为开发设置测试环境,需要从生产中的表中导出一些静态数据。理想情况下,导出的产品将采用脚本的形式,其中包含所有必需的INSERT语句。这样做,我可以在每次测试后快速重置开发环境。

谁能告诉如何使用 SQL Server 2008、SQL Management Studio 和/或 Visual Studio 2010 完成此操作?

注意:所有表都没有外键,我在源数据库中拥有完全权限,每张表的行数不超过几十行。

scripting sql-server-2008-r2

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