рдЯреЗрд╕реНрдЯ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ред рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг


рдпрджрд┐ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВ - рддреЛ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд░рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЛрд╣рд░рд╛рдП рдЬрд╛ рд╕рдХреЗрдВ?
рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ рдЖрдзрд╛рд░ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХрд╛ рдЬрд╡рд╛рдм рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╣реЛрдВ рддрд╛рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рд▓рд┐рдЦреВрдВ (рд╣рдо рдРрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ "рдореВрд▓ рд╕реЗрдЯ" рдХрд╣реЗрдВрдЧреЗ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЦреБрдж рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдИ рдмрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗред

рдирд┐рд░реНрдгрдп рдХреА рд╕рдореАрдХреНрд╖рд╛


рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдХрдИ рд╡рд┐рдХрд▓реНрдк рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ:

(рдЖрдк рдХреНрдпрд╛ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╕реБрдЭрд╛рддреЗ рд╣реИрдВ?)

рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛


"рд╕рдлрд╛рдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреБрдЫ рдирдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк "рдмреИрдХрдЕрдк" рдХреЗ рд╕рд╛рде рдерд╛ред
рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдПрдордПрд╕ рд╕рдХреЗрд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред
рд╕рдВрдкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг .Net рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ MS Sql рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рд╛рдордиреЗ рдЖрдИрдВ:


рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░ рдмреИрдХрдЕрдк рд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
DECLARE @twho TABLE( SPID int , ecid int , [STATUS] NVARCHAR(64) , [Loginame] NVARCHAR(64) , [HostName] NVARCHAR(64) , [Blk] int , [DBName] NVARCHAR(64) , cmd NVARCHAR(64), request_id INT) INSERT INTO @twho EXEC SP_WHO DECLARE spid_cursor CURSOR FOR SELECT SPID FROM @twho WHERE DBName = @dbname OPEN spid_cursor DECLARE @SpidToClose INT FETCH NEXT FROM spid_cursor INTO @SpidToClose WHILE @@FETCH_STATUS = 0 BEGIN IF @@SPID <> @SpidToClose BEGIN -- kill     . declare @str varchar(32) set @str='KILL ' + cast(@SpidToClose as varchar(16)) exec(@str) END FETCH NEXT FROM spid_cursor INTO @SpidToClose END CLOSE spid_cursor; DEALLOCATE spid_cursor; 


рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
 USE master RESTORE DATABASE [FSID_test] FROM DISK = N'c:\BackupPathHere\BackupNameHere.bak' WITH FILE = 2 


SetUp рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб
 public static void RevertDb() { //      -     .     var sb = new SqlConnectionStringBuilder(Utilities.ConnectionDb) { ConnectTimeout = 2, ApplicationName = "FSID Tests, clearing" }; using (var con = new SqlConnection(sb.ToString())) { con.Open(); using (var cmd = con.CreateCommand()) { cmd.CommandText = Utilities.CommandKillAllConectionsToDb; cmd.Parameters.AddWithValue("@ dbname", sb.InitialCatalog); //       var result = cmd.ExecuteScalar(); } } //      -     , .     .  . SqlConnection.ClearAllPools(); using (var con = new SqlConnection(sb.ToString())) { con.Open(); using (var cmd = con.CreateCommand()) { cmd.CommandText = Utilities.CommandRevertTestDb; cmd.ExecuteScalar(); } } } 


рдЕрдм рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЖрд╕рд╛рди рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореБрдЭреЗ рдХрдИ рдЫреЛрдЯреА-рдореЛрдЯреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕рд╛рдордирд╛ рдХреА рдереА:


рдЗрд╕рд▓рд┐рдП, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рд╕рдм рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:


рдпреБрдкреАрдбреА:
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджреЛ рдмрд╛рддреЗрдВ рд╕реБрдЭрд╛рдИ рдЧрдИ рд╣реИрдВ:

рдпреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдЬреИрд╕реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд, рдЙрдирдХреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд╣реИрдВ (рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрди-рджреЗрди рд╣рдореЗрд╢рд╛ рддреЗрдЬреА рд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

Source: https://habr.com/ru/post/In145708/


All Articles