AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-530

BradC's questions

Martin Hope
BradC
Asked: 2009-09-16 08:57:32 +0800 CST

拒绝所有系统存储过程的 SQL 权限

  • 0

继我最初的StackOverFlow 问题之后,我们正在尝试创建一个 SQL 用户(在许多 2000、2005 和 2008 服务器上),它具有执行简单“心跳检查”以确保实例仍然存在的最低可能权限。我们已经确定脚本执行一个简单的“SELECT @@VERSION”。

不过,以“最小允许权限”的名义,我们希望阻止该用户(几乎)做任何其他事情。不幸的是,即使没有添加任何显式权限,PUBLIC 角色(所有用户都是其成员)也可以做很多事情。具体来说:

SELECT * FROM SYSDATABASES
好的,我可以显式地将用户添加到 MASTER 数据库中的 db_denydatareader 角色中,以防止读取任何系统表

SP_WHO
好的,我可以明确拒绝 SP_WHO 上的所有内容,但是 SP_WHO2 和所有其他系统存储的过程呢?我必须明确否认所有这些吗?

因此,由于用户不能从 PUBLIC 角色中删除,还有其他方法可以阻止系统存储过程的运行,而不是对每个人都明确拒绝?

系统存储过程是否值得担心?除了 sp_who 之外我真的不希望该用户能够看到的任何内容?

sql-server
  • 3 个回答
  • 1436 Views
Martin Hope
BradC
Asked: 2009-09-09 06:30:01 +0800 CST

重新启动时自动启动 Windows Server 2003 Perfmon 计数器日志

  • 3

试图弄清楚如何确保特定的 Windows Perfmon 计数器日志在服务器重新启动时自动恢复日志记录。

这是一个 Windows 2003 Server,所以很可能不会有任何人在重新启动后立即登录。我看到了这个类似的问题,但不认为计划任务在没有人登录的情况下执行......

编辑:好的,看起来计划任务可以设置为在每个服务器启动时运行一个命令,但还有几个问题:

  • 在“计划”选项卡上,我应该将“开始日志”和“停止日志”都保留为“手动”吗?然后使用LOGMAN START 命令?
  • 我看到了一些其他的网络参考,而不是将“停止日志”设置为 1 天,并选中“当日志文件关闭时:启动新的日志文件”复选框。这种方法有什么好处吗?如果没有明确的 LOGMAN START 命令,它是否能够识别并在重新启动后幸存下来?
  • 设置选项卡上的任务计划程序 UI 有一个标记为“如果任务运行时间...则停止”的框,默认为 72 小时。如果我不删除此检查,它会在服务器启动 72 小时后停止我的日志吗?

最后一个策略问题:如果我想在短时间内以这种方式监控少量服务器,我最好直接在每台服务器上设置这些监控器,还是直接在我的工作站上运行,远程收集数据?

windows-server-2003
  • 5 个回答
  • 12061 Views
Martin Hope
BradC
Asked: 2009-08-26 09:56:15 +0800 CST

看不到使用 KILL WITH STATUSONLY 回滚 SPID 的进度

  • 2

我在 SQL 2005 上有一个 SPID,它在活动监视器中显示为“ROLLBACK”模式(因为事务日志已填满,而不是因为它被手动杀死)。我试图看看它还剩下多少时间来回滚

KILL 115 WITH STATUSONLY

但它只是说“无法获取状态报告。进程 ID 115 的回滚操作未进行。”

我可以安全地发出“KILL 115”以便查看回滚状态吗?这实际上对当前正在回滚的 spid 有什么作用吗?

sql-server rollback
  • 3 个回答
  • 5753 Views
Martin Hope
BradC
Asked: 2009-08-20 06:20:45 +0800 CST

如果正在运行完整备份,则跳过日志备份

  • 3

在我的一些 SQL2000 服务器上,我的完全备份和日志备份作业之间偶尔会出现阻塞和奇怪的冲突。根据对这个 SF question 的回答,我需要弄清楚如何防止我的日志文件备份在我的完整备份在同一个数据库上运行时运行。(听起来这在 SQL2005 中已更改,因此对他们来说应该不是问题。)

