标签: sql-server-2012

SQL Server 聚集索引高碎片

我有一个以整数(4 字节)为主键的表。它被定义为一个身份。它也是聚集索引。

插入工作非常好。插入 2000 行后,碎片大约为 4%。

但是,每条记录之后将至少更新 3 次。这会生成超过 99% 的聚集索引碎片(使用默认填充因子)。

或者使用我测试的其他填充因子: - 将聚集索引的填充因子设置为 80(碎片 > 98%) - 将聚集索引的填充系数设置为 50(碎片 > 94%)

所以这看起来没什么帮助......

我在一个新创建的表上测试了每个填充因子设置,其中包含 2000 个插入(以及 3 个以上的更新)

没有查询中不包含主键的选择或更新。

有没有人知道为什么这个索引有这么高的碎片?

通过 ADO.NET 进行更新,这是生成的命令(由 SQL Profiler 跟踪):

exec sp_executesql N'UPDATE MyTable SET MyValue = @MyValue WHERE MyId = @MyId',
N'@MyValue varchar(50),@MyId int',@MyValue='This is some random value',@MyId=1234
Run Code Online (Sandbox Code Playgroud)

其他更新遵循相同的模式(更新其他值,但始终提供@MyId 参数)

感谢您的帮助 :)

index sql-server clustered-index fragmentation sql-server-2012

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

使用德语变音进行全文搜索

我使用德语(德国)作为全文语言创建了一个表格,在设置中我尝试将重音敏感度设置为敏感和不敏感。然而,我得到了以下奇怪的结果。

该表包含以下条目:

  • 穆勒 - 穆勒 - 穆勒
  • 卢金布尔 - 卢金布尔 - 卢金布尔

执行以下搜索

SELECT * FROM dbo.Search WHERE CONTAINS(CNameCombined, 'FORMSOF (INFLECTIONAL,  "Mueller")')
Run Code Online (Sandbox Code Playgroud)

我得到这些结果:穆勒,穆勒,穆勒

执行类似的搜索

SELECT * FROM dbo.Search WHERE CONTAINS(CNameCombined, 'FORMSOF (INFLECTIONAL,  "Luginbuehl")')
Run Code Online (Sandbox Code Playgroud)

我得到零结果。

有谁知道这种行为的原因可能是什么?它似乎适用于某些词,但不适用于所有词。

我在 Windows Server 2012 上运行 SQL Server 2012。

full-text-search sql-server-2012

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

表分区会加速我的查询吗?

我的数据库设置了我们所说的临时表和活动表。目前,我们有大约 200 万行用于名为 products 的表。我们称为制造商的客户将他们的数据加载到临时表中,当他们完成更新、添加、删除数据时,我们会将这些数据推送到我们的实时表中。

这些实时表格为移动应用程序和网站提供网络服务。将数据从 staging 推送到 live 包括删除 live 表中的所有数据和插入 staging 表中的所有数据。所有这些都由ManufacturerID存在于每个表中的一个名为的列分隔。

有些制造商有 500 种产品,有些制造商有 75,000 种产品。基于这一点,我们有时会因为对所有 200 万条记录进行分页而导致 Web 服务响应非常缓慢。从实时表中删除数据似乎也变得非常缓慢。

通过ManufacturerID帮助这种情况来分区我的产品表吗?从我读到的内容来看,这基本上意味着当我查询我的产品时,我只会查询数据库的一小部分,ManufacturerID因此整体响应时间有了巨大的改善。

sql-server partitioning sql-server-2012

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

选择特定 ID 后的行

我有以下查询,它从新闻文章表中选择。由于多种排序因素,我找不到日期的下一页。

我拥有的参数是查询结果集中的最后一个ID,那么我如何才能获取下一页...同样,我没有页面索引,我只有上一个查询结果集中的最后一个ID

SELECT        TOP (20) id, DATEDIFF(SECOND, CONVERT(DATETIME, '1970-01-01', 102), release_date) AS date, DATEDIFF(SECOND, CONVERT(DATETIME, '1970-01-01', 
                     102), edit_date) AS lastchanged, important
