桃子视频

Categories
Documentation Tips

Missing Crystal Reports 10.5 runtime?

The other morning I was migrating an application from a desktop machine to server. Some real fun with this project includes zero documentation from the developer (he was a contractor who did a rush job and left). Thankfully I have experience migrating applications from dev to acceptance to prod so I knew to look for missing assemblies and whatnot.

My big headache this morning, and the source of this posting, was the missing Crystal Reports assemblies since this was developed in Visual Studio 2008. My first indication of a problem was that locally (on the server) I tried pulling up the page and got greeted with the following:

Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: Could not load file or assembly ‘CrystalDecisions.CrystalReports.Engine, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304’ or one of its dependencies. The system cannot find the file specified.

Source Error:

After some quick Google searching I came across with my solution. They provided me links to download the runtime I needed to install. For the sake of helping others I have decided to host the files as well just in case those links die from that link. After installing the runtime on the server I restarted IIS by issuing the iisreset /restart command from the command prompt. After the restart I was able to successfully pull up my page without a problem.

Categories
Syndication

SA Does Not Mean Speedy Access

This quick write up comes courtesy of a tweet by () yesterday morning (Please Note: OH means overheard, meaning that statement is something Jonathan overheard. He鈥檚 WAYYYYY too smart to actually spread something that dumb as valid advice) . Here鈥檚 the tweet:

Ok, so I鈥檝e seen a couple of stupid things written up in the last few days but this one just might take the cake. If you have been a DBA for any amount of time then you鈥檝e more than likely come across a vendor application that uses the 鈥榮a鈥 account for access to the database. I won鈥檛 get into details about the sa (or system聽administrator) account here but check out at about it ( as well to learn more).

So what exactly is wrong with that statement in the tweet? Well, as stated by () this morning:

“Ok Jorge, stop making fun of me”. No, as long as you access things using sa for “simplicity” or “optimization” I’m going to beat this over your head like an Acme mallet. Using ‘sa’ account for everything is akin to being handed the keys to the bank and being told “yeah, go ahead and make your deposits and withdrawals from your own account but try not to touch anything else while you’re digging around the vault”. Seriously, I’m not kidding. Handing someone the ‘sa’ account is handing them the keys to your SQL kingdom. Think about it, if you write an application that is accessing your database with FULL admin rights, what if someone performs a attack and drops your production tables for kicks?

SQL Injection: It happens

Listen folks, I know that security can be a pain but it’s there for a reason. Don’t get lazy and just assume the user needs an admin account to access the database because 9/10 times it doesn’t. You could probably get by fine on creating a new schema with write/read access and maybe EXECUTE stored procedures permissions. In fact, secure yourself from SQL injection attacks by wrapping your code in stored procedures in the first place.

There’s a ton of resources out there to learn how to properly secure SQL Server. Get up to speed by reading up about . There’s also tons of videos and demonstrations out there. Check out the courtesy of() and (). Finally (WARNING: Blatent self-promotion inbound) make sure to check out SQL University’s security week from Semester 1.聽Bottom line is if someone tells you “this application needs to run as sa”, have them give you a detailed explanation as to why. Part of your job as a responsible DBA is to protect your data and your聽database servers. If they simply don’t know any better then offer to educate them on schemas, security groups,聽etc.聽聽And remember, “because its an optimization” is a stupid answer.

Categories
Syndication

IO You an Explanation

This blog post is going to be relatively short and sweet as my expertise in the storage realm is limited. Yesterday I had the pleasure of learning some new and interesting things about that I thought was interesting and would share with you.

For聽 this month鈥檚 meme is hosted by Mike Walsh of (). For my post I don鈥檛 have a solution so much as a nugget of information to along I found interesting. I was speaking to a consultant yesterday about a few things and the topic of his experiences with Oracle DBAs-vs-SQL Server DBAs in terms of his experience with them in regards to storage (SAN) consultations. Clearly this perked my ears up and I asked him to explain. He went on to tell me that in his experience he鈥檚 seen that the Oracle DBAs he鈥檚 come across come across as rather paranoid and never believe anything he tells them despite showing them whitepapers direct from storage vendor on the matter. On this particular matter we were talking about how NetApp has a best-practice recommendation that seems rather contradictory and (rightfully so) the DBAs were skeptical and would continue asking the same question over and over again despite having it already answered鈥ver and over again. What鈥檚 that recommendation you ask? Well in NetApp world they have what are called Aggregates which are聽 nothing more multiple RAID groups. Here鈥檚 the excerpt from Wikipedia about it:

