Search Results

Search found 13995 results on 560 pages for 'programmer day'.

Page 103/560 | < Previous Page | 99 100 101 102 103 104 105 106 107 108 109 110  | Next Page >

  • Stored Procedures with SSRS? Hmm… not so much

    - by Rob Farley
    Little Bobby Tables’ mother says you should always sanitise your data input. Except that I think she’s wrong. The SQL Injection aspect is for another post, where I’ll show you why I think SQL Injection is the same kind of attack as many other attacks, such as the old buffer overflow, but here I want to have a bit of a whinge about the way that some people sanitise data input, and even have a whinge about people who insist on using stored procedures for SSRS reports. Let me say that again, in case you missed it the first time: I want to have a whinge about people who insist on using stored procedures for SSRS reports. Let’s look at the data input sanitisation aspect – except that I’m going to call it ‘parameter validation’. I’m talking about code that looks like this: create procedure dbo.GetMonthSummaryPerSalesPerson(@eomdate datetime) as begin     /* First check that @eomdate is a valid date */     if isdate(@eomdate) != 1     begin         select 'Please enter a valid date' as ErrorMessage;         return;     end     /* Then check that time has passed since @eomdate */     if datediff(day,@eomdate,sysdatetime()) < 5     begin         select 'Sorry - EOM is not complete yet' as ErrorMessage;         return;     end         /* If those checks have succeeded, return the data */     select SalesPersonID, count(*) as NumSales, sum(TotalDue) as TotalSales     from Sales.SalesOrderHeader     where OrderDate >= dateadd(month,-1,@eomdate)         and OrderDate < @eomdate     group by SalesPersonID     order by SalesPersonID; end Notice that the code checks that a date has been entered. Seriously??!! This must only be to check for NULL values being passed in, because anything else would have to be a valid datetime to avoid an error. The other check is maybe fair enough, but I still don’t like it. The two problems I have with this stored procedure are the result sets and the small fact that the stored procedure even exists in the first place. But let’s consider the first one of these problems for starters. I’ll get to the second one in a moment. If you read Jes Borland (@grrl_geek)’s recent post about returning multiple result sets in Reporting Services, you’ll be aware that Reporting Services doesn’t support multiple results sets from a single query. And when it says ‘single query’, it includes ‘stored procedure call’. It’ll only handle the first result set that comes back. But that’s okay – we have RETURN statements, so our stored procedure will only ever return a single result set.  Sometimes that result set might contain a single field called ErrorMessage, but it’s still only one result set. Except that it’s not okay, because Reporting Services needs to know what fields to expect. Your report needs to hook into your fields, so SSRS needs to have a way to get that information. For stored procs, it uses an option called FMTONLY. When Reporting Services tries to figure out what fields are going to be returned by a query (or stored procedure call), it doesn’t want to have to run the whole thing. That could take ages. (Maybe it’s seen some of the stored procedures I’ve had to deal with over the years!) So it turns on FMTONLY before it makes the call (and turns it off again afterwards). FMTONLY is designed to be able to figure out the shape of the output, without actually running the contents. It’s very useful, you might think. set fmtonly on exec dbo.GetMonthSummaryPerSalesPerson '20030401'; set fmtonly off Without the FMTONLY lines, this stored procedure returns a result set that has three columns and fourteen rows. But with FMTONLY turned on, those rows don’t come back. But what I do get back hurts Reporting Services. It doesn’t run the stored procedure at all. It just looks for anything that could be returned and pushes out a result set in that shape. Despite the fact that I’ve made sure that the logic will only ever return a single result set, the FMTONLY option kills me by returning three of them. It would have been much better to push these checks down into the query itself. alter procedure dbo.GetMonthSummaryPerSalesPerson(@eomdate datetime) as begin     select SalesPersonID, count(*) as NumSales, sum(TotalDue) as TotalSales     from Sales.SalesOrderHeader     where     /* Make sure that @eomdate is valid */         isdate(@eomdate) = 1     /* And that it's sufficiently past */     and datediff(day,@eomdate,sysdatetime()) >= 5     /* And now use it in the filter as appropriate */     and OrderDate >= dateadd(month,-1,@eomdate)     and OrderDate < @eomdate     group by SalesPersonID     order by SalesPersonID; end Now if we run it with FMTONLY turned on, we get the single result set back. But let’s consider the execution plan when we pass in an invalid date. First let’s look at one that returns data. I’ve got a semi-useful index in place on OrderDate, which includes the SalesPersonID and TotalDue fields. It does the job, despite a hefty Sort operation. …compared to one that uses a future date: You might notice that the estimated costs are similar – the Index Seek is still 28%, the Sort is still 71%. But the size of that arrow coming out of the Index Seek is a whole bunch smaller. The coolest thing here is what’s going on with that Index Seek. Let’s look at some of the properties of it. Glance down it with me… Estimated CPU cost of 0.0005728, 387 estimated rows, estimated subtree cost of 0.0044385, ForceSeek false, Number of Executions 0. That’s right – it doesn’t run. So much for reading plans right-to-left... The key is the Filter on the left of it. It has a Startup Expression Predicate in it, which means that it doesn’t call anything further down the plan (to the right) if the predicate evaluates to false. Using this method, we can make sure that our stored procedure contains a single query, and therefore avoid any problems with multiple result sets. If we wanted, we could always use UNION ALL to make sure that we can return an appropriate error message. alter procedure dbo.GetMonthSummaryPerSalesPerson(@eomdate datetime) as begin     select SalesPersonID, count(*) as NumSales, sum(TotalDue) as TotalSales, /*Placeholder: */ '' as ErrorMessage     from Sales.SalesOrderHeader     where     /* Make sure that @eomdate is valid */         isdate(@eomdate) = 1     /* And that it's sufficiently past */     and datediff(day,@eomdate,sysdatetime()) >= 5     /* And now use it in the filter as appropriate */     and OrderDate >= dateadd(month,-1,@eomdate)     and OrderDate < @eomdate     group by SalesPersonID     /* Now include the error messages */     union all     select 0, 0, 0, 'Please enter a valid date' as ErrorMessage     where isdate(@eomdate) != 1     union all     select 0, 0, 0, 'Sorry - EOM is not complete yet' as ErrorMessage     where datediff(day,@eomdate,sysdatetime()) < 5     order by SalesPersonID; end But still I don’t like it, because it’s now a stored procedure with a single query. And I don’t like stored procedures that should be functions. That’s right – I think this should be a function, and SSRS should call the function. And I apologise to those of you who are now planning a bonfire for me. Guy Fawkes’ night has already passed this year, so I think you miss out. (And I’m not going to remind you about when the PASS Summit is in 2012.) create function dbo.GetMonthSummaryPerSalesPerson(@eomdate datetime) returns table as return (     select SalesPersonID, count(*) as NumSales, sum(TotalDue) as TotalSales, '' as ErrorMessage     from Sales.SalesOrderHeader     where     /* Make sure that @eomdate is valid */         isdate(@eomdate) = 1     /* And that it's sufficiently past */     and datediff(day,@eomdate,sysdatetime()) >= 5     /* And now use it in the filter as appropriate */     and OrderDate >= dateadd(month,-1,@eomdate)     and OrderDate < @eomdate     group by SalesPersonID     union all     select 0, 0, 0, 'Please enter a valid date' as ErrorMessage     where isdate(@eomdate) != 1     union all     select 0, 0, 0, 'Sorry - EOM is not complete yet' as ErrorMessage     where datediff(day,@eomdate,sysdatetime()) < 5 ); We’ve had to lose the ORDER BY – but that’s fine, as that’s a client thing anyway. We can have our reports leverage this stored query still, but we’re recognising that it’s a query, not a procedure. A procedure is designed to DO stuff, not just return data. We even get entries in sys.columns that confirm what the shape of the result set actually is, which makes sense, because a table-valued function is the right mechanism to return data. And we get so much more flexibility with this. If you haven’t seen the simplification stuff that I’ve preached on before, jump over to http://bit.ly/SimpleRob and watch the video of when I broke a microphone and nearly fell off the stage in Wales. You’ll see the impact of being able to have a simplifiable query. You can also read the procedural functions post I wrote recently, if you didn’t follow the link from a few paragraphs ago. So if we want the list of SalesPeople that made any kind of sales in a given month, we can do something like: select SalesPersonID from dbo.GetMonthSummaryPerSalesPerson(@eomonth) order by SalesPersonID; This doesn’t need to look up the TotalDue field, which makes a simpler plan. select * from dbo.GetMonthSummaryPerSalesPerson(@eomonth) where SalesPersonID is not null order by SalesPersonID; This one can avoid having to do the work on the rows that don’t have a SalesPersonID value, pushing the predicate into the Index Seek rather than filtering the results that come back to the report. If we had joins involved, we might see some of those being simplified out. We also get the ability to include query hints in individual reports. We shift from having a single-use stored procedure to having a reusable stored query – and isn’t that one of the main points of modularisation? Stored procedures in Reporting Services are just a bit limited for my liking. They’re useful in plenty of ways, but if you insist on using stored procedures all the time rather that queries that use functions – that’s rubbish. @rob_farley

    Read the article

  • O2 Mobile broadband - VPN problems

    - by NT
    My O2 dongle seems to connect to my Work VPN only after 10.30pm??? I cant understand why it doesnt work during the day, same laptop, same connection settings, same location? Is it possible the provider limits VPN ports or service during the day?

    Read the article

  • Windows Server 2008 R2 vs Windows 7 Ultimate

    - by Techeretic
    I have a Dual Core Intel CPU E7200, 4 GB RAM, and a NvIDIA 8600 GT for graphics and 500GB HDD. This configuration runs Windows 7 Ultimate very smoothly, but now I recently signed up to the MS WebSiteSpark programme and have downloaded the Windows Server 2008 R2. So my question is whether I can use the Server Edition for my day to day use, play games, etc etc?? I want to install the Server OS to monitor my Home Network and also for some web development I have been trying out lately.

    Read the article

  • Civic Duty Badge

    - by Campo
    As only @Evan Anderson has this badge I would like some clarification on how to get it. The Civic Duty Badge is described as such Hit the daily reputation cap on 50 days Does this imply that on day 50 of being a member of this site you must accumulate 200 rep on that day? Thanks Evan! lol

    Read the article

  • Does SQL Server Maintainance Cleanup consider exact times when deleting old backups?

    - by Heinzi
    Let's say I have a daily maintainance task that: Backups all databases and then removes backups that are older than 3 days. Now let's say the first backup at day 1, starting at 10:00, results in the following files db1.bak 2012-01-01 10:04 db2.bak 2012-01-01 10:06 Now let's say at day 4 the first step of the maintainance task (backup the DBs) happens to finish at 10:05. Will SQL Server delete db1.bak and keep db2.bak (would be logical, but might be surprising for the user) or keep both or remove both?

    Read the article

  • Is iTerm still relevant against Terminal? [OS X]

    - by pablasso
    Back in the day when Tiger ruled the world, iTerm was a must have for me if only just for the tabs feature that Terminal didn't have. After Leopard came out Terminal got several improvements, like supporting tabs and implementing profiles. Since that day I just don't see the need for iTerm, but I still notice there's people using it. There's something I'm missing? Why should I use iTerm over Terminal?

    Read the article

  • Tutorial for Quick Look Generator for Mac

    - by vgm64
    I've checked out Apple's Quick Look Programming Guide: Introduction to Quick Look page in the Mac Dev Center, but as a more of a science programmer rather than an Apple programmer, it is a little over my head (but I could get through it in a weekend if I bash my head against it long enough). Does anyone know of a good basic Quick Look Generators tutorial that is simple enough for someone with only very modest experience with Xcode? For those that are curious, I have a filetype called .evt that has an xml header and then binary info after the header. I'm trying to write a generator to display the xml header. There's no application bundle that it belongs to. Thanks!

    Read the article

  • Tutuorial for Quick Look Generator for Mac

    - by vgm64
    I've checked out Apple's Quick Look Programming Guide: Introduction to Quick Look page in the Mac Dev Center, but as a more of a science programmer rather than an Apple programmer, it is a little over my head (but I could get through it in a weekend if I bash my head against it long enough). Does anyone know of a good basic Quick Look Generators tutorial that is simple enough for someone with only very modest experience with Xcode? For those that are curious, I have a filetype called .evt that has an xml header and then binary info after the header. I'm trying to write a generator to display the xml header. There's no application bundle that it belongs to. Thanks!

    Read the article

  • Schedule Windows XP wallpaper change without additional apps

    - by Thomas
    Ideally, I'd like to be able to do this through a batch file or VB script, so I can schedule it to run at different times of the day (dark wallpaper at night vs. light wallpaper at day). I am aware of the many applications which could do this, but I prefer to keep only necessary applications running in the background.

    Read the article

  • How can I run the same Linux Installation on my hardware and in a virtual machine?

    - by LithMaster
    I've started some development that requires Linux (I'm currently on Ubuntu, but I may switch to Debian), but I still use Windows 7 for my day-to-day computing. I have already tried a dual-boot setup, but I've found that it is too cumbersome to switch between Linux and Windows. I'm wondering if it's possible to setup an installation of Linux (again, Ubuntu or Debian) on a partition of my hard drive that I can also run from Windows in a virtualized environment.

    Read the article

  • Hard Drives: Always on or spin up/down as needed?

    - by Terminal Frost
    The specific application is a NAS that hosts media content and is frequently accessed during the day. My NAS was probably cycling on and off around 5 times a day so I decided to not allow it to spin down. I'm thinking this will be better for the drive, but I am not sure. I am wondering, however, if there is any concrete information out there as to what causes more detrimental wear on a hard disk: Spinning 24/7 or cycling on and off as needed?

    Read the article

  • Take VMware VM State Home With Me

    - by Chris
    I work in VMs day in and day out, it's wonderful, encapsulating all the stuff I need for development in a contained unit. My question is: I want to be able to take my VM home with me, the problem is the VM is 30GB, and it takes about 30 minutes to copy that much data to my external HDD. Is it possible to somehow save the "state" of the VM, go home, and just resume it like a I would a laptop? Oh... almost forgot, I use VMware Workstation 6.5

    Read the article

  • Script to check a shared Exchange calendar and tehn email detial

    - by SJN
    Hi, We're running Server and Exchange 2003 here. There's a shared calendar which HR keep up-to-date detailing staff who are on leave. I'm looking for a VB Script (or alternate) which will extract the "appointment" titles of each item for the current day and then email the detail to a mail group, in doing so notifying the group with regard to which staff are on leave for the day. The resulting email body should be: Staff on leave today: Mike Davis James Stead Any ideas?

    Read the article

  • How does TTL affect my internet connection?

    - by Luiscencio
    Each day I run pings to test latencies, but TTL is different every day, sometimes higher, sometimes lower. How does this affect my connection? Reply from 209.131.36.159: bytes=32 time=106ms TTL=52 Reply from 209.131.36.159: bytes=32 time=93ms TTL=52 Reply from 209.131.36.159: bytes=32 time=63ms TTL=52 Reply from 209.131.36.159: bytes=32 time=73ms TTL=52

    Read the article

  • Is this leap second bug? [closed]

    - by Sangdol
    Possible Duplicate: Anyone else experiencing high rates of Linux server crashes during a leap second day? On last Saturday(31 June 2012), Java applications suddenly started to use 100% CPU like described in this on some servers. The problem was recovered after restarted tomcat. It's similar to Java leap second bug but it happened during day not midnight. The time was around 17:35(GMT+9) on 31 June. Can cause of this problem be leap second?

    Read the article

  • Good website for wallpapers

    - by Gab Royer
    What are the best websites for wallpapers? My current favorite is http://interfacelift.com. Do you guys have a single source where you get all your wallpapers or do you just stumble on them on the web? Compiled results Desktop Nexus Deviant Art Of course, Google Interfacelift Aeon Project Digital Blasphemy Gnome Look and Kde Look VladStudio Flickr Wikimedia Commons NASA's image of the day Customize.org Random Walls Astronomy Picture of the day Delicious popular/wallpaper tag Studio twentyEight Instant Shift Social Wallpapering Bing's Image search Mike Swanson's collection 4chan

    Read the article

  • What single piece of software do you most admire, and why?

    - by Burton
    As a developer, I too often find fault with the software that I use day to day. Unintuitive interfaces, etc. But there are those rare exceptions. Regardless of whether the software in question is a programmers' tool, tell me about software you have used: What has inspired admiration? What software made you re-remember simplicity? (or whatever gauge of awesomeness works for you). Only one piece of software per post, please.

    Read the article

  • Apache log - file does not exist

    - by Ivan
    I have quite a few of these in Apache logs piling up every day: [Mon Jun 09 20:42:58 2014] [error] [client 180.153.214.181] File does not exist: /home/user/public_html/ajax.googleapis.com, referer: http://www.mysite.com//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js I have over 200k visitors per day but a few of them like a dozen or so are generating the above error. I can't figure out what may be causing it. Checked the html code and it's all good so I ran out of ideas.

    Read the article

  • Apache: Limit the Number of Requests/Traffic per IP?

    - by Ian Kern
    I would like to only allow one IP to use up to, say 1GB, of traffic per day, and if that limit is exceeded, all requests from that IP are then dropped until the next day. However, a more simple solution where the connection is dropped after a certain amount of requests would suffice. Is there already some sort of module that can do this? Or perhaps I can achieve this through something like iptables? Thanks

    Read the article

  • Your favorite open source tool (that is not very famous)

    - by sucuri
    I believe every system admin is used to open source by now. From Apache to Firefox or Linux, everyone uses it at least a little bit. However, most open source developers are not good in marketing, so I know that there are hundreds of very good tools out there that very few people know. To fill this gap, share your favorite open source tool that you use on your day by day that is not very famous. *I will post mine in the comments.

    Read the article

  • clone of tseng et4000 extended mode font?

    - by Jason Yanowitz
    Back in the day (day =~ 1994), the tseng et4000 video card had extended modes for the console under linux. There was a beautiful monospaced font (I think it was for 100x40 or 100x50, but my memory could be wrong). Anyone know a way to get said font for a modern computer (e.g., Mac OS X) or the history of the font, etc? http://en.wikipedia.org/wiki/Tseng_ET4000 has little info on this score.

    Read the article

  • Server unstable after a WHM automated update

    - by user34521
    I have a server with WHM/cPanel server a website (Apache, PHP, MySQL) and a few days ago WHM performed some kind of update on itself (there are new icons and new appearance overall). Ever since that day, my site has been running slow for shorts periods of time, but several times a day. That never happend before. Is there some common cause for this? Something that WHM does when it does an update? I'm really clueless about this problem.

    Read the article

< Previous Page | 99 100 101 102 103 104 105 106 107 108 109 110  | Next Page >