Reporting Services resources

binoculars-2009-09-28

Thanks to everyone who attended my SQL Server Reporting Services class in Nashville over the last couple of weeks. As promised, here is a list of online resources that may prove useful to you as you continue to work with Reporting Services.

Additionally, the following links, though not wholly dedicated to Reporting Services, frequently have good Reporting Services articles and content.

And finally, the following book has been well received by its readers according to Amazon.

This list is far from comprehensive. So if you have some links that you’ve found worthwhile, please share them in the comments below.

Update: After I published this list, I was reminded of another great Reporting Services resource entitled Rules to Better SQL Reporting Services. It discusses some best practices for report design to give your users a better experience. It’s definitely worth the read.

Good information is easy to find

Serious technologist and part-time enthusiasts alike know that the Internet is awash in information. Much of the information is good. Some of it is, well, not so good. And unfortunately, some of it is just plain wrong. It can misleading at best and downright damaging at an extreme. Applying what you learn on the Internet is Caveat Emptor or “Let the buyer beware”.

So how can you separate the wheat from the chaff? How can you easily find the rose among thorns? To answer that, let’s consider the medium or form of the information provided.

Newsgroups and forums

When looking for a solution to a specific question or problem they are experiencing, one of the first places many people turn is the newsgroups and forums.

Newsgroups
Google Groups is a great place to start if you’re unfamiliar with newsgroups. You can think of newsgroups as the billboards of the information super hi-way. They are messages that anyone can read. Google Groups provides a good, web-based front end on the the NNTP service that makes it easy to search through all of the posts.

There are other sources, too. Microsoft maintains some news servers that host newsgroups for many of their products, including SQL Server.

One thing that attracts many people to the newsgroups is that they can use their preferred newsreader to browse the newsgroups and manage their posts.  You don’t have to use the web front end.

The challenge that most people face when using newsgroups is easily identifying the sound advice from the rest of the noise. Newsgroups are not regulated or monitored, and that can be a good thing. It allows everyone to contribute freely. But it also means that anyone, yes anyone, can say pretty much anything on newsgroup with little ramifications. This can lead to some unusual and potentially unsound advice.

That’s not to say that newsgroups are a free for all. No, there are really dedicated folks, many are MVPs, who constantly peruse and police the newsgroups. They offer good advice and call out those who are misguided in their input. But this is an informal system at best.

Forums
Forums are very similar to newsgroups in many aspects – people post questions and other people respond with advice or solutions. Forums typically only have a web front-end and are specific to a particular company or organization. There are lots of good SQL Server related forums that you can frequent for information.

SQLServerCentral.com, SQLTeam.com, the MSDN Forums are all great places to look for information. Most forums have official moderators that monitor the discussions; they ensure that bad advice is not being proffered and to keep the posts on topic.

StockOverflow.com and ServerFault.com have taken the forums concept to a new and different level. Questions and responses are monitored not just by a few moderators but essentially by the community at large. You can vote up or down responses to a particular question to indicate those that you find most and least valuable. This allows the community to, and trusts that the community will, elevate the helpful replies while allowing the rest to fade away.

Blogs & Web Sites

Blogs and other web sites can also be a great source of information. Most every morning, I have a list of blogs that I read using a RSS (Really Simple Syndication) reader. My reader of choice is Google Reader, but there are lots from which to choose.

Once again, you should be careful and confirm whatever you read on a blog posting before running off and implementing it on your server. Anyone can create a blog and claim to be an industry expert. So it helps to find a few names that you trust and start with them.

SQLBlog.com is a great place to look for SQL Server related blog content. To blog there is by invitation only and most of the bloggers are SQL Server MVPs so you can pretty sure that you’ll receive sound advice. The Technet blogs are also a great reservoir of technical knowledge, as is SQLServerPedia.com.

Additionally there are great community based web sites like Simple-Talk.com and MSSqlTips.com that have rigorous standards for the articles they produce.

Find a who’s who

Still not sure where to start? Well, there are some really dedicated folks out there who create a sort of a Who’s Who for bloggers. Thomas LaRock is one of the most well known in the SQL Server realm. He regularly updates his rankings list of best SQL Bloggers. As a matter of fact, my blog made his most recent list. It was promoted to msdb status.

