标签: sql-server-2008

在 SQL Server 2008 中重新计算行大小?

可以在 SQL Server 2008 中重新计算行大小吗?拿这个例子:

declare @counter int
declare @statement nvarchar(max)
set @counter=0
drop table kua2
create table kua2(id int)
while @counter<307
begin
    set @statement = N'alter table kua2 add id'+CAST(@counter as nvarchar(max))+N' nvarchar(max)'
    exec (@statement)
    set @statement = N'alter table kua2 drop column id'+CAST(@counter as nvarchar(max))
    exec (@statement)
    set @counter=@counter+1
end

alter index all on kua2 rebuild

dbcc cleantable (0,'kua2',0)

alter table kua2 add id0 int
alter table kua2 add id1 int
alter table kua2 add id2 int
alter …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 size

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

带有 Xml 索引的 Sql Server Enterprise 2008 R2 分区切换

好吧,sql db 分区和切换似乎不是一个高度讨论的话题,但它是我正在实施的东西。我在分区功能、分区模式、文件组分配等所有领域都取得了成功。到目前为止,我没有遇到任何分区切换问题,直到发现一个讨厌的 xml 字段正在扼杀性能。所以我尝试添加一个简单的主 xml 分区,但现在所有分区切换都失败了。下面是我在玩的表结构的模拟。

