小编Bre*_*zar的帖子

我可以在一定天数后恢复交易吗

我有一个 Sql 脚本文件,它执行一系列操作。我在脚本中有事务,所以如果发生什么事,整个脚本都会回滚。

我的问题是说脚本成功执行并且在测试应用程序时发现了某些错误。

现在我想在说 x 天后恢复脚本中发生的所有操作。这是一个事务性数据库,我不必担心任何新的数据添加,因为这只是一个暂存环境。我关心的是恢复 SQL 脚本本身所做的所有结构或数据修改。有人可以告诉我有哪些选择。

我是否需要在回滚脚本中为原始脚本所做的操作编写完全相反的语句。

示例:
主脚本 -Insert Into Customers values(1,'Test','USA') 回滚脚本 - 从 id = 1 的客户中删除 .. 等其他事务(我已经简化了这一点,我在SQL 脚本文件)

谢谢

谢谢

sql-server-2008 sql-server

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

你能在 T-SQL 中用空格和换行符分隔模式和对象吗?

编写查询时,您能否使用空格和换行符将模式和对象分开?

sql-server t-sql

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

向 CROSS APPLY 添加查询提示

我需要将查询提示(如NOWAITNOLOCK)应用于CROSS APPLY此查询中的 。我该怎么做:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

SELECT *
FROM sys.objects obj WITH (NOLOCK) 
INNER JOIN sys.stats stat WITH (NOLOCK) ON stat.object_id = obj.object_id  
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) sp
Run Code Online (Sandbox Code Playgroud)

我无权访问函数内容(出于显而易见的原因。)

我继续从问题中删除了repro,以使其更清楚。我不太关心重现阻塞的能力。(它也发生在客户环境中,以及第 2548 期的 First Responder Kit 中。)

sql-server hints t-sql cross-apply

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

如何配置 Ola Hallengren 备份脚本进行加密

如何向 ola.hallengren 备份脚本添加加密。

简而言之我想实现这个目标

BACKUP DATABASE [MyTestDB]  
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\MyTestDB.bak'  
WITH  
  COMPRESSION,  
  ENCRYPTION   
   (  
   ALGORITHM = AES_256,  
   SERVER CERTIFICATE = MyTestDBBackupEncryptCert  
   ),  
  STATS = 10  
Go
Run Code Online (Sandbox Code Playgroud)

backup ola-hallengren

3
推荐指数
1
解决办法
2545
查看次数

更新统计信息后查询计划不会失效

我正在运行一些测试以找出更新统计信息后查询计划何时失效。我用于测试的机器是 SQL Server Developer 2016 SP1 CU7。

我在BrentOzar.com上找到了一篇关于如何跟踪重新编译的文章,但我从未得到重新编译。 Auto Update Statistics并且Auto Create Statistics都启用

这是我的测试:

/* Create a table and put over 1k rows in it (to get past the 500 row stats threshold) */
CREATE TABLE dbo.MyTable (ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, StringField VARCHAR(50));
GO
INSERT INTO dbo.MyTable(StringField) 
SELECT 'Stuff' FROM sys.all_objects;
GO

/* Start a trace monitoring recompiles */
exec sp_BlitzTrace @Action='start', @TargetPath='c:\temp\', @SessionId=@@SPID, @TraceRecompiles=1;
GO
SELECT * FROM dbo.MyTable WHERE StringField = …
Run Code Online (Sandbox Code Playgroud)

statistics extended-events sql-server-2016

3
推荐指数
1
解决办法
347
查看次数

什么会导致休眠会话有一个打开的事务?

对于我们的一个 SQL 服务器,有一个过程会造成阻塞混乱:

大多数情况下,该存储过程在一秒内完成,但不知何故使事务保持打开状态。我从 sp_whoisactive 看到的是 status = sleep 并打开 tran 1 持续大约 5-6 分钟。在这段时间内,出现了起伏的阻塞链。

这个 SP 没有像 BEGIN 和 END TRAN 这样的任何事务。它做了一些基本的 select col,col2,col3.... into #temptables from table1 inner join table 2 ... 然后从 #temptable 中选择

当我们从应用程序检查为什么可能有一个事务保持打开状态时,我正在阅读这些场景以在 SP 本身中使用 XACT ABORT ON。但是当不涉及事务时,XACT ABORT 设置如何在这种情况下提供帮助?

请指教

performance sql-server sql-server-2014 query-performance

3
推荐指数
1
解决办法
191
查看次数

为什么 Postgres 不使用我的功能索引?

我在 AWS Aurora Postgres 15.5 上有一个 Stack Overflow 数据库的公共副本:

  • 服务器:query.smartpostgres.com
  • 用户名:只读
  • 密码:511e0479-4d35-49ab-98b1-c3a9d69796f4

users 表有这个索引:

create index users_length_displayname on users(length(displayname));
Run Code Online (Sandbox Code Playgroud)

但是当我运行以下任一查询时:

select * from users where length(displayname) > 35;
select length(displayname) from users where length(displayname) > 35;
Run Code Online (Sandbox Code Playgroud)

他们不使用功能索引,正如他们的查询计划所证明的那样:

显示表扫描的查询计划

那么,呃,为什么?

postgresql postgresql-performance

3
推荐指数
1
解决办法
798
查看次数

查找谁执行了存储过程

SQL Server 中是否有一种方法/任何函数/DMV 可以提供谁执行了特定数据库的存储过程?

sql-server stored-procedures

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

关于sp_BlitzIndex的几个问题

当 sp_BlitzIndex 做索引建议时,我脑子里的问题如下:

是的,建议的索引在执行 select 语句时会带来很多速度优势。但是这些索引还有另一个成本,即删除、插入、更新查询

sp_BlitzIndex 脚本是否也考虑了删除、插入、更新成本?还是仅评估 select 语句会带来多少速度优势?

此外,我如何通过 sp_BlitzIndex 列出坏索引?他们是如何确定坏的?

非常感谢您的回答

sql-server sp-blitzindex sql-server-2017

2
推荐指数
1
解决办法
384
查看次数

sp_blitzcache 不为长时间运行的查询返回执行计划

没有执行计划仅在 DMV sys.dm_exec_query_plan 的 query_plan 列中返回空值。关于为什么的任何线索?我使用 sp_blitzcache 'reads' 和 'duration' 来显示长时间运行的查询,但没有执行计划返回。

sql-server

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