[dba-SQLServer]Rolling back a transaction log?

Francisco H Tapia my.lists at verizon.net
Mon Feb 24 12:07:42 CST 2003


This is a cleaner route, thanks for posting it :D
-Francisco
http://rcm.netfirms.com
----- Original Message -----
From: "Djabarov, Robert" <Robert.Djabarov at usaa.com>
To: <dba-sqlserver at databaseadvisors.com>
Sent: Monday, February 24, 2003 8:34 AM
Subject: RE: [dba-SQLServer]Rolling back a transaction log?


: Here's my version of the same idea that I use whenever I need to get rid
of connections from a database:
:
:    use master
:    go
:    if object_id('dbo.sp_KillUsers') is not null
:       drop procedure dbo.sp_KillUsers
:    go
:    create procedure dbo.sp_KillUsers (
:       @dbname   varchar(128) )
:    as
:       declare @spid varchar(10), @print varchar(8000)
:       set nocount on
:       if @dbname is null begin
:          set @print = 'Database name must be specified!' +
char(13)+char(10) + 'Operation aborted.'
:          raiserror (@print, 15, 1)
:          return (1)
:       end
:
:       if @dbname = db_name() begin
:          set @print = 'Executing this procedure from the same database ' +
:                       'as the one that you are currently in is not
allowed! ' + char(13)+char(10) +
:                       'Operation aborted.'
:          raiserror (@print, 15, 1)
:          return (1)
:       end
:
:       select @spid = cast(min(spid) as varchar(10)) from sysprocesses
(nolock) where dbid = db_id(@dbname)
:       while @spid is not null begin
:          exec ('kill ' + @spid)
:          select @spid = cast(min(spid) as varchar(10))
:             from sysprocesses (nolock)
:             where dbid = db_id(@dbname) and spid > cast(@spid as int)
:       end
:    go
:    -- Example: kill all users in pubs
:    exec dbo.sp_KillUsers pubs
:
: This way you're not using something as archaic as a  C U R S O R,
especially off of a temporary table!!!
: ______________________________________________________
: Robert Djabarov
: Certified MS SQL Server DBA
: Certified MS SQL Server Programmer
: Certified MS VB Programmer
: ? (210) 913-3148 - phone
: ( (210) 753-3148 - pager
:
:  -----Original Message-----
: From: Francisco H Tapia [mailto:my.lists at verizon.net]
: Sent: Monday, February 24, 2003 9:51 AM
: To: dba-sqlserver at databaseadvisors.com
: Subject: Re: [dba-SQLServer]Rolling back a transaction log?
:
: Found out some GREAT NEWS!, Hope you all had a good weekend... it TURNS
out
: that when you don't auto-shrink your log files, meaning you set a fixed
: lenght and then auto-backup whenever your log file hits 60% there are some
: outstanding benefits.... One of which you NEVER loose any data... When you
: go and choose to restore your database and you have your full backup
: selected (hopefully from last night)  and your logs from during the day,
: simply plug in a point in time to restore to and viola!, 15 minutes before
I
: was alerted was the time I chose and it restored the entire db up until
that
: point, I kept playing with it pushing less and less time until I found the
: point (minute) in time that it was killed.. I did this of course NOT on
the
: production server as it has already been restored loosing only 2 hrs worth
: of data, but instead I did this on my TEST database that I run on my Box.
I
: hope this helps you guys out... as an added bonus, I found this great
script
: at www.SQLSERVERCENTRAL.com, I can't say enough good things about that
site,
: it is a kick all users out of my DB script.. just drop it into QA or make
a
: sproc out of it, and run it, it will kick out all  your database users,
: which is required in order to restore it.. here it is....(BTW, if you've
: never visited the site and you're dealing more and more with SQL you
really
: ought to stop by, there are articles written here with many times real
life
: situations taken into consideration... )
:
: DECLARE @dbname varchar(50)
:
: SET @dbname = 'YourDBNAME HERE'
:
:
: DECLARE @strSQL varchar(255)
: PRINT 'Killing Users'
: PRINT '-----------------'
:
: CREATE table #tmpUsers(
: spid int,
: eid int,
: status varchar(30),
: loginname varchar(50),
: hostname varchar(50),
: blk int,
: dbname varchar(50),
: cmd varchar(30))
:
: INSERT INTO #tmpUsers EXEC SP_WHO
:
:
: DECLARE LoginCursor CURSOR
: READ_ONLY
: FOR SELECT spid, dbname FROM #tmpUsers WHERE dbname = @dbname
:
: DECLARE @spid varchar(10)
: DECLARE @dbname2 varchar(40)
: OPEN LoginCursor
:
: FETCH NEXT FROM LoginCursor INTO @spid, @dbname2
: WHILE (@@fetch_status <> -1)
: BEGIN
:  IF (@@fetch_status <> -2)
:  BEGIN
:  PRINT 'Killing ' + @spid
:  SET @strSQL = 'KILL ' + @spid
:  EXEC (@strSQL)
:  END
:  FETCH NEXT FROM LoginCursor INTO  @spid, @dbname2
: END
:
: CLOSE LoginCursor
: DEALLOCATE LoginCursor
:
: DROP table #tmpUsers
: go
:
:
: -Francisco
: http://rcm.netfirms.com
: ----- Original Message -----
: From: "Stuart McLachlan" <stuart at lexacorp.com.pg>
: To: <dba-sqlserver at databaseadvisors.com>; <CWortz at tea.state.tx.us>
: Sent: Saturday, February 22, 2003 5:12 PM
: Subject: RE: [dba-SQLServer]Rolling back a transaction log?
:
:
: : If he deleted a database, he would have deleted the mirrored version
: : as well. The only thing mirroring protects you from is physical failure
of
: : a drive.
: :
: : > Francisco,
: : >
: : > How frequently you backup is dependent on how valuable is the lost
data.
: : > If you can afford to lose a day's worth of data, or if you can easily
: : > recreate the day's worth of data, then you backup daily.  If you can
: : > afford to lose an hour's worth of data, or if you can easily recreate
: : > the hour's worth of data, then you backup hourly.  If you cannot
afford
: : > to lose any data, then you mirror your database.
: : >
: : > Charles Wortz
: : > Software Development Division
: : > Texas Education Agency
: : > 1701 N. Congress Ave
: : > Austin, TX 78701-1494
: : > 512-463-9493
: : > CWortz at tea.state.tx.us
: : > (SELECT * FROM users WHERE clue > 0)
: : >
: : >
: : > -----Original Message-----
: : > From: Francisco H Tapia [mailto:my.lists at verizon.net]
: : > Sent: Friday 2003 Feb 21 13:19
: : > To: dba-SQLServer at databaseadvisors.com; sswug-sql2k at topica.com
: : > Subject: [dba-SQLServer]Rolling back a transaction log?
: : >
: : >
: : > Well it finally happened... We have a Complaint database that runs in
: : > conjunction with a goldmine database.  The Goldmine database tracks
: : > outgoing calls made by our company to customers in order to track
sales
: : > leads and now complaints.  Since 4/1/2002 we have not had a database
: : > error or hiccup until now.  The company's official DBA, while working
on
: : > a development database on the production server (yes, that's right)
: : > inadvertently wiped out my database instead of his test one this
: : > morning, The users of the Complaint db suddenly began to complaining
: : > that there were no records, and upon checking I found this to be the
: : > case.  I backup every night, and I have the log file backup when it
: : > reaches 60%.  BUT.  I did not have *ANY* protection for the moments
: : > before the wipe out.  Initially I panicked about not being able to
kick
: : > the users out quickly enough... I didn't bother to *remember* that I
had
: : > a Kill All Users In Db script.  So about 10 minutes later (after
kicking
: : > all the users out) I restored the database back to last log backup,
but
: : > that was not good as it had the transactions that wiped out the
: : > database.  SO I had to restore to last nights copy officially killing
: : > all entries from 10am and prior. :(
: : >
: : > I've secured my script for killing Active Users in the DB.  And My
boss
: : > knows *who* wiped out the database, in fact I made sure he knew as
soon
: : > as it happened ... maybe that's not a good political move, but I'm in
: : > charge of the db.  Now the question is... Since the log file is only
: : > 1meg long and on average it doesn't backup the log for perhaps every 2
: : > to 3 days... (I do make a full backup every night).  I suppose I could
: : > manage the backups to include incremental changes every hr, so that as
: : > little data is lost?  What do you guys suggest?
: : >
: : >
: : > -Francisco
: : > http://rcm.netfirms.com
: : > _______________________________________________
: : > dba-SQLServer mailing list
: : > dba-SQLServer at databaseadvisors.com
: : > http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
: : > http://www.databaseadvisors.com
: : >
: :
: :
: : --
: : Lexacorp Ltd
: : http://www.lexacorp.com.pg
: : Information Technology Consultancy, Software Development,System Support.
: :
: :
: :
: : _______________________________________________
: : dba-SQLServer mailing list
: : dba-SQLServer at databaseadvisors.com
: : http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
: : http://www.databaseadvisors.com
: :
:
:
: _______________________________________________
: dba-SQLServer mailing list
: dba-SQLServer at databaseadvisors.com
: http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
: http://www.databaseadvisors.com
:
:
:
: _______________________________________________
: dba-SQLServer mailing list
: dba-SQLServer at databaseadvisors.com
: http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
: http://www.databaseadvisors.com
:





More information about the dba-SQLServer mailing list