我们正在尝试评估通过将现有应用程序 .mdf 文件切换到 RAID10 LUN 与他们目前使用的现有 RAID5 LUN 可以获得的潜在性能改进。事务日志已经存在于 RAID10 LUN 上。
所以问题是,如果我们将数据文件移动到 RAID10,最终用户会在 GUI 中看到性能改进吗?或者当检查点发生并且更改被写入数据文件时写入数据文件会更快,但在最终用户级别不会看到任何改进?
performance sql-server disk-structures sql-server-2008-r2 sql-server-2012
看起来 XACT_ABORT ON 没有按预期工作。这是一个表和一个插入其中的过程:
CREATE TABLE rain
(
rain_time DATETIME ,
location VARCHAR(100)
);
GO
CREATE PROCEDURE insert_rain
@rain_time DATETIME ,
@location VARCHAR(100)
AS
BEGIN;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
PRINT 'before insert';
INSERT INTO rain
( rain_time, location )
VALUES ( @rain_time, @location );
PRINT 'after insert';
COMMIT;
END;
GO
Run Code Online (Sandbox Code Playgroud)
我创建了一个触发器来模拟运行时错误:
CREATE TRIGGER rain_no_insert
ON rain
FOR INSERT
AS
RAISERROR('Cannot insert', 16, 1);
GO
Run Code Online (Sandbox Code Playgroud)
当我调用插入过程时,我确实收到了错误,但执行并没有停止,因为最后一个 PRINT 打印了它的“插入后”消息:
EXEC insert_rain
@rain_time = '2015-03-30 12:34:56',
@location = 'Wautoma, WI';
before insert …Run Code Online (Sandbox Code Playgroud) 我正在尝试恢复 .bak 文件(在 SQL Server 2008 R2 上进行备份,兼容性级别 100)。我正在恢复 SQL Server 2012 版的备份。我收到以下错误。不幸的是,备份数据库的原始数据库不再可用。我是这个项目的新手。我得到了拇指驱动器上的 bak 文件。
关于如何将数据库恢复到 2012 年的任何建议?
数据库“TstDB”的恢复失败。
System.Data.SqlClient.SqlError: Read on ***13(数据无效。)
这就是错误信息。当我运行时RESTORE VERIFYONLY,出现以下错误:
Msg 3203, Level 16, State 1, Line 2
Read on "C:****" failed: 13(The data is invalid.)
Msg 3013, Level 16, State 1, Line 2
VERIFY DATABASE 异常终止。
RESTORE HEADERONLY那是成功的。当我使用 stats=1 运行 restore database 时,我得到以下信息:
10% 已处理。
20% 已处理。
[...]
70% 已处理。
80% 已处理。
Msg 3203, Level 16, State 1, Line 2
Read …
我有一个 SQL Server 2012 维护计划,它执行正常的操作(重建索引和更新统计信息、备份数据库、删除超过 X 天的 .bak 文件等)。除了一项维护清理任务外,一切正常:

