我习惯于在非常安全的环境中工作,因此我将权限设计为非常精细的粒度。我通常做的一件事是明确地为DENY用户提供UPDATE永远不应该更新的列的能力。
例如:
create table dbo.something (
created_by varchar(50) not null,
created_on datetimeoffset not null
);
Run Code Online (Sandbox Code Playgroud)
一旦设置了值,就不应更改这两列。因此,我明确DENY了UPDATE他们的权限。
最近,在一次团队会议上,一位开发人员提出了一个观点,即确保字段永远不会更新的逻辑应该包含在应用程序层而不是数据库层中,以防“他们出于某种原因需要更新值”。对我来说,这听起来像是典型的开发人员心态(我知道,我曾经是其中之一!)
我是我公司的高级架构师,我一直遵循让应用程序运行所需的最少权限的原则。所有权限都会定期审核。
这种情况下的最佳实践是什么?
排序规则对查询速度有任何影响吗?表的大小是否根据排序规则而变化?
如果我想构建一个必须支持所有可能语言的网站(例如 Google),推荐的排序规则是什么?
我将需要存储的字符,例如???,我的搜索过的网站将有返回something的sóméthíng输入,它必须是不区分大小写也是如此。
我怎么知道哪个是最好的选择?哪种排序规则更适合这种情况?
这篇 Microsoft 文章 -如何确定 64 位版本的 Windows Server 2008 和/或 Windows 2008 R2 的适当页面文件大小提供了计算 64 位 Windows 2008 和 Windows 2008R2 的页面文件大小的指南。这无疑适用于通用服务器。我想知道在 Windows 2008/R2 64 位上运行的 SQL Server 2008R2 的指导是什么?
我假设我们希望内存中的数据尽可能少地访问页面文件,否则 SQL 可能会访问磁盘两次以获取数据。SQL Server 甚至允许内存中的数据访问页面文件吗?我已经通过SQL Server 2008 R2 联机丛书寻找指导,但还没有发现任何关于页面文件使用的提及。
这是一个潜在的使用场景:给定一个具有 64GB RAM 的物理服务器,整个 64GB RAM 是否需要一个页面文件?我们应该为 96GB 的页面文件做好准备吗?对于单个文件来说,这似乎有点过分。我知道传统观点是,Windows 将页面文件与内存结合起来,以尝试在 RAM 上更轻松地交换应用程序,但这是真的吗?小于 64GB 的页面文件会影响性能吗?
我正在根据不是主键的列对表进行分区?我今天阅读了一些关于分区列是否必须是主键的一部分的相互矛盾的信息。我的直觉说不,但我不是 100% 确定。所以问题...
我有一个非常重要、非常缓慢的视图,其中在 where 子句中包含了一些非常丑陋的条件,例如这样。我也知道连接是粗略和慢速连接varchar(13)而不是整数标识字段,但想改进下面使用此视图的简单查询:
CREATE VIEW [dbo].[vwReallySlowView] AS
AS
SELECT
I.booking_no_v32 AS bkno,
I.trans_type_v41 AS trantype,
B.Assigned_to_v61 AS Assignbk,
B.order_date AS dateo, B.HourBooked AS HBooked,
B.MinBooked AS MBooked, B.SecBooked AS SBooked,
I.prep_on AS Pon, I.From_locn AS Flocn,
I.Trans_to_locn AS TTlocn,
(CASE I.prep_on WHEN 'Y' THEN I.PDate ELSE I.FirstDate END) AS PrDate, I.PTimeH AS PrTimeH, I.PTimeM AS PrTimeM,
(CASE WHEN I.RetnDate < I.FirstDate THEN I.FirstDate ELSE I.RetnDate END) AS RDatev, I.bit_field_v41 AS bitField, I.FirstDate AS FDatev, I.BookDate AS DBooked,
I.TimeBookedH …Run Code Online (Sandbox Code Playgroud) 有没有办法在 Microsoft SQL Server 中克隆用户的安全性和权限,最好使用 SQL Server Management Studio GUI?
我只剩下 2GB 了,所以我需要删除这个历史表。该表现在为空,但数据库磁盘空间未释放。并且数据库文件是320GB。
我正在 sql server 中创建一个数据库,它显示"CREATE DATABASE permission denied in database 'master'"
我正在使用管理员登录本身的错误。我需要做什么?请建议修复!

查看数据库,我遇到了一个表,该表使用其主键作为其自身的外键。
我已经看到一个表可以有一个自身的外键来构建层次结构,但它会使用另一列来引用主键。
由于主键是唯一的,在这种情况下,该行不是只能指向自身吗?这似乎是一个同义反复的链接,因为如果我已经有了该行,那么我已经有了该行。
有什么理由这样做吗?

我确信约束是这样写的(不仅仅是查看图表),因为相同的表和列用于定义的两半。
我在 SSMS 中运行的每个查询都会附加令人讨厌的消息:“完成时间:...”。
如何禁用该文本?
sql-server ×10
permissions ×3
ssms ×2
collation ×1
foreign-key ×1
memory ×1
partitioning ×1
performance ×1
primary-key ×1
truncate ×1
view ×1
windows ×1