Thursday, February 26, 2015

ISUG-Tech 2015

Looks like the ASE conference for 2015 is approaching... hope to see you all there.

In case anybody is interested, I have 4 sessions; 2 during the conference, and 2 post-conference half-day sessions. I've answered a few questions from "the press" here:

The conference blog is here:

I have it on Good Authority (from a board member) that the early bird registration specials have been extended; I hope to see you there.

Wednesday, November 5, 2014

Data from a corrupt ASE table

I'm pleasantly surprised this worked.

Issue: A corrupt table (and corrupt backup, which somehow dbcc did not pick up) was kicking out errors at scan time. BCP failed at abotu 600,000 out of 800,000 rows. We could bcp past the error (sometimes you can bcp to the error, then bcp from there forwards.

So, I did something ugly:

1) build a list of all table IDs into a temp table (this can be done with an index scan, the index was not corrupt).

2) using a cursor, walk that list, and request those rows one at a time, logging into the temp table the result of the request

When I was done, I found that the rows that were inaccessable via a table scan were accessible via index traversal. We got lucky.

NOTE: I'd have written prettier code if I know it was going into my blog.

Hope this helps somebody out.

declare @curRID int, @char varchar(10)


while 1 = 1


        select @curRID = min(RoomId) from RoomIDList where processed = 0
        if @@rowcount = 0 break

        update RoomIDList set processed = 1 where RoomId = @curRID

        insert RoomTemp select * from web_app.Room where RoomId = @curRID

        update RoomIDList set processed = 2 where RoomId = @curRID

        select @char = convert(varchar(10),@curRID)

        print @char


Wednesday, October 8, 2014

Seeking tips for the new ASE 16 Admin book

The new "Administrator's Guide to ASE 16" is coming out this year. I like to add a section, "Tips from the world at large" because I think everybody has an experience worth sharing. 

Please send the tip to:

If you want your name in print please include in the email, "Please put my name on my tip" otherwise it will go in anonymously.


Wednesday, February 5, 2014

Max utility parallel degree

Running ASE 15.7 at a high patch level? Say, 100 or higher? Having trouble running BCP, index creation, etc. in parallel? Here's why:

There's a new configuration parameter.

max util parallel degree specifies the server-wide maximum number of worker processes allowed per query used by the create index with consumers and update stats with consumers commands.


Wednesday, September 18, 2013

New ASE content being added to Confio's site

Confio, a partner of ours with an awesome performance monotoring tool (call us if we can arrange a demo), has published extracts of several of our articles on their site... please go take a look!

Wednesday, April 17, 2013

A bit too new to blogging....? How to ask me questions...

Hi, all,

Looks like I've had some comments sitting out there for a couple of years of which I was unaware... (I'm much better at database things...)

In the future, you're welcome to post here, but for a quick answer, email me directly,

Have a fantastic day!


Thursday, April 4, 2013

What's the plan of the process currently spinning out of control?

Sometimes you want to know what's going on NOW, not later after everything is done running. ASE 15 & later, you can run sp_showplan, which will get you that information while the spid is running.

sp_showplan spid, batch_id output, context_id output, stmt_num output

To display the showplan output for the current SQL statement without specifying the batch_id, context_id, or stmt_num:
sp_showplan spid, null, null, null