NetApp supports either , , or disk drives, which it groups into (Redundant Array of Inexpensive Disks or Redundant Array of Independent Disks) groups of up to 28 (26 data disks plus 2 parity disks). Multiple RAID groups form an “aggregate”; and within aggregates Data ONTAP operating system sets up “flexible volumes” to actually store data that users can access. An alternative is “Traditional volumes” where one or more RAID groups form a single static volume. Flexible volumes offer the advantage that many of them can be created on a single aggregate and resized at any time. Smaller volumes can then share all of the spindles available to the underlying aggregate. Traditional volumes and aggregates can only be expanded, never contracted. However, Traditional volumes can (theoretically) handle slightly higher I/O throughput than flexible volumes (with the same number of spindles), as they do not have to go through an additional viritualisation layer to talk to the underlying disk.

Ok, so what鈥檚 so different about that? Well that鈥檚 not the part that鈥檚 interesting. What鈥檚 interesting is explicitly states:

For Oracle databases it is recommended that you pool all your disks into a single large aggregate and use FlexVol volumes for your database datafiles and logfiles as described below. This provides the benefit of much simpler administration, particularly for growing and reducing volume sizes without affecting performance. For more details on exact layout recommendations, refer to [2].

Now think about that for a minute. As a SQL Server DBA you鈥檙e probably having a mental breakdown as I did when first slapped with this one as they鈥檙e essentially telling you throw all your eggs in the same basket, its better for you. Well this is where our conversation got interesting as he started breaking down for me exactly how Aggregates worked, how NetApp鈥檚 algorithms function, and WHY this best practice exists and isn鈥檛 as bad as it appears at first glance. Apparently because of the way NetApp鈥檚 Aggregates work the more you expand your Aggregate (read also: add more disks) you鈥檙e actually helping improve performance as you鈥檙e adding more spindles to it and will help performance along. At this point of this post you storage guys are probably ready to tear me a new one as I may or may not be explaining this correctly/accurate to which I re-state, 鈥淚鈥檓 not a storage guy, I鈥檓 a DBA learning something new and attempting to relay this information as best as I understood it.鈥

Which brings me to the point of my post. As a DBA crazy things like a best practice recommendation that doesn鈥檛 make sense can and will come up in your career. Should you question them? Without a doubt! After all, it鈥檚 your bacon on the line after these guys are gone. The important part however is the learning. Ask questions, realize the differences between technologies and understand the how鈥檚 and whys. In this post I talked about NetApp鈥檚 solution but EMC works differently as well as has different terminology. It may not be your job to be a SAN admin but as a DBA I think its essential to understand all the technologies involved in your configuration and work with those responsible to come up with the best solution that works for you. There are plenty of resources out there to garner knowledge from, they鈥檙e just a quick 鈥

Follow the hashtag on Twitter to check out everyone’s posts.

Categories
Events PASS Syndication

Quest Virtual Training – SQL Server Training on DMV’s

put on a great all-day training event today on all things DMV courtesy of ( on Twitter), ( on Twitter) and Ari Weil (on Twitter).

If you missed this great live event, don’t fret as you can . One of the amazing things about this event is also the fact that in-chat there are literally hundreds of folks swapping information and resources. Unfortunately when you watch it on-demand you miss out on some of those great chat conversations. Well fear not! I’ve saved the chat log and made it available for download for you so you can see the kind of interaction this great SQL community has. As was mentioned in chat several times, with the economy being the way it is training opportunities are priceless. So check out the on-demand recordings and definitely check out the chat logs as in conjunction with the live event and Twitter (event )

Quest-Virtual-Training-chatlog聽(.zip format)