CREATE TABLE [MySchema].[DataTable](
    [PartitionKey] [varchar](12) NOT NULL,
    [Id] [uniqueidentifier] NOT NULL CONSTRAINT [DF_DataTabe_Id] DEFAULT NewId(),
    [ClientId] [smallint] NOT NULL,
    [ProjectId] [int] NOT NULL,
    [ResponseValue] [nvarchar](255) NULL,
    [ResponseValueXml] xml NULL,
 CONSTRAINT [PK_DataTable] PRIMARY KEY CLUSTERED 
(
    [PartitionKey] ASC
    , [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  =ON, ALLOW_PAGE_LOCKS  = ON) 
ON PS_MySchema(PartitionKey)
) ON PS_MySchema(PartitionKey)
Run Code Online (Sandbox Code Playgroud)

对此的一些说明是,分区键是一个基于 clientId、年份和另一个值的复杂/计算键。分区模式建立在一个分区函数上,该函数将客户 + 日期分组,然后将它们放入单独的文件组(按年份) - 使滑动窗口方法易于管理。

事情的一般流程是在同一个文件组中创建一个工作表,使用alter table将所需的分区从DataTable切换到工作表。对着工作台做一些事情,完成后切换回去。这很好用......直到我在 ResponseValueXml 上添加一个主要的 xml 索引。alter table …

sql-server-2008

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

我可以将 SQL 2008 R2 数据库附加到不是 R2 的 SQL 2008 吗?

我可以将 SQL 2008 R2 数据库附加到不是 R2 的 SQL 2008 吗?

我有一个从 SQL 2008(不是 R2)分离的数据库,可以将它附加到 SQL 2008 R2。

然后我可以从 SQL 2008 R2 中分离数据库并将其附加到 SQL 2008(不是 R2)吗?

sql-server-2008

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

如何从大型 ER 模型中选择数据子集?

我的数据库中有一个相当大的 ER 模型和大量数据。现在我想将这些数据的一个子集放入不同的数据库中以进行测试。问题是如何从所有表中获取一个子集,这样我就不会破坏参照完整性并从数据库中获取孤立的记录?我的意思是,如果我选择 100 条记录,例如从“产品”表中,我如何轻松地从引用的表(以及这些表被引用的表)中获取所有数据?是否有任何工具可用于此目的或仅使用纯 SQL?

sql-server-2008 database-design sql-server referential-integrity

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

SQL Server 镜像与 3rd 方复制产品(如 DoubleTake)

我负责管理多个 SQL Server 实例,其中大多数使用 SQL Server 镜像来复制数据以用于 DR 目的。

我会自动为镜像编写登录、角色和作业的脚本,在发生故障转移时,我们实际上需要运行一个脚本来使镜像联机、应用登录、应用滚动和作业,然后它们就会消失(给予或采取一些不匹配的 SID 和通常的小问题)。

现在,我已经记录了这个故障转移过程,以防万一发生故障时我不在现场;然而,管理层认为这个过程过于复杂,并一直试图推动诸如DoubleTake等可以进行实例级复制的3rd方复制产品。

(公司不想在实例级别使用集群,因为共享存储将成为单点故障——他们不愿意购买多个复制 SAN。)

我们拥有从几兆到 200GB+ 的数据库。

以这种方式,DoubleTake 对于 DR 真的实用吗?我可以相信数据会在主要和次要之间保持最新吗?(正是出于这个原因,我们运行高安全模式镜像。)

我在论坛上读过很多意见,但总是有偏见或未经证实;我对这些产品有一些第一手的经验。

sql-server-2008 mirroring

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

SQL Server 索引重组

虽然索引重建至少需要与当前索引索引相同的数据文件空间量(因为将创建索引的副本)

我对与重组相关的 SQL Server BOL 的阅读只涉及叶级,并且只需要一个 8KB 的页面,

任何人都可以用简单的技术术语解释重组是如何工作的(内部机制)..?

sql-server-2008

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

为什么恢复需要很长时间?

虽然数据库备份文件只有 2GB,但即使在 x64 12G RAM、i7 机器上,恢复也可能需要 15-20 分钟。当我备份从不同数据库制作的类似大小的备份文件时,恢复会在 3 秒内完成。备份文件只包含一个备份集(我总是检查覆盖现有数据选项)。在其他较慢的机器上,恢复需要更长的时间。

什么可能导致恢复需要这么长时间?

sql-server-2008 restore

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

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

SQL Server 2008 DBCC 问题

我们有一个数据库女士

DBCC CHECKDB (MS)
Run Code Online (Sandbox Code Playgroud)

或者

ALTER DATABASE MS SET SINGLE_USER
DBCC CHECKDB(MS,REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE MS SET MULTI_USER
Run Code Online (Sandbox Code Playgroud)

错误信息

Msg 0, Level 11, State 0, Line 0:
当前命令发生严重错误。结果,如果有的话,应该被丢弃。

Msg 0, Level 20, State 0, Line 0:
当前命令发生严重错误。结果,如果有的话,应该被丢弃。


花费数小时测试每张表后,发现有问题的表是“LC”

DBCC CHECKTABLE(LC)
Run Code Online (Sandbox Code Playgroud)

错误信息

消息 211,级别 23,状态 51,第 1 行:
可能的架构损坏。运行 DBCC 检查目录。


现在,

DBCC CHECKCATALOG
Run Code Online (Sandbox Code Playgroud)

信息

DBCC 执行完成。如果 DBCC 打印错误消息,请联系您的系统管理员。


我也试着看看索引

SELECT * FROM sysindexes
Run Code Online (Sandbox Code Playgroud)

错误信息

消息 211,级别 23,状态 51,第 1 行:
可能的架构损坏。运行 DBCC 检查目录。

Msg 0, Level 20, State 0, Line 0: …

sql-server-2008 sql-server dbcc

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

是“DBCC SHRINKDATABASE”还是“DBCC SHRINKDATABASE”:这是个问题

我们正在释放 SQL Server 2008 R2 数据库中的大量空间 - 太棒了!足以关心-(我们丢弃了大量不必要的数据)。但数据库文件会保留其文件大小。我们想重新获得它。

我多次听说使用DBCC SHRINKDATABASE会降低数据库的性能 - 据我所知,因为“...收缩操作不会保留数据库中索引的碎片状态,并且通常会将碎片增加到学位” [MSDN]

所以我打算使用DBCC SHRINKDATABASE然后重建我们的索引。

不使用DBCC SHRINKDATABASE来重新获得磁盘空间还有另一个性能原因吗?

performance sql-server-2008 dbcc

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