理论上,SQL Server 中的每条语句都会创建传递给下一条语句的虚拟表。换句话说,当完成 FROM 和 Where 子句后,下一步是从之前创建的虚拟组中选择列。
但是,可以按选择列表中未列出的列对结果集进行排序。
当 SELECT 子句在 ORDER BY 之前执行并且哪个主要任务是选择要呈现的列时,这怎么可能?
这有点令人困惑,或者我没有得到一些东西。
我在我的一台生产服务器上运行了 Brent Ozar 的 sp_blitz。IT 将 MSDB 数据库中的一些表标记为是用户创建的。它们都遵循 dbo.DTA_* 模式。这些表是随 MSDB 一起提供的,还是由某事/某人添加的?
我遇到以下错误:
Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.
Run Code Online (Sandbox Code Playgroud)
当我尝试这些命令时
USE ASPState
GO
GRANT EXECUTE ON CreateTempTables TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON DeleteExpiredSessions TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON GetMajorVersion TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON GetHashCode TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetAppID TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem2 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem3 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive …Run Code Online (Sandbox Code Playgroud) 我sp_spaceused在我们的软件中执行操作之前和之后使用内置存储过程来查看哪些表具有行插入以及每个表的大小如何变化。
我所看到的是,在所有将行写入其中的表中,只有少数显示表的侧面增加。其他显示行已添加的显示与此存储过程的大小没有变化。
唯一不正确的情况是在对所有表执行截断后的第一个事务上。所以对我来说,似乎 SQL Server 在存储重复数据时显示插入了行,但必须只存储指向以前相同行的指针。
任何人都可以确认这一点吗?
我有一个连接到 SAN 的 SQL Server。我们的新存储供应商建议所有 LUN 跨越整个磁盘阵列,即 RAID5。我通常会向 SAN 管理员请求 3 个单独的 LUN(数据、日志和 TempDB),但鉴于新供应商的建议,创建单独的 LUN 有什么意义吗?或者,如果所有内容都在一个 LUN 中,我会看到相同的性能,因为它无论如何都会跨越所有磁盘?
这里的文章很棒,但并没有完全解决我的确切情况:http : //www.brentozar.com/archive/2008/08/sql-server-on-a-san-dedicated-or-shared-drives/
我本身没有问题,但我注意到如果我向数据库中不存在的主体授予数据库权限,该权限会显示在 sys.database_permissions 中,但用户无法连接到数据库(如预期)。如果我再给grant connect用户,一切都很好。这让我想知道create user和 是否grant connect在功能上是等效的。也就是说,有什么额外的那create user确实是grant connect不?
我需要更新一个大小约为 18GB 的 SQL Server 数据库,以将大量TEXT列更改为NVARCHAR(MAX).
我遇到的问题是在执行完所有alter table命令后,数据库的大小最终接近 26GB。我知道从这里开始使用NVARCHAR(MAX)将使数据库增长得更慢,但有什么办法可以防止这种膨胀?
我们的生产 SQL Server 2005 数据库的数据文件位于一个单独的物理驱动器上,Microsoft Windows 2003 的磁盘碎片整理程序工具报告为 99% 是碎片化的。
我们安排了一个任务,在星期六早上 3:00 对这个驱动器进行碎片整理。作业在 40 分钟后完成,没有明显错误。但是,驱动器仍然严重碎片化。
我们应该在整理碎片之前停止 SQL Server 服务吗?
语境
每个上下文请求:我们有一个 Microsoft SQL Server 2005 实例 (9.00.5324.00) 在 Dell PowerEdge 2950 硬件上运行 32 位 Windows Server 2003 (SP2),大约 2007 年,具有 4GB RAM。PowerEdge 2950 有四个 68GB 驱动器配置为 RAID-1 以创建两个 68GB 虚拟磁盘:(1) C(引导和操作系统)&D(页面文件,其他杂项数据);(2) E(SQL 数据)。据我所知,IT 人员从未对这些驱动器进行过碎片整理……磁盘碎片整理程序报告的文件碎片率为 66% (C)、77% (D) 和99% (E)。性能监视器报告以下平均结果:“分页文件:使用率百分比”= ~6.8%;“SQL Server:缓冲区管理器 - 页面预期寿命”= 20 秒;和“PhysicalDisk:平均磁盘秒/写入,驱动器 E”= 之间 300 和 1,. 我们将在几个月内进行急需的硬件和 SQL Server 升级(即,新硬件、64 位 Windows …
在 Visual Studio 设计器中,您可以右键单击 SSIS 包并将其指定为“入口点”包”

值 1 表示要直接启动包。值 0 表示该包由另一个执行包任务的包启动。默认值为 1。
启用和禁用此标志后,我就可以直接执行包。
启用或禁用此标志的目的是什么?仅仅是为了记录您自己的 SSIS 包的意图,还是 SQL Server/SSIS 在启用或禁用时的行为会有所不同?
我们现在为我们的数据库配备了一台新服务器,除此之外,我们还有 128GB 的 RAM 可用(以前我有 16GB)。我知道 SQL Server 非常擅长管理它的资源,但我想知道是否应该在服务器/数据库设置或处理代码(存储过程/索引等)中使用任何特殊设置或策略来确保 SS可用内存的最佳优势。
DB 大约 70GB,它是一个非事务性数据库(它是一个数据仓库)。所以基本上大写然后大量读是事情的正常流程。
sql-server ×10
storage ×2
hardware ×1
maintenance ×1
performance ×1
permissions ×1
san ×1
sp-blitz ×1
ssis ×1