This list is by no means to be considered exhaustive. As a matter of fact, as soon as it is published it’ll likely be dated. So if you know of any resources or links that I’ve missed, please feel free to share them in the comments section.

Thanks!

Joe

Update: Shortly after I published this blog posting, I was reminded of another resource that’s definitely worth mentioning – SSWUG.  The SQL Server Worldwide User Group provides articles, forums, & scripts to its members. It also combs the internet to aggregate articles from other sources to present them in one consolidated location. Another interesting concept from SSWUG is its virtual conference with some of the biggest names in the industry presenting sessions online.

Interacticely sorting columns in SQL Server 2005 Reporting Services

Business Intelligence Developers Studio (aka BIDS) for Microsoft SQL Server 2005 Reporting Services makes creating engaging and dynamic reports nearly trivial in some respects. You can easily create drill-down and drill-through reports with just a few mouse clicks.

A drill-down report allows your users to see more or less detail information by clicking on a row of data and having the report expand or collapse supporting detail rows. Drill-through reports take the user from one report to another supporting report via a mouse click. For example, by clicking on a Product Number in a Sales Order, the user will be taken to the Product Information report for that product.

Interactive Sorting

You can also create reports that provide interactive sorting. On a report that uses a table data region, users can click on a column heading and have the report auto-magically sort by that column. Let’s walk through a graphical example to demonstrate. Here’s an example of a Contact Phone List report created in BIDS. It lists contacts from the sample Adventureworks database using a table data region.

We want to allow users to sort the list by the First Name or the Last Name column. In the Layout view, click the table First Name header cell to select it, then right click to open a context-sensitive menu, and choose Properties as shown in the following illustration.

This opens the Textbox Properties window as shown below. Notice the 6th tab is called Interactive Sort. Check the “Add an interactive sort action to this textbox” option. Then click the down arrow in the Sort Expression combobox. Choose the field on which you like to sort when the user clicks this textbox. In our case this this Fields!FirstName.Value expression.

Repeat this process for each of the columns in the table data region that your users may want to sort by. In this example, I’ll enable interactive sorting all three columns, however in practice there’s probably little reason someone would want to sort by the Phone column. Once completed, preview the report. The report is still sorted in the default order. But you’ll notice the little arrows beside each column header.

By clicking on the little arrow beside the column header text, our users can change the sort order of the report. Clicking the same arrow for a second time reverses the sort order.

And there you have it. With only a few mouse clicks, we’ve enriched the experience our users have while viewing this report. Of course, this technique only works when the report is rendered in formats that support interactivity. When being viewed as a TIFF, for example, the user will not be able alter its presentation.

Got other techniques for providing a greater level of interactivity in your reports? I’d love to hear about them so feel free to share in the comments section below.

The Revolutionary MacBook Wheel

Don't get caught up in a flame war

Don't get caught up in a flame war

There are several topics that, if mentioned in a news group or forum, will almost immediately start a flame war amongst ordinarily mild-mannered people. SQL Server vs Oracle is obviously one. But there are others. You know what they are.

“Should database objects be named plurally or singularly, Customer or Customers?”

“Singular.”

“No, plural. You nincompoop!”

There are others, many others. And strong opinions are not limited to the database world. Your choice of operating system can make you either an enlightened visionary or a complete dolt depending on who you’re talking to at the moment.

Not a call to arms

Now, I’m not trying to start a flame war. But sometimes there something so spot on for one side or the other that it’s just too good not to share. This video has been around for while, but it’s one of those. It’s just plain funny.

As an aside, several years ago I opted out of the Windows vs Mac battle and adopted Ubuntu as my O/S of choice. It rocks! See My Virtualization Setup for a description of my system and how I use it to work with SQL Server and the .Net framework.

I hear good things about Windows 7. And I would certainly consider a MacBook. But they both seem to be pretty expensive compared to my Open Source Software solution. So for now, I’ll stick with Ubuntu. I do have an iPhone and consider it to be the best mobile business device I’ve ever owned, hands down, no comparison.

This video has been around for while, but it’s too good not to share. For the record and before I get flamed for bashing Apple, I’m not a MacBook detractor. Nor am I a MacBook snob. Although I know some of each.

Running a Server Side Trace

This is part two of three part series on creating, running, and scheduling Server Side Traces in SQL Server. Part I, Scripting Server Side Traces, was posted on August 31, 2009. Part III will be posted soon.

