标签: sql-server-2008

幽灵清理

我对幽灵清理过程的理解是,每五秒它就会寻找删除索引中的幽灵记录。因此它不会使系统过载,它一次只能“清理”大约十页。

那么,这意味着它每五秒只清理大约 8 万条记录吗?似乎我的索引总是充满了幻影记录,清理工作永远不会完成。

所以,假设我运行了一次删除,可能是一百万行,而这几百万行的索引记录的大小大约为 8Gb。所以大约是 80k 差异的 100,000 倍。这是否意味着幽灵清理过程将需要 500,000 秒或几乎六天才能完成?

显然我在这里遗漏了一些东西,因为清除幻影记录需要那么长时间是没有意义的。那么达到相同索引的其他活动呢?鬼清理过程是否会导致等待,或者必须等待其他进程?

[这个问题是由我们在 OpsMgrDW 中看到的性能问题引起的,我们想了解更多关于这个过程的信息]

sql-server sql-server-2008

7
推荐指数
1
解决办法
5131
查看次数

为什么我们的 8-cpu SQL Server 机器上的 CPU 使用如此不对称?

我注意到运行 SQL Server 2008 的 8 CPU 数据库服务器上的 CPU 使用率根本不平衡。

以下是前一段时间随机一天的 1 天平均值,这是典型且始终不对称的:

9、15、10、21、18、21、14、9

(这里只有缩略图,因为图片真的很高,但点击查看全尺寸图片)

我们的4-CPU Web服务器,这些都是几乎完全和完美的平衡相比,所有的时间,让我吃惊的奇怪。

现在,这是一个专用服务器,因此唯一在其上运行的是 SQL Server 2008(以及我们大量使用的内置全文索引),所以我不确定为什么 CPU 使用率会如此不对称. 想法?

central-processing-unit smp sql-server-2008

7
推荐指数
3
解决办法
3110
查看次数

无法连接到 SQL Server 2008 - 看起来像共享内存问题

我无法使用 SQL Server Management Studio 连接到我的本地 SQL Server 2008 Express 实例。

我相信问题与我对连接协议所做的更改有关。在错误发生之前,我启用了共享内存并禁用了命名管道和 TCP/IP。然后我启用了命名管道和 TCP/IP,这就是我开始遇到问题的时候。

当我尝试使用 SSMS(使用我的 SQL 服务器系统管理员登录或使用 Windows 身份验证)连接到服务器时,我收到以下错误消息:

已成功与服务器建立连接,但随后在登录过程中出现错误。(提供程序:命名管道提供程序,错误:0 - 管道的另一端没有进程。)(Microsoft SQL Server,错误:233)

为什么它返回命名管道错误?为什么不只使用共享内存,因为它在连接协议列表中具有更高的优先级顺序?它似乎出于某种原因没有监听共享内存?

当我将命名管道设置为启用并尝试连接时,我收到相同的错误消息。

我的 Windows 帐户在我的计算机上没有管理员权限 - 也许这在某种程度上有所作为(正如这篇文章中关于“SuperSocketNetLib\Lpc”注册表项的一些讨论似乎暗示的那样)。

顺便说一下,我尝试重新启动 SQL Server 服务,还尝试让某人使用管理员帐户登录机器以重新启动 SQL Server 服务。仍然没有运气。

sql-server sql-server-2008

7
推荐指数
1
解决办法
4514
查看次数

如何配置 IIS 将日志发布到 sql server?

如何配置 IIS 将日志发布到 sql server?

如何将任何日志保存到我的网站。该网站有很多浏览量,而且数据可以在很短的时间内变得很大。此外,我想实时显示使用情况的分析。

  • 将所有日志保存在 sql-server 中是否有意义?

  • 采取这种方法有什么利弊?

  • 我还能有什么其他解决方案?

logging analytics iis-7.5 sql-server-2008 .net-4.0

7
推荐指数
1
解决办法
8785
查看次数

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

可以编辑 SQL Server 2008 链接服务器吗?是否有相当于链接服务器的 ALTER 语句?

我有一个使用 SQL Server Management Studio 2008 制作的链接服务器。

如果链接服务器目标更改,我将不得不更改它的属性以指向正确的位置。

但我不能 - 没有编辑选项!

我是否遗漏了什么,或者链接服务器不能改变?

linked-server sql-server-2008

7
推荐指数
1
解决办法
9801
查看次数

sys.dm_exec_query_stats 与重新编译的交互

我们sys.dm_exec_query_stats用来追踪慢查询和违反 IO 的查询。

这很好用,我们得到了很多非常有见地的统计数据。很明显,这不如运行探查器跟踪准确,因为您不知道 SQL Server 何时决定放弃执行计划。

我们有很多查询缓存了错误的执行计划。例如如下查询:

选择前 30 名
        援助
FROM 帖子 a
        加入帖子 q ON q.Id = a.ParentId
        加入 PostTags pt ON q.Id = pt.PostId