我想到了两种策略:

  1. 在执行整个日志备份作业之前,查询 MSDB 作业历史记录表以查看我们的夜间完整备份作业的备份步骤(第 3 步,共 5 步)当前是否正在执行。如果是,请完全跳过所有数据库的日志备份。

  2. 在日志备份作业脚本中,在单个数据库上运行日志备份之前,查询 sysprocess 表(或其他东西)以查看该特定数据库是否已经发生 LIGHTSPEED BACKUP。如果是,则仅跳过该数据库上的日志备份。

第一个会更容易实现,但最终会跳过许多它可能可以毫无问题地备份的数据库(可能允许日志增长太多)。第二个更有吸引力,但我不确定如何确定特定数据库的备份是否正在进行中。

另外,使用第二个选项时,完整备份可能会开始备份日志备份已经在处理的数据库,除非我在完整备份脚本中添加相同类型的“检查代码”。(显然,我希望完整的优先于日志备份作业)

任何人都有一个已经执行此操作的现有 SQL 2000 脚本吗?哪种方法最值得考虑?或者还有其他选择吗?

sql-server backup
  • 2 个回答
  • 3156 Views
Martin Hope
BradC
Asked: 2009-08-17 08:52:17 +0800 CST

在不加载所有数据库的情况下启动 SQL 2000?

  • 2

有没有办法在不加载特定数据库的情况下启动 SQL 2000 实例?我们有一个数据库在数据库恢复过程中的某个时间点使服务器崩溃,我们将尝试从备份中恢复。但是当实例不断重启时,我们无法启动恢复。

(如果你很好奇,一个巨大的表重新索引坏了。它被取消了,并试图回滚,但由于某种原因,SQL 服务在回滚期间重新启动了自己。现在我们处于服务的情况重新启动,它尝试恢复数据库,然后在中间的某个地方卡住并再次重新启动服务。)

任何帮助或想法表示赞赏。

sql-server
  • 1 个回答
  • 291 Views
Martin Hope
BradC
Asked: 2009-07-01 12:34:28 +0800 CST

从 MSDB 备份中恢复特定作业定义?

  • 4

我们被要求从过去某个时间存在的特定 SQL 2005 作业中恢复它。我们有那个时期的 MSDB 数据库备份,但我无法覆盖当前的 MSDB 数据库,因为我不想丢失对该服务器上其他作业的最新更改。

如果我将其还原为副本(称为 MSDB_old 或其他名称),我如何提取该作业的信息?或者我需要通过临时服务器上的 MSDB 数据库来恢复它吗?

sql-server sql-server-2005
  • 5 个回答
  • 14449 Views
Martin Hope
BradC
Asked: 2009-06-30 14:24:43 +0800 CST

当前对 SQL Server 和超线程的看法?

  • 7

那里有很多文章(请参阅Slava Oks 的原始 SQL 2000 文章和Kevin Kline 的 SQL 2005 更新)建议在 SQL 服务器上禁用超线程,或者至少在您的服务器上启用它之前测试您的特定工作负载。

随着真正的多核处理器取代超线程处理器,这个问题逐渐变得不那么重要,但目前在这个问题上的智慧是什么?此建议是否对 SQL 2005 64 位、SQL 2008 或 Windows Server 2008 有任何更改?

理想情况下,这应该提前在暂存环境中进行测试,但是对于已经投入生产并启用了 HT 的服务器呢?如何判断我们遇到的性能问题是否与 HT 相关?与我在提高 SQL 性能时通常追求的所有其他事情相反,是否有一些特定的 perfmon 计数器组合可能会将我指向那个方向?

编辑:这特别有吸引力,因为我的一些高 cpu 服务器有可能全面改进,但客户希望看到一些具体的东西,帮助我确定哪些服务器真正可以从禁用超线程中受益。当然,传统的性能故障排除仍在进行中,但有时任何一点点都会有所帮助。

sql-server hyperthreading
  • 3 个回答
  • 8311 Views
Martin Hope
BradC
Asked: 2009-06-30 11:15:08 +0800 CST

从备份中恢复 SQL 数据库是否会重建其索引?

  • 10

从备份中恢复 SQL 数据库是否会从头开始重建其表和索引?或者它是否保持与备份时相同的内部物理顺序?

我们正在使用带有 Quest Lightspeed 压缩备份的 SQL 2000,如果这有什么不同的话。