FROM            articles AS news WITH (NOLOCK)
WHERE        (status = 1) AND (release_date <= GETUTCDATE())
ORDER BY important DESC, date DESC, lastchanged DESC
Run Code Online (Sandbox Code Playgroud)

这是我的数据的一个例子

  id       date     lastchanged important
187346  1366070400  1345212540  1
187306  1365984000  1345290300  1
187330  1365984000  1342457880  1
187344  1363392000  1342461540  1
187343  1363392000  1342461300  1
187342  1363392000  1342459980  1
187339  1363392000  1342459800  1
187337  1363392000  1342458960  1 …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2012

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

有没有办法使用可用性组功能在 SQL Server 2012 上实现跨数据库任务?

我们使用 SQL Server 2012 及其新的可用性组 (AG) 功能。有一项任务是将某些表的旧数据从一个数据库移动到另一个数据库。两个数据库都包含在不同的可用性组中。

以前(在使用 AG 功能之前)通过将第二个服务器实例添加为链接服务器 ( sp_addlinkedserver) 并按以下方式执行分布式事务来解决该任务:

  1. 开始交易
  2. 将旧数据从 server1.table1 插入 server2.table2
  3. 从 server1.table1 中删除旧数据
  4. 提交事务

不幸的是,AG 不支持分布式事务,因为在故障转移的情况下数据库可能会变得不一致 ( http://technet.microsoft.com/en-us/library/ms366279.aspx )。

是否有某种方法可以在保留 AG 功能的情况下实现此任务,并且在发生异常时不实现回滚逻辑?

sql-server-2012 availability-groups distributed-transactions

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

了解 SQL 故障转移群集的两个 NIC 要求

我正在尝试制作 SQL Server 2012 故障转移群集。我有两台数据库机器。我知道两台机器每台都需要 2 个 NIC。在我的组织中,分配的 IP 方案类似于192.168.1.X.

所以我想知道如果我给每个网卡分配1个IP,这样就够了吗?就像分配192.168.1.50, 192.168.1.51,192.168.1.52192.168.1.53?

或者每台机器中的两个 NIC 必须有一些允许它们直接通信的专用网络方案?

clustering sql-server-2012 failover

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

SQL Server 2012 故障转移群集是否需要 MSDTC?

我正在制作一个 2 节点 SQL Server 2012 故障转移群集;我需要安装 MSDTC 组件吗?

如果是,两者都可以安装在单个共享磁盘上吗?

sql-server clustering sql-server-2012 failover msdtc

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

在 SQL Server 中使用 AD 组与角色

什么是 sql server 安全的最佳实践?使用被授予架构对象权限的 AD 组,还是应该将 AD 组添加到被授予架构对象权限的数据库角色?如果后者是最佳实践,那么使用数据库角色的真正好处是什么?

security permissions sql-server-2012

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

SQL Server 服务帐户登录名或密码无效错误

我正在尝试在 Windows 2012 Server 上安装 SQL Server 2012 Express 以进行测试。这台机器是我们公司域的一部分。

在安装过程中,我尝试将域帐户之一用于 SQL Server 数据库引擎服务,但由于以下错误而失败,

“SQL Server 服务帐户登录名或密码无效。请使用 SQL Server 配置管理器更新服务帐户。”

我已经验证了域用户和密码。并且此帐户已启用“作为服务登录”权限。我也已将此用户添加到本地管理员组,但仍然无法进行。

任何建议表示赞赏。

sql-server-2012 windows-server

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

SQL Server 中央管理服务器有什么意义?

在线 MSDN 文章“同时针对多台服务器执行语句 (SQL Server Management Studio) ”(SQL Server 2012)指出:

尽管如此,我删除了任何 CMS(中央管理服务器)实例,并且仍然在 2 台不同机器上的多个 SQL Server 上获得相同的结果

没有 SQL Server 2012 中央管理服务器

似乎我没有在在线 MSDN 中找到 SQL Server 中央管理服务器的意义(或点)的说明。
你能给我一些吗?

sql-server sql-server-2012 central-management-server

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