我在我们的一个生产数据库中有大约 40 个表,由于各种原因,这些表不是使用聚集索引创建的。
转换这些堆的最佳自动化方法是什么?
由于我天生是一名开发人员,我真的不想手动执行此操作。
我开始为此创建一个过程,如为什么此游标以不正确的顺序产生结果中所述?,然而我对那篇文章的回应让我怀疑我在做什么。
我们最近从 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)
如何判断现有备份文件是否针对压缩备份进行了初始化?
我正在制作一个 2 节点 SQL Server 2012 故障转移群集;我需要安装 MSDTC 组件吗?
如果是,两者都可以安装在单个共享磁盘上吗?
我有点问题。我在框 A 中有一个 SQL Server 数据库,其中包含大约 60GB 的数据。我需要把它移到一台新机器上,但我根本没有停机时间。数据库中每一秒都有新数据,所以我们不能在半夜的某个随机时间进行。
有没有办法实现这一目标?我几乎可以做任何我想做的事情,所以任何建议都会有用。
有一个实验室项目。需要为研究保存实验室数据(原始数据和相关信息)多年。
所以数据必须保存多年,但是数据这么大,每一个原始数据都超过10GB。如果我们将原始数据存储在 SQL Server 中FILETABLE,并将相关信息存储在标准 SQL Server 表中,几个月或几年后,数据库大小将如此之大,以至于我们必须将一些历史数据移出数据库。
也许我们可以使用将文件(在不同的硬盘上)添加到FILESTREAMfiletable的文件组(存储原始数据),但我觉得这不适合维护SQL Server。我们必须保持原始数据和相关信息的一致性。
我们考虑过使用磁带来保存历史原始数据。我们想用硬盘来保存最新的原始数据,用磁带来保存历史的原始数据。当我们将历史数据移动到磁带上时,我们将移动记录在日志表中,这样我们就可以知道历史数据移动到哪里并尽快提取。
有没有好的建议:
filetable适合这种情况?我已经在我的 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 版本 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) 我有一个大约有 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) 我有一张几百列宽的桌子。有没有办法将每一行转换为包含列标题的单个串联字符串,而不必列出查询中的每一列?
我这样做是因为列代表事件报告中的字段。我将它们重新组合在一起,以便人们可以以合乎逻辑的方式阅读报告。
我已经通过查询完成了其中的一些工作,但是为每一列都做起来很费力,而且似乎容易出错。
这是一个简短的片段,显示以我需要的格式连接的三列,在逐列方法中完成:
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)
谢谢
我有一个源表,它看起来基本上是这样的:
实际的表有类似于 500 个编号的列(并没有真正计算它们 - 有各种各样的编号为 1-7 的字段,然后是另一个编号为 1-25,乘以 7 的字段)每个工作日(不,这不是我的设计) ,目前大约有 38,600 行(每周增加)。
我有一个 SSIS 包,它试图标准化这些数据......目前看起来像这样:

每个“源”从同一个源表中选择一组编号的列,UNION ALL 组件将 7 个源合并为一个,从而产生大约 258,900 行。
工作流的其余部分添加一些计算列,查找代理键(例如EmployeeCode用于查找EmployeeId,然后计算日期并用于查找 a TimeId),然后“修改”的行得到更新和“新的”被插入到规范化表中;未更改的行最终无处可去。
有没有更好的方法(例如减轻内存压力)来规范化源数据?
sql-server ×9
backup ×2
architecture ×1
clustering ×1
failover ×1
filetable ×1
heap ×1
index ×1
migration ×1
msdtc ×1
pivot ×1
ssis ×1
uuid ×1