sql-server restore
  • 4 个回答
  • 18190 Views
Martin Hope
BradC
Asked: 2009-06-25 06:29:58 +0800 CST

SQL 数据库物理文件碎片

  • 19

我知道作为 DBA,我确实需要关注三种碎片:

  1. SQL 数据文件中的索引碎片,包括聚集索引(表)碎片。使用 DBCC SHOWCONTIG(在 SQL 2000 中)或 sys.dm_db_index_physical_stats(在 2005+ 中)识别这一点。

  2. SQL 日志文件中的VLF 碎片。运行 DBCC LOGINFO 以查看每个 SQL 日志文件中有多少 VLF。

  3. 硬盘驱动器上数据库文件的物理文件碎片。使用 Windows 中的“磁盘碎片整理程序”实用程序对此进行诊断。(受这篇优秀博文的启发)

很多注意力都放在了索引碎片上(请参阅Paul Randall 提供的这个出色的 Serverfault 答案),所以这不是我的问题的重点。

我知道在最初创建数据库时,我可以通过规划合理的预期数据文件和日志大小来防止物理碎片(和 VLF 碎片),因为这种碎片最常发生在频繁的增长和缩小中,但我有一些关于如何修复的问题一旦识别出物理碎片:

  • 首先,物理碎片是否与企业 SAN 相关?我可以/应该在 SAN 驱动器上使用 Windows Defragmenter,还是 SAN 团队应该使用内部碎片整理实用程序?在 SAN 驱动器上运行时,我从 Windows 工具获得的碎片分析是否准确?

  • 物理碎片对 SQL 性能的影响有多大?(让我们假设一个内部驱动器阵列,等待上一个问题的结果。)它比内部索引碎片更重要吗?还是真的是同一种问题(驱动器必须进行随机读取而不是顺序读取)

  • 如果驱动器是物理碎片的,那么碎片整理(或重建)索引是否浪费时间?我需要先解决一个问题,然后再解决另一个问题吗?

  • 在生产 SQL 机器上修复物理文件碎片的最佳方法是什么?我知道我可以关闭 SQL 服务并运行 Windows Defrag,但我也听说过一种技术,您可以进行完整备份,删除数据库,然后从备份恢复到空驱动器。推荐后一种技术吗?从这样的备份中恢复是否也会从头开始构建索引,从而消除内部索引碎片?或者它只是将页面顺序返回到与进行备份时相同的顺序?(如果重要的话,我们正在使用带有压缩功能的 Quest Lightspeed 备份。)

更新:到目前为止,关于是否对 SAN 驱动器进行碎片整理(否)以及索引碎片整理是否仍然值得在物理碎片驱动器上进行(是)的良好答案。

还有其他人关心实际进行碎片整理的最佳方法吗?或者估计您预计对大型碎片驱动器进行碎片整理所需的时间长度,例如 500GB 左右?很明显,这是相关的,因为那是我的 SQL 服务器将关闭的时间!

此外,如果有人有任何关于您通过修复物理碎片来改进 SQL 性能的轶事信息,那也很好。Mike 的博客文章谈到了发现问题,但没有具体说明它做了什么样的改进。

sql-server fragmentation
  • 6 个回答
  • 12151 Views
Martin Hope
BradC
Asked: 2009-06-25 04:56:49 +0800 CST

连接到 SQL 2005 的零星连接问题 - 命名管道与 TCP/IP 问题?

  • 3

我们有一个生产网站,在使用高峰期每天多次遇到 SQL 2005 服务器连接错误:

建立与服务器的连接时发生错误。连接到 SQL Server 2005 时,此故障可能是由于在默认设置下 SQL Server 不允许远程连接造成的。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)

