小编Mat*_*t M的帖子

SQL大表设计

我有一个关于 SQL Server 2008 表设计的一般问题。我们目前有一个超过 600GB 的表,并且每天增长大约 3GB。此表具有适当的 indecies,但在运行查询时正成为主要问题,并且仅因为它的大小。问题是我应该按年和月将表拆分为多个表(这将适合其他部门拆分其大数据集的方式)还是我们应该利用 SQL Server 中内置的分区。使用分区似乎需要较少的代码更改。根据我在分区时阅读的内容,您仍然只查询一张表,服务器处理如何获取数据。如果我们走多表路线,我们将不得不处理从多个表中提取数据。

sql-server-2008 database-design partitioning

17
推荐指数
2
解决办法
3483
查看次数

如何在 SQL Server 2008 中找到损坏的页面

我知道我可以执行 aDBCC CHECKDB并获取我的数据库的状态。

问题

  • 如何找到我的数据库中是否有损坏的数据页?
  • 如果由于页面损坏而引发错误,我在哪里可以找到哪些页面已损坏?
  • 我怎样才能找出每个损坏页面的页码。

谁能告诉我在哪里可以找到这些页面 ID?

sql-server-2008 corruption

11
推荐指数
1
解决办法
6412
查看次数

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

我有一个集群环境,其中有很多实例。我修改了 xml 文件以允许多个实例使用 ssis。当实例与集群 ssis 位于同一节点上时,一切正常。但是,如果它们位于不同的节点上,则似乎存在身份验证问题,并且会丢失我的凭据。出于某种原因,它尝试使用匿名登录。这是完整的错误:

SSIS 服务配置中指定的 SQL 服务器不存在或不可用。当计算机上没有 SQL Server 的默认实例时,可能会发生这种情况。有关详细信息,请参阅 Server 2005 联机丛书中的“配置集成服务服务”主题。

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

我很感激任何人在这个问题上的帮助。

谢谢,

authentication sql-server

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

完整计划缓存行为

在 SQL Server 2005 中,当计划缓存填满时会发生什么?我做了一些研究,从收集的点点滴滴来看,似乎缓存计划被赋予了一个“年龄”,其中包括它的重量或编译成本,乘以自缓存以来运行的次数。随着时间的推移,这个年龄递减,直到它达到 0,当它被认为“老化”并且是需要时冲洗的候选者。当计划缓存填满时,过时的计划将从缓存中刷新。

幕后是否还有其他事情使这种情况复杂化?

谢谢,

马特

sql-server-2005 sql-server

8
推荐指数
1
解决办法
609
查看次数

SQL Server - RangeX-X 和 RangeI-N 锁

我在死锁分析中遇到了死点。根据msdn

RangeX-X 为 Exclusive range,独占资源锁;在更新范围内的键时使用。RangeI-N 是插入范围,空资源锁;用于在将新键插入索引之前测试范围。

所以我明白,如果我在 2 个键列上有一个索引 - 并且我插入一个新键,我将拥有 RangeI-N 锁,但如果我从索引更新现有键,我将拥有 RangeX-X。

但我的问题或多或少复杂。假设我在 A、B 列和 C 列上有索引 IX_keys_included。

在 Serializable 隔离模式下,我为包含的列 C 插入一个新值。索引 IX_keys_included 是否会有 RangeI-N 或 RangeX-X 锁?实际上,鉴于我为索引中包含的列插入了一个新列,是否会有任何锁定?

sql-server locked-objects locking

8
推荐指数
1
解决办法
2876
查看次数

为什么建议人们不要通过视图更新

在大学期间,我们一直在想不要通过视图更新表,当我进入工作场所时,我们又被告知不要通过视图更新数据库。

在哪里/是否对执行此操作有显着的性能影响?或者这更像是高级开发人员/DBA 告诉初级人员不要这样做的情况,因为他们可能会无意中因不正确的连接而造成严重破坏。

编辑
我使用的是 MSSQL 2000-2008(取决于客户的具体情况)

sql-server-2008 view

8
推荐指数
1
解决办法
4217
查看次数

我可以使用行锁提示解决死锁吗?

我有一个大的删除存储过程,并且在删除不会删除任何内容的情况下重现了死锁。

看起来遇到死锁的存储过程的部分是这样的(更改了表名):

DELETE d
FROM Table1 d
inner join dbo.Table2 orc on orc.id = d.Table2Id
inner join dbo.Table3 orr on orr.id = orc.Table3Id
inner join Table4 oeh on oeh.id = orr.Table4Id
inner join @deleteEntities de on de.id = oeh.EntityId
Run Code Online (Sandbox Code Playgroud)

在我看来,尝试从这个大表中删除时,两个删除操作同时运行并且彼此死锁。对于这些项目,我知道不会有非常大的表 table1、table2、table3 的记录。

我想知道这是否可以通过更改为:

DELETE d
FROM Table1 d WITH(rowlock)
inner join dbo.Table2 orc on orc.id = d.Table2Id
inner join dbo.Table3 orr on orr.id = orc.Table3Id
inner join Table4 oeh on oeh.id = orr.Table4Id
inner join @deleteEntities de on de.id = …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server deadlock delete lock-escalation

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

如何恢复复制的数据库

我正在使用事务复制来复制我们的实时数据库。这基本上是为了在服务器出现故障的情况下备份我们的数据库。

复制的数据库是只读的,因此我对其进行了备份、恢复和测试。

我立即注意到标识列不起作用。

例如,原始模式是这样的:

CREATE TABLE [dbo].[Inspection](
[InspectionID] [int] IDENTITY(1,1) NOT NULL,
[CarID] [int] NOT NULL,
Run Code Online (Sandbox Code Playgroud)

然后,在复制的副本上,它看起来像这样:

CREATE TABLE [dbo].[Inspection](
[InspectionID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[CarID] [int] NOT NULL,
Run Code Online (Sandbox Code Playgroud)

这意味着标识列已禁用,对吗?

有没有办法解决这个问题并使这个数据库本身成为一个独立的副本?

另外,我注意到没有传播外键。我知道有一些设置,但是既然标识列被禁用(哪些是主键),传播外键是否会成为问题?

replication sql-server-2008 sql-server identity

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

SQL Server 2005:Integration Services 存储包为空。为什么?

我正在尝试导入、导出 SSIS 包。我知道他们在那里。当我查询 msdb.dbo.sysdtspackages90 时,我得到 22 个包。但是当我连接到服务器上的 Integration Services 时,存储的包文件夹是空的。到底是怎么回事?

我已经检查了 MsDtsSrvr.ini.xml。它使用标准的默认设置进行设置。

sql-server-2005 ssis

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