标签: sql-server

应该避免 dbo 模式吗?

当涉及到 dbo 架构时:

  • 在创建数据库对象时避免使用 dbo 模式是最佳实践吗?
  • 为什么应该避免或应该避免 dbo 模式?
  • 哪个数据库用户应该拥有 dbo 模式?

schema sql-server-2008 sql-server best-practices

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

在递归公用表表达式中使用 EXCEPT

为什么以下查询返回无限行?我本来希望该EXCEPT条款终止递归..

with cte as (
    select *
    from (
        values(1),(2),(3),(4),(5)
    ) v (a)
)
,r as (
    select a
    from cte
    where a in (1,2,3)
    union all
    select a
    from (
        select a
        from cte
        except
        select a
        from r
    ) x
)
select a
from r
Run Code Online (Sandbox Code Playgroud)

我在尝试回答Stack Overflow 上的一个问题时遇到了这个问题

sql-server-2008 sql-server execution-plan recursive except

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

该登录名已有一个不同用户名的帐户

当我执行此 SQL 时:

USE ASPState
GO
IF NOT EXISTS(SELECT * FROM sys.sysusers WHERE NAME = 'R2Server\AAOUser')
CREATE USER [R2Server\AAOUser] FOR LOGIN [R2Server\AAOUser];
GO
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

该登录名已有一个使用不同用户名的帐户。

我怎么知道我的登录帐户的这个不同的用户名是什么?

security sql-server logins

33
推荐指数
1
解决办法
8万
查看次数

EF Code First 对所有字符串使用 nvarchar(max)。这会损害查询性能吗?

我有一些使用 Entity Framework Code First 创建的数据库;应用程序正在运行,总的来说,我对 Code First 让我做的事情感到非常满意。我首先是一名程序员,其次是 DBA,这是必要的。我正在阅读 DataAttributes 以在 C# 中进一步描述我希望数据库执行的操作;我的问题是:将这些nvarchar(max)字符串放在我的桌子上会吃什么惩罚(见下面的例子)?

在这个特定的表中有几列;在 C# 中,它们是这样定义的:

    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public string Name { get; set; }
    public string Message { get; set; }
    public string Source { get; set; }
    public DateTime Generated { get; set; }
    public DateTime Written { get; set; }
Run Code Online (Sandbox Code Playgroud)

我希望根据名称、来源、生成和书面内容进行查询和/或排序。我希望 Name 和 Source 的长度为 0-50 个字符,有时可达 150 个。我希望这个表开始时很小(<100k 行),但随着时间的推移显着增长(>1m 行)。显然消息可以是小或大的,并且可能不会被查询。

我想知道的是,我的 Name 和 Source …

sql-server entity-framework sql-server-2008-r2 azure-sql-database

33
推荐指数
4
解决办法
7万
查看次数

CPU 时钟速度与 CPU 核心数 - 更高的 GHz,还是 SQL Server 的更多核心?

我们开始为 VMware 中的 SQL Server 2016 节点虚拟集群提供一组物理服务器。我们将使用企业版许可证。

我们计划设置 6 个节点,但关于在 CPU 时钟速度与 CPU 核心数方面配置物理服务器的理想方式存在一些争论。

我知道这在很大程度上取决于交易量和存储的数据库数量以及其他特定于软件的因素,但是否有建议的一般经验法则?

例如,双 8 核 3.2 GHz 物理服务器(16 核)是否比双 16 核 2.6 GHz 服务器(32 核)更优惠?

有没有人遇到过进一步深入研究此类主题的白皮书?

performance sql-server clustering hardware vmware

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

内联变量时,为什么 SQL Server 使用更好的执行计划?

我有一个要优化的 SQL 查询:

DECLARE @Id UNIQUEIDENTIFIER = 'cec094e5-b312-4b13-997a-c91a8c662962'

SELECT 
  Id,
  MIN(SomeTimestamp),
  MAX(SomeInt)
FROM dbo.MyTable
WHERE Id = @Id
  AND SomeBit = 1
GROUP BY Id
Run Code Online (Sandbox Code Playgroud)

MyTable 有两个索引:

CREATE NONCLUSTERED INDEX IX_MyTable_SomeTimestamp_Includes
ON dbo.MyTable (SomeTimestamp ASC)
INCLUDE(Id, SomeInt)

CREATE NONCLUSTERED INDEX IX_MyTable_Id_SomeBit_Includes
ON dbo.MyTable (Id, SomeBit)
INCLUDE (TotallyUnrelatedTimestamp)
Run Code Online (Sandbox Code Playgroud)

当我完全按照上面写的方式执行查询时,SQL Server 扫描第一个索引,导致 189,703 次逻辑读取和 2-3 秒的持续时间。

当我内联@Id变量并再次执行查询时,SQL Server 寻找第二个索引,导致只有 104 次逻辑读取和 0.001 秒的持续时间(基本上是即时的)。

我需要变量,但我希望 SQL 使用好的计划。作为临时解决方案,我在查询上放置了索引提示,查询基本上是即时的。但是,我尽量避免使用索引提示。我通常假设如果查询优化器无法完成它的工作,那么我可以做(或停止做)一些事情来帮助它,而无需明确告诉它该做什么。

那么,当我内联变量时,为什么 SQL Server 会提出更好的计划?

performance sql-server execution-plan

33
推荐指数
2
解决办法
6205
查看次数

在哪里可以找到用于学习的数据库调优练习?

作为开发人员,DBA 通常负责解决数据库级别的性能问题,因此我们在诊断、调优、重构查询等方面没有太多经验。

我正在寻找一个包含大量表、数据、查询、触发器、SP 等的数据库,其中存在故意的性能问题,并希望有一系列练习,您可以在其中尝试识别和解决问题。理想情况下,这将在 MS SQL 服务器上。

有人知道这种事情吗?

sql-server database-tuning

32
推荐指数
2
解决办法
2367
查看次数

获得随机排序的最佳方法是什么?

我有一个查询,我希望随机排序结果记录。它使用聚集索引,所以如果我不包括order by它,它可能会按照该索引的顺序返回记录。如何确保随机行顺序?

我知道它可能不是“真正的”随机,伪随机足以满足我的需要。

sql-server

32
推荐指数
4
解决办法
5万
查看次数

每个实例是否有 SQL Server Express 内存和 CPU 限制?

如果我在服务器中有 8GB 的​​ RAM 并且我运行 4 个 SQL Server Express 实例,那么 SQL Server 使用的总内存限制是 1GB 还是 4GB?

是否建议像这样运行多个实例以使每个数据库都能更好地利用资源(假设服务器有足够的资源)?

sql-server instance memory sql-server-express

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

从未知来源恢复备份的安全隐患?

场景:您收到了一个数据库备份,并被告知将其还原到服务器(该服务器已经托管了其他数据库),但没有提供有关备份包含的内容或源是否应受信任的有用信息。

问题 1:恢复很可能是恶意的备份有什么潜在影响?

问题 2:您可以采取哪些措施来保护您的服务器/其他数据库中的数据免受恢复潜在恶意备份的影响?RESTORE VERIFYONLY似乎是一个很好的第一步。最终的答案可能是“在无法访问外部世界的沙箱 VM 中恢复数据库”,但让我们假设该选项不在表中。在这种情况下还应该做什么?

security sql-server backup

32
推荐指数
6
解决办法
2484
查看次数