这应该是删除所有意外留在每晚备份目录中的 .7z 档案(相当于 .zip 或 .rar)(尽管我们尽了最大努力,但最终还是有些人将这些文件留在服务器上......),但是E:\Backups\foo\bar.7z在维护计划运行后,子目录(例如)中仍然存在旧的 .7z 文件。
SQL Server 日志中没有错误。
我怀疑这是因为“删除以下类型的文件:备份文件”选项限制了可以删除的文件类型。我还尝试使用 7z 扩展名将其更改为“维护计划文本报告”,但没有任何更改。
是否可以让维护计划在维护清理任务期间删除任意(非 SQL Server)文件?如果是这样,知道我做错了什么吗?
最近我们的 SQL 服务器出现了问题。服务器似乎会耗尽内存然后崩溃。出于某种原因,sql 服务不会重新启动。我将不得不去手动重新启动它,然后就可以了。
我仍在试图找出内存问题。我们使用的是 SQL Server 2012 SP1 企业版。这是在 Windows 2012 服务器上。在服务器崩溃之前,我在服务器上看到了很多 701 内存不足错误,我仍在尝试找出导致内存错误的原因。
为什么 SQL 服务不会自动重启?是不是因为内存问题?
此外,服务器有 20GB 内存,最大服务器内存设置为 16.5GB。我注意到 MEMORYCLERK_SQLOPTIMIZER 非常高,在服务器崩溃之前大约 11.5 GB。
有谁知道为什么会这么高?那是导致内存错误的原因吗?
任何帮助将不胜感激。谢谢。
创建聚集索引时,表本身成为按索引键排序的索引结构。
想象一下,现在我们在表 XPTO (a,b,c,d,e) 中有 5 列,“a”是主键,我们在表 XPTO 上创建一个列存储索引,其中包含列 (b,c)。
这个索引的结构是什么?与聚簇表相比有不同的结构吗?或者列存储是否有指向聚集表的指针(如其他非聚集索引)。
最后,同样的场景但是创建了所有属性的列索引,结构是什么?
sql-server clustered-index sql-server-2012 columnstore sql-server-2014
我正在 SQL Server 中配置事务复制。订阅配置为从 2008R2 发布者(分发者为同一服务器)推送到 2012 订阅者。
我要复制的对象是索引视图。基表仅存在于发布者上。
由于以下错误,复制失败:
无法复制视图或函数,因为引用的对象或列不存在于订阅服务器上
确实,订阅数据库中不存在该视图。如何在没有基表的情况下创建它?
replication sql-server sql-server-2008-r2 sql-server-2012 transactional-replication
我正在将 100 多个 SQL 数据库迁移到新位置的新服务器。我有适当的维护计划来进行完整备份,然后是将.bak文件复制到临时目录的脚本。我正在寻找的是一种批量恢复这些.bak文件的方法,这样我就不必整个周末都手动进行。
我在这里找到了一个不错的存储过程:SQL 还原
我将其安装到位并进行了测试,但出现以下错误:
消息 3118,级别 16,状态 1,第 1 行
数据库“TF058”不存在。RESTORE 只能在恢复主文件的完整备份或文件备份时创建数据库。
消息 3013,级别 16,状态 1,第 1 行
RESTORE DATABASE 异常终止。
我正在运行 SQL Server 2012 并且数据库处于完全恢复模式。
我有一台运行 SQL Server 2012 的服务器,在一个表上有多个 Filestream 容器。
我需要通过创建一个新的文件流容器并移动数据来将现有的文件流容器之一拆分为两部分。
如何在文件流容器之间可靠地移动内容?
我将第一个容器设置为不再增长,但是如何在不写入全新表的情况下将文件移动到另一个容器?有没有办法做一个UPDATE会导致 SQL Server 再次将文件写入磁盘的语句?- 我曾想过附加一个额外的数据字节,然后将其删除,以使 SQL Server 将内容作为新文件写入,但有更好的方法吗?
我执行了以下操作:
USE [MyDatabase];
GO
CREATE LOGIN [MyDomain\MyAccount] FROM WINDOWS WITH DEFAULT_DATABASE=[MyDatabase];
CREATE USER [MyDomain\MyAccount] FOR LOGIN [MyDomain\MyAccount];
GRANT EXECUTE ON SCHEMA::[MySchema] TO [MyDomain\MyAccount];
GRANT SELECT ON SCHEMA::[MySchema] TO [MyDomain\MyAccount];
GRANT INSERT ON SCHEMA::[MySchema] TO [MyDomain\MyAccount];
Run Code Online (Sandbox Code Playgroud)
(我没有授予任何角色,因为我不希望此登录名能够访问此数据库中的任何其他架构。)
我以 MyDomain\MyAccount 的身份运行 SSMS(以不同的用户身份运行)。然后我尝试连接到这个实例。但是,我得到:
无法打开用户默认数据库。登录失败。用户
“MyDomain\MyAccount”登录失败。(Microsoft SQL Server,错误:4064)
如果我在连接属性中将默认数据库设置为 MyDatabase,我会得到相同的结果。
我运行了 Profiler 跟踪并看到错误 18456 状态 38:
用户“MyDomain\MyAccount”登录失败。原因:无法打开明确指定的数据库“MyDatabase”。[客户:MyIpAddress]
接下来是错误 18456 状态 40:
用户“MyDomain\MyAccount”登录失败。原因:无法打开登录属性中指定的数据库“MyDatabase”。[客户:MyIpAddress]
MyDatabase 在线,我可以使用其他登录名轻松连接到它。我需要向 MyDomain\MyAccount 授予哪些额外权限?还有什么我想念的吗?
sql-server-2012 ×10
sql-server ×8
restore ×2
backup ×1
columnstore ×1
filestream ×1
logins ×1
memory ×1
performance ×1
permissions ×1
replication ×1
schema ×1