小编Han*_*non的帖子

如何自动将堆转换为聚集索引?

我在我们的一个生产数据库中有大约 40 个表,由于各种原因,这些表不是使用聚集索引创建的。

转换这些堆的最佳自动化方法是什么?

由于我天生是一名开发人员,我真的不想手动执行此操作。

我开始为此创建一个过程,如为什么此游标以不正确的顺序产生结果中所述?,然而我对那篇文章的回应让我怀疑我在做什么。

sql-server-2005 sql-server clustered-index heap

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

如何判断 SQL Server 备份是否已压缩?

我们最近从 SQL Server 2005 升级到 SQL Server 2012。在 SQL Server 2005 下,没有像 2012 年那样创建压缩备份的选项。

如果您尝试BACKUP DATABASE ... WITH (COMPRESSION);对已初始化但未压缩的文件进行操作,该BACKUP DATABASE命令将失败并显示以下错误消息:

ERROR MESSAGE : BACKUP DATABASE is terminating abnormally.
ERROR CODE : 3013
Run Code Online (Sandbox Code Playgroud)

如何判断现有备份文件是否针对压缩备份进行了初始化?

sql-server backup sql-server-2012

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

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

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

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

sql-server clustering sql-server-2012 failover msdtc

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

将 SQL Server 2008 数据库从机器 A 移动到 B 而不停机

我有点问题。我在框 A 中有一个 SQL Server 数据库,其中包含大约 60GB 的数据。我需要把它移到一台新机器上,但我根本没有停机时间。数据库中每一秒都有新数据,所以我们不能在半夜的某个随机时间进行。

有没有办法实现这一目标?我几乎可以做任何我想做的事情,所以任何建议都会有用。

sql-server-2008 sql-server migration

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

SQL Server 的 FILETABLE 是否适合存储大文件(大于 10 GB)?

有一个实验室项目。需要为研究保存实验室数据(原始数据相关信息)多年。

所以数据必须保存多年,但是数据这么大,每一个原始数据都超过10GB。如果我们将原始数据存储在 SQL Server 中FILETABLE,并将相关信息存储在标准 SQL Server 表中,几个月或几年后,数据库大小将如此之大,以至于我们必须将一些历史数据移出数据库。

也许我们可以使用将文件(在不同的硬盘上)添加到FILESTREAMfiletable的文件组(存储原始数据),但我觉得这不适合维护SQL Server。我们必须保持原始数据和相关信息的一致性。

我们考虑过使用磁带来保存历史原始数据。我们想用硬盘来保存最新的原始数据,用磁带来保存历史的原始数据。当我们将历史数据移动到磁带上时,我们将移动记录在日志表中,这样我们就可以知道历史数据移动到哪里并尽快提取。

有没有好的建议:

  1. 如何存储原始数据和相关信息?
  2. filetable适合这种情况?
  3. 这种情况有更好的解决方案吗?

sql-server backup architecture filetable

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

SQL Server 全文搜索 - .rtf 文件被 rtf 标签错误地索引

我已经在我的 SQL Server DB 上的一varbinary(max)列上设置了全文索引。我指定了一个类型列,其中包含文件的扩展名,例如“.doc”、“.pdf”等。

但是,我注意到当任何 .rtf 文件被索引时,SQL 将包含文件中的所有元信息(例如 RTF 标记“listoverridecount0”)。

这使索引膨胀很多,也意味着搜索将匹配这些标签(即我可以搜索“listoverridecount0”并返回每个 .rtf)。

.rtf 的 iFilter 是否有任何理由不会删除 RTF 标签?

当我运行这个:

SELECT * FROM sys.fulltext_document_types WHERE document_type = '.rtf';
Run Code Online (Sandbox Code Playgroud)

我明白了:

document_type  .rtf                                     
class_id       C7310720-AC80-11D1-8DF3-00C04FB6EF4F 
path       c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\msfte.dll
version        12.0.6828.0
manufacturer   Microsoft Corporation
Run Code Online (Sandbox Code Playgroud)

我已提交Microsoft Connect 错误,因为我似乎无法找到任何解决方法。据推测,这是 a) RTF iFilter 未删除标签的错误,或 b) 全文索引问题。

我的 SQL Server 版本是:

Microsoft SQL Server 2012 (SP1) - 11.0.3393.0 (X64) 
2013 年 10 月 25 日 19:04:40 
版权所有 (c) 微软公司 …

sql-server full-text-search sql-server-2012

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

SQL Server 2008 R2 从文件还原数据库 - “失败:38(无法检索此错误的文本。原因:15105)”