哪里 a.PostTypeId = 2
        并且 a.DeletionDate 为 NULL
        并且 a.CommunityOwnedDate 为 NULL
        AND a.CreationDate > @date
        AND LEN(a.Body) > 300
        AND pt.Tag = @tag
        AND a.Score > 0
按 a.Score DESC 排序

问题是理想计划实际上取决于所选日期(理想计划的屏幕截图):

理想计划

但是,如果缓存了错误的计划,则当日期范围很大时它会完全窒息:(注意大粗线)

错误的计划

为了克服这个问题,我们建议使用OPTION (OPTIMIZE FOR UNKNOWN)OPTION (RECOMPILE)

OPTIMIZE FOR UNKNOWN导致一个稍微好一点的计划,这远非最佳。执行在sys.dm_exec_query_stats.

RECOMPILE结果是选择了最佳计划,但是 …

performance sql-server sql-server-2008

7
推荐指数
1
解决办法
622
查看次数

如何在 SQL Server 2008 中备份/恢复不包括文件流 varbinary?

生产站点中使用了一个应用程序,该应用程序使用 SQL Server 2008 作为其 DBMS。

数据库模式使用 Filestream Varbinary 将二进制数据保存在文件系统上,而不是直接保存到数据库表中。

关键是时不时在开发机器上复制生产数据库会很有用,主要是为了进行故障排除。数据库太大了,无法轻松地移动它,但是如果可以移动它而忽略文件流 varbinary 字段就可以了。

换句话说,我正在尝试制作数据库的“不完美”副本:即,在目标数据库上,可以使用 NULL 值而不是 varbinary。这可能吗?我尝试在 SQL Server Management Studio 上寻找该功能并进行了排除包含文件流 varbinary 的文件组的备份,但我无法恢复:MSSMS 抱怨无法完成恢复,因为备份不完整(当然)。

是否有可能以某种方式实现我想要做的事情?

filestream sql-server-2008 database-backup

6
推荐指数
1
解决办法
2197
查看次数

尝试添加域用户时出现 SQL Server 2008 R2 错误 15401

我正在尝试添加域用户。我正在做以下事情。

  1. 展开安全
  2. 右键单击登录
  3. 选择新登录...
  4. 登录名选择搜索
  5. 单击位置并选择整个目录
  6. 输入用户名
  7. 单击检查名称
  8. 名称带有下划线并添加更多信息
  9. 单击确定
  10. 单击确定

然后我收到以下错误: 15401 错误

我找到了http://support.microsoft.com/kb/324321

  • 登录名确实存在
  • 没有重复的安全标识符
  • 我认为不会发生身份验证失败,因为我可以浏览 AD
  • 区分大小写不应该是问题,因为我正在检查名称并且正在纠正它。
  • 不是本地帐户
  • 再次名称解析我可以看到AD

我已经重新启动了服务器 (VM),但问题仍然存在。有任何想法吗?

编辑

我也有:

  • 域成员:数字加密安全通道数据(如果可能)– 禁用此策略
  • 域成员:对安全通道数据进行数字签名(如果可能)– 禁用此策略
  • 重启服务器

http://talksql.blogspot.com/2009/10/windows-nt-user-or-group-domainuser-not.html

编辑 2

我也有:

  • 对安全通道数据进行数字加密或签名(始终)- 已禁用
  • 重新启动

编辑 3

由于问题已转移到网站,我不再有权发表评论等...

我已经检查了服务器上的 dns 到它正在工作的机器上。两者的 DNS 服务器相同...

sql sql-server sql-server-2008

6
推荐指数
1
解决办法
8549
查看次数

sql server 2008的双跳问题

我正在尝试设置以下场景。我有3台服务器,它们都在同一个域中。

  • 服务器 A 具有在(域)服务帐户 dom\web 下运行的 Web 应用程序。
  • 服务器 B 有 SQL Server 2008 R2 的实例,它在(域)服务帐户 dom\sql 下运行。
  • 服务器 C 有 SQL Server 2008 R2 的实例,它在(域)服务帐户 dom\sql 下运行。

服务器 B 和 C 位于 SQL 群集中。B 和 C 的实例是链接服务器。

当我从 A 运行 SQL Server Management Studio 并使用我的域帐户 (dom\usr) 连接到 B 时,我尝试执行从 B 和 C 中选择数据的查询并且它工作正常。

当我尝试尝试相同的 Web 应用程序时,出现错误:

用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。

我看到 SQL 中的连接对用户 dom\web 具有 auth_scheme KERBEROS,因此它不是 NTLM。

此外,dom\web 域帐户在 AD 中没有选择“帐户是敏感的,不能被委派”选项。

我还认为 SPN 设置正确,因为双跳在第一种情况下不起作用。

这是服务器 C 上的错误:

源登录

用户“NT …

linked-server sql-server sql-server-2008

6
推荐指数
1
解决办法
9544
查看次数