SQL Server Profiler can bring your production server to a screeching halt

In a prior post entitled Scripting Server Side Traces I lauded the laurels of SQL Server Profiler as a wonderful tool to use in development and QA environments to really see what’s happening inside your SQL Server. It’s a great way to shine a spotlight into the nooks and crannies of your database server. But try to use it on a production server and you’re likely to notice some unpleasant performance degradations. My warning to you was to use with caution on production servers. It’s better to use Server Side Traces and I demonstrated how SQL Server Profiler can be used to script out the Server Side Traces for you. If you haven’t already read that blog post, it may be worth while to go back and read it before continuing on with this one.

In this, the second of a three part series on Server Side Traces, we’ll examine the trace script to see what it’s doing. Then I’ll show how you can start and stop Server Side Traces using T-SQL procedures.

Modifying the script

We’ll start with a relatively simple Server Side Trace script that was generated for us by SQL Server Profiler. The script can be seen below. It’s rather long, but we’ll break it down into just a few sections that can be easily digested.

/****************************************************/
/* Created by: SQL Server 2008 Profiler             */
/* Date: 08/27/2009  08:59:12 AM         */
/****************************************************/

–- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 500

–- Please replace the text InsertFileNameHere, with an appropriate
–- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
–- will be appended to the filename automatically. If you are writing from
–- remote server to local drive, please use UNC path and make sure server has
–- write access to your network share

exec @rc = sp_trace_create @TraceID output, 0, N’E:\demo\demotrace2′, @maxfilesize, NULL
if (@rc != 0) goto error

–- Client side File and Table cannot be scripted

–- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 27, 7, @on
exec sp_trace_setevent @TraceID, 27, 15, @on
exec sp_trace_setevent @TraceID, 27, 55, @on
exec sp_trace_setevent @TraceID, 27, 8, @on
exec sp_trace_setevent @TraceID, 27, 32, @on
exec sp_trace_setevent @TraceID, 27, 56, @on
exec sp_trace_setevent @TraceID, 27, 64, @on
exec sp_trace_setevent @TraceID, 27, 1, @on
exec sp_trace_setevent @TraceID, 27, 9, @on
exec sp_trace_setevent @TraceID, 27, 41, @on
exec sp_trace_setevent @TraceID, 27, 49, @on
exec sp_trace_setevent @TraceID, 27, 57, @on
exec sp_trace_setevent @TraceID, 27, 2, @on
exec sp_trace_setevent @TraceID, 27, 10, @on
exec sp_trace_setevent @TraceID, 27, 26, @on
exec sp_trace_setevent @TraceID, 27, 58, @on
exec sp_trace_setevent @TraceID, 27, 66, @on
exec sp_trace_setevent @TraceID, 27, 3, @on
exec sp_trace_setevent @TraceID, 27, 11, @on
exec sp_trace_setevent @TraceID, 27, 35, @on
exec sp_trace_setevent @TraceID, 27, 51, @on
exec sp_trace_setevent @TraceID, 27, 4, @on
exec sp_trace_setevent @TraceID, 27, 12, @on
exec sp_trace_setevent @TraceID, 27, 52, @on
exec sp_trace_setevent @TraceID, 27, 60, @on
exec sp_trace_setevent @TraceID, 27, 13, @on
exec sp_trace_setevent @TraceID, 27, 6, @on
exec sp_trace_setevent @TraceID, 27, 14, @on
exec sp_trace_setevent @TraceID, 27, 22, @on
exec sp_trace_setevent @TraceID, 189, 7, @on
exec sp_trace_setevent @TraceID, 189, 15, @on
exec sp_trace_setevent @TraceID, 189, 55, @on
exec sp_trace_setevent @TraceID, 189, 8, @on
exec sp_trace_setevent @TraceID, 189, 32, @on
exec sp_trace_setevent @TraceID, 189, 56, @on
exec sp_trace_setevent @TraceID, 189, 64, @on
exec sp_trace_setevent @TraceID, 189, 1, @on
exec sp_trace_setevent @TraceID, 189, 9, @on
exec sp_trace_setevent @TraceID, 189, 41, @on
exec sp_trace_setevent @TraceID, 189, 49, @on
exec sp_trace_setevent @TraceID, 189, 57, @on
exec sp_trace_setevent @TraceID, 189, 2, @on
exec sp_trace_setevent @TraceID, 189, 10, @on
exec sp_trace_setevent @TraceID, 189, 26, @on
exec sp_trace_setevent @TraceID, 189, 58, @on
exec sp_trace_setevent @TraceID, 189, 66, @on
exec sp_trace_setevent @TraceID, 189, 3, @on
exec sp_trace_setevent @TraceID, 189, 11, @on
exec sp_trace_setevent @TraceID, 189, 35, @on
exec sp_trace_setevent @TraceID, 189, 51, @on
exec sp_trace_setevent @TraceID, 189, 4, @on
exec sp_trace_setevent @TraceID, 189, 12, @on
exec sp_trace_setevent @TraceID, 189, 52, @on
exec sp_trace_setevent @TraceID, 189, 60, @on
exec sp_trace_setevent @TraceID, 189, 13, @on
exec sp_trace_setevent @TraceID, 189, 6, @on
exec sp_trace_setevent @TraceID, 189, 14, @on
exec sp_trace_setevent @TraceID, 189, 22, @on
exec sp_trace_setevent @TraceID, 122, 7, @on
exec sp_trace_setevent @TraceID, 122, 8, @on
exec sp_trace_setevent @TraceID, 122, 64, @on
exec sp_trace_setevent @TraceID, 122, 1, @on
exec sp_trace_setevent @TraceID, 122, 9, @on
exec sp_trace_setevent @TraceID, 122, 25, @on
exec sp_trace_setevent @TraceID, 122, 41, @on
exec sp_trace_setevent @TraceID, 122, 49, @on
exec sp_trace_setevent @TraceID, 122, 2, @on
exec sp_trace_setevent @TraceID, 122, 10, @on
exec sp_trace_setevent @TraceID, 122, 14, @on
exec sp_trace_setevent @TraceID, 122, 22, @on
exec sp_trace_setevent @TraceID, 122, 26, @on
exec sp_trace_setevent @TraceID, 122, 34, @on
exec sp_trace_setevent @TraceID, 122, 50, @on
exec sp_trace_setevent @TraceID, 122, 66, @on
exec sp_trace_setevent @TraceID, 122, 3, @on
exec sp_trace_setevent @TraceID, 122, 11, @on
exec sp_trace_setevent @TraceID, 122, 35, @on
exec sp_trace_setevent @TraceID, 122, 51, @on
exec sp_trace_setevent @TraceID, 122, 4, @on
exec sp_trace_setevent @TraceID, 122, 12, @on
exec sp_trace_setevent @TraceID, 122, 28, @on
exec sp_trace_setevent @TraceID, 122, 60, @on
exec sp_trace_setevent @TraceID, 122, 5, @on
exec sp_trace_setevent @TraceID, 122, 29, @on
exec sp_trace_setevent @TraceID, 10, 15, @on
exec sp_trace_setevent @TraceID, 10, 31, @on
exec sp_trace_setevent @TraceID, 10, 8, @on
exec sp_trace_setevent @TraceID, 10, 48, @on
exec sp_trace_setevent @TraceID, 10, 1, @on
exec sp_trace_setevent @TraceID, 10, 10, @on
exec sp_trace_setevent @TraceID, 10, 34, @on
exec sp_trace_setevent @TraceID, 10, 3, @on
exec sp_trace_setevent @TraceID, 10, 11, @on
exec sp_trace_setevent @TraceID, 10, 35, @on
exec sp_trace_setevent @TraceID, 10, 12, @on
exec sp_trace_setevent @TraceID, 10, 13, @on
exec sp_trace_setevent @TraceID, 10, 14, @on
exec sp_trace_setevent @TraceID, 45, 8, @on
exec sp_trace_setevent @TraceID, 45, 48, @on
exec sp_trace_setevent @TraceID, 45, 1, @on
exec sp_trace_setevent @TraceID, 45, 10, @on
exec sp_trace_setevent @TraceID, 45, 34, @on
exec sp_trace_setevent @TraceID, 45, 3, @on
exec sp_trace_setevent @TraceID, 45, 11, @on
exec sp_trace_setevent @TraceID, 45, 35, @on
exec sp_trace_setevent @TraceID, 45, 12, @on
exec sp_trace_setevent @TraceID, 45, 28, @on
exec sp_trace_setevent @TraceID, 45, 13, @on
exec sp_trace_setevent @TraceID, 45, 14, @on
exec sp_trace_setevent @TraceID, 45, 15, @on
exec sp_trace_setevent @TraceID, 12, 15, @on
exec sp_trace_setevent @TraceID, 12, 31, @on
exec sp_trace_setevent @TraceID, 12, 8, @on
exec sp_trace_setevent @TraceID, 12, 48, @on
exec sp_trace_setevent @TraceID, 12, 1, @on
exec sp_trace_setevent @TraceID, 12, 10, @on
exec sp_trace_setevent @TraceID, 12, 14, @on
exec sp_trace_setevent @TraceID, 12, 3, @on
exec sp_trace_setevent @TraceID, 12, 11, @on
exec sp_trace_setevent @TraceID, 12, 35, @on
exec sp_trace_setevent @TraceID, 12, 12, @on
exec sp_trace_setevent @TraceID, 12, 13, @on