我们当然正在调查其他途径,但到目前为止,我们还没有在 SQL 方面看到任何异常情况。我们想知道这是否可能是命名管道问题,或者如果我们强制 Web 服务器改用 TCP/IP,我们是否会看到同样的情况。所以我的问题是:

  • 有人见过这样的问题吗?我对这个错误所做的大部分搜索都是针对那些因为表面区域配置混乱而根本无法与他们的 SQL 服务器交谈的人。那不是我们的情况。
  • 两者有什么区别?他们是否以不同的方式进行名称解析?这些服务器不是域成员,它们被隔离在自己的 DMZ 中,如果这有任何改变的话。
  • 互联网团队在 Web 服务器上设置了 SQL 别名:“mySQLserverName - tcp/ip - xxx.xx.x.xx, 1433”。这是否仅用于 TCP/IP 解析,而不用于命名管道?这可能是问题的一部分吗?
  • 如果我确实想强制使用 TCP/IP 而不是命名管道,那么推荐的方法是什么?这个 Microsoft KB说我可以通过修改连接字符串来做到这一点。这个 MSDN 论坛帖子说我可以修改本机客户端配置协议的“首选顺序”。我想我也可以完全禁用 SQL 服务器上的命名管道,但这似乎有点激烈,并且可能不是在生产机器上尝试的东西。
sql-server tcpip
  • 2 个回答
  • 2460 Views
Martin Hope
BradC
Asked: 2009-06-04 12:53:11 +0800 CST

更新统计实际上会降低性能?

  • 1

我在生产数据库上有一个夜间 sp_updatestats,它似乎工作正常,除了一个特定的存储过程在更新后遇到性能问题。

开发团队目前正在修复 proc(我推荐的一些新索引和一些查询重组),但目前唯一的解决方法是做一个

UPDATE STATISTICS [SuperGiantTable]
WITH FULLSCAN

所以,问题是,我可以强制 sp_ updatestats 执行“with fullscan”选项吗?我想要吗?如果没有,那么我可能只是在 UPDATE STATISTICS 命令上方添加此命令,以便在 sp_updatestats 之后立即运行。

SQL 2000,顺便说一句。

sql-server indexes
  • 3 个回答
  • 5340 Views
Martin Hope
BradC
Asked: 2009-05-08 15:16:12 +0800 CST

不用注意幕后的 SAN

  • 37

曾几何时,我构建了自己的 SQL 服务器,并且可以控制驱动器配置、RAID 级别等。分离数据、日志、临时数据库、备份(取决于预算!)的传统建议始终是非常重要的部分SQL 服务器的设计过程。

现在有了企业级 SAN,我只需为新的 SQL 服务器请求特定数量的驱动器空间,划分为用于数据、备份和文件共享的逻辑驱动器。当然让我的工作更轻松,但我的一部分感觉并不完全舒服,我无法真正窥视“幕后”,看看背后到底发生了什么。

我的理解是,SAN 团队不会以任何不同的方式配置不同“类型”的驱动器(针对随机访问优化数据驱动器与针对流式写入优化日志驱动器)。其中一些可能取决于 SAN 产品本身(我们有 HP XP12000 和 HP XP24000),但我确信 HP 软件会执行各种动态性能配置(监视 IO 热点并即时重新配置优化这些 LUN),以便应用程序团队和 DBA 无需担心任何这些问题。关于“将所有服务器的负载分散到大量主轴上”或类似的东西。

我的问题/讨论:

  1. 在不与 SAN 团队树敌的情况下,我如何才能让自己和应用程序开发人员确信我们的 SQL 服务器没有受到配置不当的存储的影响?只使用 perfmon 统计信息?其他基准,例如 sqlio?

  2. 如果我在这些 SAN 驱动器上进行负载测试,这是否真的给了我一个可靠的、可重复的衡量标准,以衡量我们上线时将看到的内容?(假设 SAN 软件可能在不同的时间点以不同的方式“动态配置”。)

  3. SAN 的一部分(比如 Exchange 服务器)中的大量 IO 是否会影响我的 SQL 服务器?(假设他们没有为每台服务器提供专用磁盘,我被告知他们没有)

  4. 请求为不同功能的逻辑驱动器(数据、日志和临时数据库)分离逻辑驱动器会有所帮助吗?SAN 会在这些设备上看到不同的 IO 活动并以不同方式对它们进行最佳配置吗?

  5. 我们现在有点空间紧张。应用程序团队被告知要修剪数据存档等。空间问题是否会导致 SAN 团队就他们如何配置可能影响服务器性能的内部存储(RAID 级别等)做出不同的决定?

感谢您的想法(此 SF question 中简要讨论的类似主题)

sql-server performance storage-area-network
  • 5 个回答
  • 1628 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve