标签: sql-server

如果一个事务被“提交”,那么它会被保存吗?

如果事务成功提交,我能否 100% 确定它已写入数据库和日志文件?我可以确定数据已保存吗?

今天我们的日志文件已经达到了驱动器的限制,我们得到了很多错误。此外,其他一些服务也崩溃了。我们增加了磁盘并重新启动了服务器。

在启动期间,服务器进行了“数据库恢复”——我能确定一切正常吗?

sql-server-2008 sql-server sql-server-2008-r2

12
推荐指数
1
解决办法
2486
查看次数

具有 50 个实例的 SQL Server 2012 Standard 服务器不会卸载实例

我怀疑这是一个问题,因为我们达到了 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 解决了这个问题,但我没有也不打算自己测试,他们也没有提供关于关闭票证的任何其他评论。

sql-server sql-server-2012

12
推荐指数
1
解决办法
2555
查看次数

在 Powershell 中从 SSMS 检索打印的消息

我们的 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)

sql-server powershell

12
推荐指数
1
解决办法
7117
查看次数

提高 STIntersects 的性能

表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

12
推荐指数
2
解决办法
6649
查看次数

我应该在数据仓库场景中禁用“自动更新统计”吗?

我在 SQL Server 中有 200 GB 的数据仓库。

对于某些查询,我遇到了非常缓慢的执行时间;例如delete,使用inner join.

在对执行计划进行了一些研究之后,我使用该WITH FULLSCAN选项更新了查询中涉及的 2 个表的统计信息。

查询现在在不到一秒的时间内执行,因此统计信息似乎不是最新的。

我正在考虑禁用auto update statistics数据库并UPDATE STATISTICS在加载数据仓库后手动运行。每天晚上从源 ERP 系统增量加载数据仓库。

我假设auto update statistics在数据仓库场景中不是真的有用吗?相反,在数据加载后手动更新统计数据是否更有意义?

data-warehouse sql-server statistics

12
推荐指数
1
解决办法
3086
查看次数

如果在单个事务中对同一记录进行多次更新,将存储多少个版本?

根据 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

12
推荐指数
1
解决办法
4103
查看次数

使用 TM REQUEST 和计划句柄 0x0000 挂起的会话

我们有一个周期性事件,其中许多连接挂在 TM REQUEST(来自sys.dm_os_waiting_tasks)上并且没有任何进展。KILL对受影响的session_id人什么都不做

服务器运行数据库镜像 (2008R2)。暂停和恢复镜像可在问题发生时修复该问题。

陷入这种状态的会话是不可杀死的。镜子上的负载是平常的,而不是突发的。一旦大量连接卡在这种状态,系统就会冻结并且镜像停止复制(所有查询都被阻止)。

有没有人见过这个并知道是什么原因造成的?错误日志中没有任何内容。

sql-server

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

db_owner 无法删除数据库 - 错误 615,SQL Server

我有一个在亚马逊 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 …

sql-server permissions sql-server-2012 amazon-ec2

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

SELECT 和 GROUP BY 子句中的 SQL 计算字段

通常在查询我的 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 服务器实际上执行了两次这些计算,还是它足够聪明,只执行一次?

sql-server

12
推荐指数
2
解决办法
3万
查看次数

如何确定 SSIS 转换是非阻塞、部分阻塞还是完全阻塞?

有几个博客声称将 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 ssis ssis-2012

12
推荐指数
1
解决办法
3188
查看次数