小编Jef*_*eff的帖子

分配更多 CPU 和 RAM 后降低 SQL Server 性能

我们在虚拟 Windows 2008 R2 服务器上运行 SQL Server 2008 R2 (10.50.1600)。在将 CPU 从 1 核升级到 4 核并将 RAM 从 4 GB 升级到 10 GB 后,我们注意到性能更差。

我看到的一些观察:

  1. 运行时间 <5 秒的查询现在需要 >200 秒。
  2. CPU 被锁定在 100,而 sqlservr.exe 是罪魁祸首。
  3. 一个有 460 万行的表上的 select count(*) 花费了 90 多秒。
  4. 服务器上运行的进程没有改变。唯一的变化是增加了 cpu 和 ram。
  5. 其他 sql 服务器有一个静态分页文件,该服务器设置为自行管理它。

有没有人遇到过这个问题?

根据 sp_BlitzErik,我跑了

EXEC dbo.sp_BlitzFirst @SinceStartup = 1;
Run Code Online (Sandbox Code Playgroud)

给我这些结果。

等待统计

performance sql-server sql-server-2008-r2 windows-server

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

防止修改 dbo 对象,同时允许修改其他模式

我有一个使用 sql server (2008r2) 数据库的供应商解决方案。我们可以在我们自己的架构中做任何我们想做的事情,但不能在没有供应商许可的情况下修改 dbo 对象。我们所做的任何定制都在我们自己的模式 (cust) 中。我们可以完全控制此服务器,并且始终允许任何开发人员拥有系统管理员权限。最近,我注意到这些规则没有得到遵守,所以我想看看我是否可以首先设置权限来阻止它。

这是我想要完成的:

表:读取/写入所有,仅更改客户模式,视图设计

Views/Sprocs/Functions:查看任何定义,仅创建或更改 cust 模式

我创建了一个新用户(dev)并应用了以下内容:

deny alter on schema::dbo to dev
grant alter on schema::custom to dev
grant view definition to dev
Run Code Online (Sandbox Code Playgroud)

这会实现我想要的,还是我错过了其他东西?

解决方案(感谢 AMtwo)

use master
go
create login dev with password = 'test', check_expiration = off, check_policy = off
grant control server to dev


use CustomerDB 
go
if not exists(select * from sys.database_principals where name = 'dev') begin
    create user dev for login dev 
    grant select, insert, …
Run Code Online (Sandbox Code Playgroud)

sql-server permissions sql-server-2008-r2

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