如果事务成功提交,我能否 100% 确定它已写入数据库和日志文件?我可以确定数据已保存吗?
今天我们的日志文件已经达到了驱动器的限制,我们得到了很多错误。此外,其他一些服务也崩溃了。我们增加了磁盘并重新启动了服务器。
在启动期间,服务器进行了“数据库恢复”——我能确定一切正常吗?
我怀疑这是一个问题,因为我们达到了 SQL Server 的 50 个实例的最大限制。在极限情况下,它自然不会安装更多实例。但是,它似乎也不会卸载它们。那更糟。
在为实例选择 SQL 引擎后点击下一步时,它会挂在“选择功能”对话框中。
我没有找到很多关于这方面的信息。最有趣的是:http : //social.msdn.microsoft.com/Forums/sqlserver/en-US/24a1e5f3-25f3-48c8-973a-4c6a18578e42/trying-to-uninstall-1-of-50-sql -server-2008-r2-express-hangs-on-please-wait
它还建议使用setup.exe一些参数来卸载实例,但如果不启动 GUI 并进入失败的正常卸载,我就无法这样做。
海拔没有任何作用。重新启动没有帮助。日志只说“被用户取消”,因为我最终必须杀死它。在那之前没有什么明显的。验证都是绿色的。
安装程序说它是 SQL Server 2012 SP1 - 所有实例都在 11.0.2100。
我选择回答/关闭我自己的问题,因为 Microsoft 已关闭状态为“无法修复”的故障单。
希望他们已经为 SQL Server 2014 解决了这个问题,但我没有也不打算自己测试,他们也没有提供关于关闭票证的任何其他评论。
我们的 DBA 团队不会使用以下方法验证备份TSQL(备份后可以轻松完成并且几乎不需要时间,所以我不明白为什么不这样做):
RESTORE VERIFYONLY
FROM DISK = 'D:\Backups\LOCATION'
Run Code Online (Sandbox Code Playgroud)
他们过去曾遇到过问题,所以即使我们认为他们会从中吸取教训,但他们没有。我创建了一个 Powershell 脚本来执行此操作,因为我们有大约 100 多台服务器,我只想针对所有备份运行此脚本,以确保它们有效。下面的脚本运行正确(因为它不会中断或抛出错误),我很好奇是否有办法在 Powershell 中取回我们通常会在 SSMS 中获得的打印消息,其中说明文件 1 上的备份集是作为验证有效。
$SqlCon = New-Object System.Data.SqlClient.SqlConnection
$SqlCon.ConnectionString = "SERVER=SERV\INST;Integrated Security=true;DATABASE=master"
$baks = Get-ChildItem "D:\Backups\" -Filter *.BAK
foreach ($bak in $baks)
{
$SqlCon.Open()
$cd = New-Object System.Data.SqlClient.SqlCommand
$cd.Connection = $SqlCon
$cd.CommandText = "RESTORE VERIFYONLY FROM DISK = @f"
$cd.Parameters.Add("@f", $bak.FullName)
$cd.ExecuteNonQuery()
$SqlCon.Close()
}
Run Code Online (Sandbox Code Playgroud) 表T_PIN有 300,000 个引脚和T_POLYGON36,000 个多边形。T_PIN有这个索引:
CREATE SPATIAL INDEX [T_PIN_COORD] ON [dbo].[T_PIN]
(
[Coord]
)USING GEOGRAPHY_GRID
WITH (GRIDS =(LEVEL_1 = HIGH,LEVEL_2 = HIGH,LEVEL_3 = HIGH,LEVEL_4 = HIGH),
CELLS_PER_OBJECT = 128, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY];
Run Code Online (Sandbox Code Playgroud)
T_POLYGON 已:
CREATE SPATIAL INDEX [T_POLYGON_COORD] ON [dbo].[T_POLYGON]
(
[COORD]
)USING GEOGRAPHY_GRID
WITH (GRIDS =(LEVEL_1 = HIGH,LEVEL_2 = HIGH,LEVEL_3 = HIGH,LEVEL_4 = HIGH), …Run Code Online (Sandbox Code Playgroud) performance sql-server sql-server-2012 spatial query-performance
我在 SQL Server 中有 200 GB 的数据仓库。
对于某些查询,我遇到了非常缓慢的执行时间;例如delete,使用inner join.
在对执行计划进行了一些研究之后,我使用该WITH FULLSCAN选项更新了查询中涉及的 2 个表的统计信息。
查询现在在不到一秒的时间内执行,因此统计信息似乎不是最新的。
我正在考虑禁用auto update statistics数据库并UPDATE STATISTICS在加载数据仓库后手动运行。每天晚上从源 ERP 系统增量加载数据仓库。
我假设auto update statistics在数据仓库场景中不是真的有用吗?相反,在数据加载后手动更新统计数据是否更有意义?
根据 Kimberly L. Tripp 的 MSDN 文章,Neal Graves 的“ SQL Server 2005 Row Versioning-Based Transaction Isolation
这在“了解行版本控制”部分中是常见的“使用行版本控制读取提交中的行版本控制”和“快照隔离中的行版本控制”部分。
进一步关于由于修改导致的行版本控制的示例仅在 SNAPSHOT 中的多个事务(T1、T2、T3)对同一记录的多次更新的上下文中给出。
如果只有一个事务多次更新记录(通过多个语句),是存储(链接)多个版本存储还是仅在拍摄快照“图像”时拍摄的一个?
好吧,这个问题的答案应该立即回答我其他未决的相关问题:
sql-server transaction tempdb-version-store snapshot-isolation
我们有一个周期性事件,其中许多连接挂在 TM REQUEST(来自sys.dm_os_waiting_tasks)上并且没有任何进展。KILL对受影响的session_id人什么都不做
服务器运行数据库镜像 (2008R2)。暂停和恢复镜像可在问题发生时修复该问题。
陷入这种状态的会话是不可杀死的。镜子上的负载是平常的,而不是突发的。一旦大量连接卡在这种状态,系统就会冻结并且镜像停止复制(所有查询都被阻止)。
有没有人见过这个并知道是什么原因造成的?错误日志中没有任何内容。
我有一个在亚马逊 EC2 上运行的 SQL Server 2012 数据库。我创建了一个能够创建、编辑和删除数据库的用户。我为新用户提供了dbcreator服务器角色。
我的用户可以远程连接并成功运行create database foo;命令。但是当用户尝试再次使用drop database foo;该命令删除数据库时失败并出现以下错误:
Warning: Fatal error 615 occurred at Feb 1 2014 5:15PM.
Note the error and time, and contact your system administrator.
ErrorCode: 21
Run Code Online (Sandbox Code Playgroud)
即使选定的数据库是master(所以我认为不是因为它正在使用中)。当我以管理用户身份再次登录时,该命令会成功。
我检查了新创建的数据库,并且我的用户已db_owner按照我的预期在数据库中分配了角色,所以我的理解是,这应该是该用户能够删除他们刚刚创建的数据库的足够权限。

根据http://technet.microsoft.com/en-us/library/ms178613.aspx,db_owner角色应该有足够的权限。“需要对数据库的 CONTROL 权限,或 ALTER ANY DATABASE 权限,或 db_owner 固定数据库角色的成员身份。”
我查找了错误 615 并发现“找不到数据库表 ID %d,名称为 '%.*ls'。” 这对我来说毫无意义。http://technet.microsoft.com/en-us/library/aa937592(v=sql.80).aspx
Sql 服务器版本信息:Microsoft SQL Server 2012 (SP1) - 11.0.3368.0 (X64) /n May 22 2013 17:10:44 …
通常在查询我的 MS SQL Server 数据库时,我需要创建一个计算字段,例如
(CASE WHEN A.type = 'Workover' THEN 'Workover'
ELSE (CASE WHEN substring(C.category, 2, 1) = 'D' THEN 'Drilling'
WHEN substring(C.category, 2, 1) = 'C' THEN 'Completion'
WHEN substring(C.category, 2, 1) = 'W' THEN 'Workover'
ELSE 'Other'
END)
END)
Run Code Online (Sandbox Code Playgroud)
然后我需要通过这个计算字段(等等)对我的结果进行分组。因此,我在 SELECT 和 GROUP BY 子句中进行了相同的计算。SQL 服务器实际上执行了两次这些计算,还是它足够聪明,只执行一次?
有几个博客声称将 SSIS 转换分为阻塞(异步)、非阻塞(同步)和部分阻塞(异步)。
在查看特定问题时:多播是同步(非阻塞)还是异步(部分阻塞)?
一个资源声称异步:“多播是一种异步(也称为部分阻塞)转换”来源:http : //social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx
另一个同步:https ://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/
其他资源声称 DQS Cleansing 转换是一种非阻塞转换,但在我看来它是部分阻塞的。
请不要使用按类型分类的转换列表的链接来回答。这个问题的答案有望采用更严格的方法来证明正确答案。
由于部分阻塞和阻塞转换会将数据移动到新的缓冲区,而不是在缓冲区上操作的非阻塞,我怀疑解决方案是在转换执行期间观察缓冲区的创建,但我不确定(a ) 如果这会产生明确的答案和 (b) 如何做到这一点。
我相信非阻塞转换不会导致新的执行树开始,因此答案可能在于记录 PipelineExectionTrees 和 PipelineExecutionPlan。这可以区分同步和异步,但不能区分部分阻塞和完全阻塞。
sql-server ×10
amazon-ec2 ×1
performance ×1
permissions ×1
powershell ×1
spatial ×1
ssis ×1
ssis-2012 ×1
statistics ×1
transaction ×1