小编Nic*_*mas的帖子

授予用户 SQL Server SHOWPLAN 权限是否有任何风险?

我正在对大型SQL server 2008 数据库做一些性能调优,IT 组不愿意给SHOWPLAN 权限。过去,“显示执行计划”是了解单个查询和过程性能的最有效方法。

授予此权限有哪些固有风险?对数据库的开发副本进行这种限制是否有正当理由?

注意:该 SQL IT 组在单个 SQL Server 实例下拥有 200 多个数据库。谢谢。

:我认为没有回应意味着除了下面提到的风险之外没有重大的安全风险。基本上,将其限制在开发数据库上会适得其反。

如果有人提出更好的答案,我会更新。感谢您的意见!

sql-server-2008 sql-server execution-plan

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

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

表别名是不好的做法吗?

我记得在为信息服务硕士学生开设的 DBMS 课程中学习过这样做。为了节省一些输入,您可以输入:

SELECT t1.id, t2.stuff 
FROM 
              someTable    t1 
   INNER JOIN otherTable   t2 
      ON t1.id=t2.id
;
Run Code Online (Sandbox Code Playgroud)

但是......为什么这在存储过程等中是可以接受的?似乎它所做的只是损害了语句的可读性,同时节省了极少的时间。这样做是否有任何功能或逻辑原因?它似乎增加了歧义而不是消除它;我可以看到使用这种格式的唯一可接受的原因是,如果您添加了一个语义上有意义的别名——例如FROM someTable idsTable——当表名不够描述时。

表别名是不好的做法还是只是滥用有用的系统?

best-practices stored-procedures naming-convention

24
推荐指数
3
解决办法
5456
查看次数

怎么重置sa密码?

我在一台机器上丢失了sa密码,当我直接使用admin组中的帐户登录机器时,SQL Server Management Studio将不允许我使用Windows身份验证登录。

我的计划是简单地登录服务器,通过 Windows 身份验证连接,然后重置 sa 以使用新密码。由于我无法通过 Windows 身份验证连接,这将不起作用。

我还可以如何重置 sa 密码?

security sql-server-2000

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

如何强制一个记录为布尔列的值为真,而所有其他记录为假值?

我想强制一个表中只有一条记录被视为可能访问该表的其他查询或视图的“默认”值。

基本上,我想保证这个查询总是只返回一行:

SELECT ID, Zip 
FROM PostalCodes 
WHERE isDefault=True
Run Code Online (Sandbox Code Playgroud)

我将如何在 SQL 中做到这一点?

mysql database-design

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

CREATE DATABASE 与 CREATE ANY DATABASE 权限

在 Microsoft SQL Server 中,CREATE DATABASECREATE ANY DATABASE权限有什么区别?

我找不到权威的答案。我能推断出的最好结果是 (a)CREATE ANY暗示我可以创建由另一个用户拥有的数据库,而CREATE我不能,或者 (b) Sybase/早期 SQL Server 时代的原始权限曾经CREATE ANY并且CREATE被别名为ANSI 一致性。

sql-server permissions

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

重新启动 SQL Server 会加快速度吗?

我注意到一些 DBA 非常频繁地重新启动 SQL Server,有时甚至每晚都重新启动。我相信他们这样做是为了释放一些内存,或者也可能是为了加快查询速度。我知道在重新启动后必须重新编译查询计划,但即使包括这一点,我也想知道这种做法是否有净收益。

每天重新启动 SQL Server 会使其运行得更快吗?

performance sql-server maintenance

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

在大表上创建聚集索引的无痛方法?

因此,我们有一个客户站点抱怨性能严重下降。我看了一眼,很明显问题是因为别人 (grrrr) 设计了一个表,其中包含大约 2000 万多条记录,而没有聚集索引。

现在我想在该表上创建一个聚集索引 - 但在我的测试环境中 create index命令已经运行了一个小时,但仍未完成。客户站点是一个 24/7 全天候工作的车间,在我创建索引时无法承受一个小时的停机时间。

是否有一些不那么强力的创建索引的方法可以快速完成工作,或者以某种不会在服务器繁忙时完全杀死服务器性能的聪明方式来完成?

我们正在使用 SQL Server 企业版。

index sql-server-2008 sql-server sql-server-2008-r2

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

公共表表达式 (CTE) 的好处?

msdn

与派生表不同,CTE 可以是自引用的,并且可以在同一个查询中多次引用。

我经常使用 CTE,但我从未深入思考使用它们的好处。

如果我在同一个查询中多次引用 CTE:

  • 是否有任何性能优势?
  • 如果我进行自联接,SQL Server 会扫描目标表两次吗?

sql-server cte

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

跟踪存储过程的使用

除了使用 SQL Server Profiler 之外,还有什么方法可以跟踪正在使用的存储过程,或者至少是上次执行它们的时间?

sql-server-2008 sql-server statistics

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