我在 sqlskills.com 上使用此博客作为练习在事务日志备份中查找相关 LSN 以进行时间点恢复的指南。
备份事务日志后,我尝试使用以下命令读取它:
SELECT COUNT(*) FROM fn_dump_dblog (
NULL, NULL, 'DISK', 1, 'D:\TEMP\test_tlog2.bak',
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, …
Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server sql-server-2008-r2 restore transaction-log
SQL Server - 在多个实例上的多个数据库上运行相同查询的最佳方法是什么?例如,我们有许多应用程序数据库,具有相同的架构,需要聚合信息。
我目前使用的脚本依赖于已设置的链接服务器和一个用于标识要循环的实例和数据库的表。
/* 声明一些游标变量和动态sql字符串变量 */
声明 @currentDB nvarchar(64)
声明 @connectionstring nvarchar(256)
声明 @sqlstring nvarchar(max)
CREATE TABLE #TEMP1
(
currentDB varchar(32)
,field1 varchar(128)
,field2 smallint
,field3 datetime
)
/* Build and open the cursor */
DECLARE connectioncursor CURSOR FAST_FORWARD
FOR
SELECT currentDB, connectionstring
FROM [admin].dbo.DatabaseList
WHERE dbtype = 'PROD'
OPEN connectioncursor
FETCH NEXT FROM connectioncursor INTO @currentDB, @connectionstring
/* Start the loop through db list */
WHILE @@FETCH_STATUS = 0
BEGIN
/* Build and set the sql string …
Run Code Online (Sandbox Code Playgroud) 在阅读了数据库快照之后,它们似乎作为小 DDL 和 DML 更改的备份和快速恢复方法很有用。此外,它们对于大规模开发/测试环境很有用。
我的预期用途是在我们的测试环境中,我们需要测试 DDL/DML 脚本并希望恢复到以前的状态而不需要很长的恢复时间。这里除了快照之外还有其他方法吗(不包括虚拟机解决方案)?这是否已被广泛采用,是否有任何需要注意的问题?我试图了解 MS 文档和我读过的少数博客之外的社区。如果您认为在线提供的文档具有代表性,那么这对我来说是一个很好的答案。
再次感谢各位大师!