–- Set the Filters
declare @intfilter int
declare @bigintfilter bigint

set @intfilter = 6
exec sp_trace_setfilter @TraceID, 3, 0, 0, @intfilter

set @intfilter = 5
exec sp_trace_setfilter @TraceID, 3, 1, 0, @intfilter

–- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

–- display trace id for future references
select TraceID=@TraceID
goto finish

error:
select ErrorCode=@rc

finish:
go

Defining variables

The script starts off declaring some variables. You’ll want to make sure that the values you configured in SQL Server Profiler were exported correctly. In particular, make sure the @maxfilesize variable is set to the number of megabytes that you’d like for capture. In the example below, I’ve configured the trace to capture 500 MB of data.

– Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 500

Creating the trace

The next part of the script creates the trace using the sp_trace_create stored procedure. Here, as the comments indicate, you’ll want to provide the fully qualified path for the output file that you’ll use to store the captured data. In this example, I’m collecting it in a E:\demo\demotrace2.trc. Notice that the trc extension is automatically added for us; you don’t need to include it. If you do, you’ll end up with a file named demotrace2.trc.trc. That’s redundantly redundant.

exec @rc = sp_trace_create @TraceID output, 0, N’E:\demo\demotrace2′, @maxfilesize, NULL

The sp_trace_create procedure also accepts some other parameters that are not automatically produced when you export from SQL Server Profiler. For example, you can specify the TRACE_FILE_ROLLOVER option and the @filecount parameter to allow the trace information to span multiple operating system files. Modifying the preceding stored procedure call as shown below would allow the trace to rollover to subsequent files (the second parameter is 2), up to a maximum of five files (the last parameter is 5).

exec @rc = sp_trace_create @TraceID output, 2, N’E:\demo\demotrace2′, @maxfilesize, NULL, 5

You can also specify a time for the trace to end. This is the second to last parameter, which is NULL in the example above.

Notice that the @TraceId parameter is defined as an output parameter. When the sp_trace_create procedure is called, it creates the new trace and returns to us a unique number that we can use to refer to the new trace. We’ll use the @TraceId variable throughout the rest of the script to update the trace properties.

For more information, visit Books Online sp_trace_create.

Specifying the events

The next section of the script defines the events that the trace will capture. The sp_trace_setevent stored procedure is executed repeatedly to define each and every event we’ve asked to see. If you’re monitoring a lot of events, this section is rather tedious to look at. For more information, see sp_trace_setevent in Books Online.

–- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 27, 7, @on
exec sp_trace_setevent @TraceID, 27, 15, @on
exec sp_trace_setevent @TraceID, 27, 55, @on

Filtering the events

Filters are set using the sp_trace_setfilter stored procedure in the next section. This is where we can narrow down our trace to just one database or to queries that take longer than some threshold we’ve set. On a SQL Server instance with lots of databases, you’ll definitely want to set some filters. For more information on filtering traces, visit sp_trace_setfilter in Books Online.

– Set the Filters
declare @intfilter int
declare @bigintfilter bigint

set @intfilter = 6
exec sp_trace_setfilter @TraceID, 3, 0, 0, @intfilter

set @intfilter = 5
exec sp_trace_setfilter @TraceID, 3, 1, 0, @intfilter

Starting and stopping the trace

Once the trace has been fully defined within SQL Server, all we have left to do is to start the trace. We do that by setting its status using the sp_trace_setstatus stored procedure.

– Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

There are two parameters that we must supply to the sp_trace_setstatus stored procedure. The first is the trace that we wish to modify; this was the output of the sp_trace_create procedure at the beginning of the script. The second is that status of the trace.

A value of 0 for the status stops the trace. 1 starts the trace. 2 gets rid of the trace from the server. See Books Online for information about the sp_trace_setstatus stored procedure.

Next up: scheduling Server Side Traces

trainschedule_2009-09-14Alright! Now that we have a pretty good understanding of what this script does and how to manually start and stop Server Side Traces, next time we’ll look at ways to automate the trace.  Scheduling the trace will make it easy for us automatically collect data as  at various points throughout the business day and week.  This information will prove invaluable in helping us to benchmark our systems.

Until next time,

Joe

Columbus User Group webcast on SQL Server locking

Later this afternoon, I’m presenting at the Columbus, Ohio, SQL Server User Group meeting. The topic: SQL Server Locking and Blocking Made Simple.

Heeeeeeerre’s the abstract

A good working knowledge of how SQL Server makes use of locking and transaction isolation levels can go a long way toward improving an application’s performance. In this session, we will explore SQL Server’s locking methodology and discover techniques for enhancing query response times.

I’ll discuss:

  • The different types of locks that SQL Server uses
  • How and when SQL Server uses lock escalation
  • When to use different transaction isolation levels
  • The different granularity hints that are available

I hope you’ll join us for this event. For connection and dial-in information, visit the Columbus SQL Server User Group web site.

See you there. We’ll I’m actually presenting remotely, but as a figure of speech, I’ll see you there.

Joe

Later this afternoon, I’m presenting at the Columbus, Ohio, SQL Server User Group meeting. The topic: SQL Server Locking and Blocking Made Simple.

I’m going to Disney World! (Well, to SQL Saturday Orlando)

I’m going to Disney World! At least that’s what my kids will think when I tell them that I’m heading to Orlando, Florida, next month for SQLSaturday #21. I’ll tell them otherwise, but they’ll be skeptical, of course. And who can blame? I’m going to Mickey Mouse’s backyard without them.

SQL professionals are dancing in the streets for SQLSaturday #21

SQL professionals are dancing in the streets for SQLSaturday #21

But their doubts will really escalate when I return home. They’ll be able to tell that this was no ordinary business trip. No, this one is going to be fun. I’ll hang out with some really great folks in the SQL community, learning about the product, and just having some fun.

SQLSaturdays are great events! You can think of them as one-day mini conferences that are jam packed with great SQL Server content and people. They are run by the community, for the community. And it really shows.

Jack Corbett and Andy Warren and the rest of the volunteers have done a great job putting together a fantastic line up of speakers. Jonathan Kehayias, Kevin Kline, Brian Knight, Jorge Segarra, Buck Woody, and Kevin Boles are among the renown SQL Server experts presenting at the event.

I feel humbled to be in the list, too. My two sessions are SQL Server Locking & Blocking Made Simple and Writing Better Queries.

If you’re a SQL professional or want to be one, this is the event you’ll want to attend. If you’re looking for an excuse to make it to Orlando this fall, you’ve found it. And if you do come, be sure to look me up; I’d love to talk with you.

Joe

InfoSec09: Are you up to date on Security?

A few months ago, I wrote about an often neglected aspect of security – physical security. In the post entitled Security – Don’t overlook the obvious!, I recounted the ease at which I completely and permanently wiped out a set of hard disks for a client. Notice I said “for a client”; I did this at their request, not because they were late with an invoice payment.

It’s more than physical

Who's protecting your data?

But of course, there is much, much more to security than just the physical element. To be complete, you must consider other aspect such as VPNs, authentication & authorization, data encryption, intrusion detection, and service patches & hot fixes, to name but a few. And to be truly secure you must think outside the box, the SQL Server box that is, and consider security from a holistic perspective.

I was recently talking with a friend of mine who happens to be President of the Middle Tennessee Chapter fo the Information Systems Security Association, or ISSA for short. He reminded me of the upcoming InfoSec09 conference here in Nashville, September 17th at the Nashville Convention Center. If you’re interested in securing your database, network, applications, etc, considering attending this conference. For a list of sessions, visit the site.

Follow

Get every new post delivered to your Inbox.