August 2004 Entries

The Dreaded “Aspnet_wp.exe Could Not Be Started” Error

This morning started on a bad foot. We officially designated one of our dev machines as “pooched”. Inside the application log was the dreaded ‘Aspnet_wp.exe Could Not Be Started’ message. I cringe at the sight of this message because it could be the result of any number of security or permission related mis-configurations. One way to start troubleshooting the problem is by enabling auditing and getting some tools from sysinternals.com. See my post Security Whodunit and read Anil’s comment. Going through all the KB articles (linked below) and trouble-shooting steps did not solve the problem. After four hours, the computer was...

A Friend In Need

Multiple choice question: A friend in need is a ____. A) Friend with a non-booting laptop. B) Friend with a non-booting desktop. C) A friend indeed. D) All of the above. I’m sitting here with not one, but two pieces of hardware from two different people I know. Everyone in this field is familiar with playing tech support occasionally, it’s my turn now and they've come in bunches. At least I’m getting a few good meals for my efforts. I’ve already had a down payment made in the form of a sausage, shrimp, and red pepper jambalaya. It’s a shame I...

A DBA's Dream - SQL 2005 DDL Triggers

I’ve never put a trigger into production. I’m not saying this is good or bad, it just hasn’t happened …. yet. With all these new features in SQL 2005 it’s easy to overlook the new capability to use DDL triggers. I think they will become a DBA’s friend long before CREATE ASSEMBLY and stored procedures in managed code ever will. DDL triggers fire when data definition language events happen. For instance, you can block DROP TABLE and ALTER TABLE statements in a database with the following trigger. CREATE TRIGGER AuditTableDDL ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT 'No...

The Misunderstood Mutex

Someone should delete this article in purgatory at codeproject.com. The article is full of mis-information, but look at the view count.  The article attempts to restrict a Windows application to a single running instance. The article tries to do this using the Process class from the System.Diagnostics namespace. The code invokes Process.GetProcessesByName(processName) to see if there are any existing processes running with the same name, and exits if another is found. If you do some searching, you’ll find other code snippets using the same technique. There are at least three problems with this approach: 1) It doesn’t account for race conditions. Two instances of...

Talking Plug-ins and CFOs (Small Company Life)

A lazy developer is a good developer. One developer I worked with had a passion for automating everything. By the time you asked Dan to do something twice, he would have a SQL script ready, or an ASP page, or a VB program that screen scraped data from web servers in 15 different time zones and sent a report to the printer with instructions for automatic collation and stapling. This was all particularly impressive considering Dan had moved into the pointy haired legions of ‘management’. Back in the day before Outlook had a desktop alert, Dan decided to write his...

The Blog Delivery Extension

In order for SQL Server Reporting Services to deliver a report to the destination of your choosing, you only need to create an assembly with class types implementing 3 simple interfaces: IExtension, IDeliveryExtension, and ISubscriptionBaseUIUserControl. Then the fun really begins. I have some tips to share for anyone else who tries. Refer to the last post for the source code. Building The Delivery Extension My delivery extension needs to plug into both the user interface of the Report Manager (for the user to set delivery parameters), and into the ReportServerService (where all the heavy lifting and rendering takes place). After every...

Deliver Reports To A Blog

SQL Server Reporting Services ships with two delivery extensions: one to deliver reports through email, and one to deliver reports to a shared network drive. A third extension to deliver reports to a printer exists in the SSRS samples directory. One day I was setting up an email subscription and a thought occurred. Delivering reports to a blog instead of to a company email alias would be ideal. Instead of sitting in a slew of inboxes, a new delivery extension could post these reports with the blog’s web service API and intranet users could easily comment on and link to...

Visual Studio 2005 Notes

 It’s experimentation day. I was looking at some web forms with Trace enabled in ASP.NET 2.0, looked at the ViewState size, and remembered reading about some view state enhancements in 2.0. So I did a little experiment. In ASP.NET 1.1 I rendered ‘SELECT * FROM pubs..employee’ in a DataGrid control using all the default settings (auto-generated columns, ViewState enabled). The resulting page used 26,241 bytes. In ASP.NET 2.0 I rendered ‘SELECT * FROM pub..employee’ in a DataGrid control, again using all the defaults. The resulting page used 16,089 bytes. A difference of 10,152 bytes, which is quite a bit if...

I Can't Take The Heat

The air conditioner is broken at work and I am now sitting in the world’s only sauna that requires business casual dress. Like a fine Pinot Grigio, I must be properly chilled before I can reach my full potential. It’s too hot here to debug software, so I’m going to blog. I work in a government technology “incubator” building, meaning there are a dozen startup companies around here and we share a common copier room, common break room, and common conference rooms. The key word here is ‘government’. I have complete faith the county maintenance people feel my discomfort and...

Reporting Services Security

For anyone facing authentication or authorization errors in a Reporting Services environment, or just looking for some introductory material, I've posted two new articles to OdeToCode: Introduction To Role-Based Security In SQL Server Reporting Services Authentication, Role-based Security, and Reporting Services Web Services If you give them a read, please let me know if you think they are easy to understand, and please let me know if they contain any errors.

The Telephone Is Ringing (Small Company Life)

Working for a startup means we forego some ‘luxuries’ of business life, like having a receptionist in the office to answer phones. We all have to answer the phone. I purposefully keep my phone at a location out of arm’s reach, giving everyone else who keeps a phone close by the first chance at answering. There are a few reasons I try to avoid the phone. First, I get tired of talking to the cold-calling photocopier sales people. There is nothing worse than being neck deep in a database and having one of these overly cheerful people call and tell...

Rush

I had to miss this month’s CMAP user group meeting – but for good reason. Rush was playing at the Nissan Pavilion in VA. I scored tickets next to the soundboard area. The person I sat the closest to had 3 Alienware laptops setup, but only one of which I could see clearly. It was running Windows XP. I saw a splash screen for software by the name of TouchMixer. Google tells me the software is made by Derivative Inc. This fellow controlled all of the video effects on the big screen. I’ve seen some good performances the first 7 months...