我在客户端服务器上创建的备份文件上运行数据库还原,备份文件已移动到我们的服务器(相同的 SQL 版本 2008 R2),并且在 T-SQL 之后我收到以下错误运行了将近7分钟:

TSQL:

RESTORE DATABASE [Charms_OrangeGrove]   
FROM    DISK = N'S:\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\Charms_OrangeGrove_290114.bak'   
    WITH  MOVE N'CharmsData_dat'   
          TO N'S:\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Charms_OrangeGrove.mdf',    
          MOVE N'CharmsData_log' 
          TO N'S:\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Charms_OrangeGrove_Log.ldf'
Run Code Online (Sandbox Code Playgroud)

错误:

Msg 3203, Level 16, State 1, Line 1
Read on "S:\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\Charms_OrangeGrove_290114.bak" 
    failed: 38(failed to retrieve text for this error. Reason: 15105)
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)

sql-server-2008-r2

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

SQL Server:为现有索引创建新的 GUID 值

我有一个大约有 600 万行的现有表。相关栏目有:

ID int not null PK
Key uniqueidentifier not null
Run Code Online (Sandbox Code Playgroud)

通过Key查找对该表的读/写可能类似于 100 比 1。

现有的行都是使用创建的,newid()所以它们没有顺序。存在一个索引Key

CREATE NONCLUSTERED INDEX [idx_Robert] ON [dbo].[Aleksander]
(
    [Key] ASC
) WITH (PAD_INDEX = OFF
    , STATISTICS_NORECOMPUTE = OFF
    , SORT_IN_TEMPDB = OFF
    , DROP_EXISTING = OFF
    , ONLINE = OFF
    , ALLOW_ROW_LOCKS = ON
    , ALLOW_PAGE_LOCKS = ON
    , FILLFACTOR = 80
    ) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

鉴于表中已经有数百万行,将 GUID 生成更改为顺序使用有什么好处newsequentialid()

展望未来,它将生成更好的数据,但由于不知道新的顺序 GUID 系列将在索引中的哪个位置,它会更快地破坏索引吗?将 GUID 生成保留为非顺序是否会更好,以便索引中的剩余页面空间更均匀地填充?

就表的增长率而言,它代表了大约3年的数据。

Year …
Run Code Online (Sandbox Code Playgroud)

index sql-server uniqueidentifier sql-server-2012 uuid

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

将行转换为包含列名的串联字符串

我有一张几百列宽的桌子。有没有办法将每一行转换为包含列标题的单个串联字符串,而不必列出查询中的每一列?

我这样做是因为列代表事件报告中的字段。我将它们重新组合在一起,以便人们可以以合乎逻辑的方式阅读报告。

我已经通过查询完成了其中的一些工作,但是为每一列都做起来很费力,而且似乎容易出错。

这是一个简短的片段,显示以我需要的格式连接的三列,在逐列方法中完成:

SELECT 
 Concat( 
   IIf(Id IS NULL, Null, Concat('Id: ' , [Id] , '\n') )  , 
   IIf(StandardClientId IS NULL, Null, 
     Concat('StandardClientId: ' , [StandardClientId] , '\n') )  , 
   IIf(ClientName IS NULL, Null, 
     Concat('ClientName: ' , [ClientName] , '\n') ) 
 )  AS ReportLine
FROM dbo.DataDecoded; 
Run Code Online (Sandbox Code Playgroud)

谢谢

sql-server pivot

6
推荐指数
3
解决办法
2480
查看次数

是否可以在没有 UNION 的情况下组合 7 个源?

我有一个源表,它看起来基本上是这样的:

  • 员工代码
  • 周开始日期
  • 工作时间Day1
  • 工作时间Day2
  • 工作时间Day3
  • 工作时间Day4
  • 工作时间Day5
  • 工作时间Day6
  • 工作时间Day7

实际的表有类似于 500 个编号的列(并没有真正计算它们 - 有各种各样的编号为 1-7 的字段,然后是另一个编号为 1-25,乘以 7 的字段)每个工作日(不,这不是我的设计) ,目前大约有 38,600 行(每周增加)。

我有一个 SSIS 包,它试图标准化这些数据......目前看起来像这样:

联合所有

每个“源”从同一个源表中选择一组编号的列,UNION ALL 组件将 7 个源合并为一个,从而产生大约 258,900 行。

工作流的其余部分添加一些计算列,查找代理键(例如EmployeeCode用于查找EmployeeId,然后计算日期并用于查找 a TimeId),然后“修改”的行得到更新和“新的”被插入到规范化表中;未更改的行最终无处可去。

有没有更好的方法(例如减轻内存压力)来规范化源数据?

normalization sql-server ssis sql-server-2014

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