Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
Cumbrowski.com
Starting Member
6 Posts |
Posted - 2008-01-29 : 20:00:33
|
I have a tricky question to Microsoft SQL Server 2000/2005. I have failed to find a solution to the problem yet and others have failed too. So I thought that I throw it around here, because the fact that a lot of knowledgeable DBAs hang around in this forum.I am looking for a script/stored procedure that is able to show me upcoming job executions for a selected date/time range based on the current settings for the jobs configured on the Database server.ExampleDate/Time From: 2/16/2007 00:00 a.m. (Friday)Date/Time To: 2/17/2007 12:00 p.m. (Saturday)A. Job 1 / Schedule 1 = Week Days, 1:00 a.m.B. Job 1 / Schedule 2 = Saturdays, 10:00 a.m.C. Job 2 / Schedule 1 = hourly, between 10:00 a.m. and 1:00 p.m.D. Job 3 / Schedule 1 = every 3rd Saturday of the month, 5:00 a.m.E. Job 4 / Schedule 1 = every 1st Friday of the month, 8:00 a.m.The routine I have in mind would not return Job E, because 2/16/2007 is the 3rd Friday of the month and not the first.Job A: 2/16/2007 01:00 a.m.Job B: 2/16/2007 10:00 a.m.Job B: 2/16/2007 11:00 a.m.Job B: 2/16/2007 12:00 p.m.Job B: 2/16/2007 01:00 p.m.Job D: 2/17/2007 05:00 a.m.Job A: 2/17/2007 10:00 a.m.Job B: 2/17/2007 10:00 a.m.Job B: 2/17/2007 11:00 a.m.Job B: 2/17/2007 12:00 p.m.OutputIt needs to return the Job ID, the Job Name, the Schedule ID, the Date and the Time.Disabled Jobs and Schedules are by default excluded from the selection, but an option to include or exclude those would be a bonus. Information such as the min, max and average execution time would be great too.NotesThe schedules of Job D and Job B overlap as you can see in my example above. This happens only once per month though. I have over 20 jobs with sometimes very frequent execution times, like every 5 minutes or every 20 minutes and jobs that run hourly, daily, weekdays only, weekends only, monthly once etc. PurposeI want to do two things. I want to determine where jobs overlap, not just by start date/time, but also by average run time and maximum run time. I also want to be able to generate a report that shows me what should have been done and what was actually done by the jobs (note on the site, 6 of the jobs create new jobs on the fly for other database servers and this is sometimes not happening properly, without getting any error message. The volume of jobs makes the manual search like a search for a needle in a haystack.)Findings so far:I did some digging myself and found following stored procedures that do some of the steps that I need and involved tables for the calculation.Stored procedures:- sp_get_schedule_description (in db: msdb) (undocumented stored procedure)- sp_add_schedule (in db: msdb) http://msdn2.microsoft.com/en-us/library/ms187320.aspx Tables:- msdb.sysjobs - msdb.sysjobschedules - msdb.sysjobhistory It is not a problem to determine the next execution of a job, but that is not what I need, anyway.The problem is that it does not help you to determine all upcoming execution times, if the selected timeframe is long enough that SQL Server executes the job more than once. There is no way around using the sysjobschedules table and calculate the execution dates and times based on the configured settings. See the Stored procedure: sp_get_schedule_description. That one breaks down nicely the settings as documented for sp_add_schedule at http://msdn2.microsoft.com/en-us/library/ms187320.aspx, but it does not allow the determination of the exact upcoming dates and times when the job is supposed to be executed.Another ExampleIf there is only one job scheduled to run 1) every 5 minutes, 2) on every weekday 3) between 1:30pm and 2:00pm You would get the following results1) start date/time 7/7/2007 12:00pm, end date/time 7/8/2007 2:00pmnothing, because the 7/7/2007 and 7/8/2007 are on the weekend2) start date/time 7/5/2007 12:00pm, end date/time 7/5/2007 1:45pm7/5/2007 1:30pm7/5/2007 1:35pm7/5/2007 1:40pm7/5/2007 1:45pm3) start date/time 7/5/2007 1:45pm, end date/time 7/6/2007 3:00pm7/5/2007 1:45pm7/5/2007 1:50pm7/5/2007 1:55pm7/5/2007 2:00pm7/6/2007 1:30pm7/6/2007 1:35pm7/6/2007 1:40pm7/6/2007 1:45pm7/6/2007 1:50pm7/6/2007 1:55pm7/6/2007 2:00pmNow SQL has a lot more configuration options for the scheduler. And don't forget that you can have more than one schedule record for any single job, including no-schedule record (which would not interest me). Autom. when SQL starts freq_type=64 Starts when CPU idle freq_type=128 One Time On Date mm/dd/yyyy at time: hh:mm:ss am/pm freq_type=1 or Recurring Occurs Daily freq_type=4 Every x day(s) freq_interval=x Weekly freq_type=8 Every x week(s) on freq_recurrence_factor=x Mo [ ], Tu [ ], We [ ], Th [ ], Fr [ ], Sa [ ], Su [ ], 1 = Sunday, 2 = Monday, 4 = Tuesday, 8 = Wednesday, 16 = Thursday, 32 = Friday, 64 = Saturday. Examples: Su and Mo enabled = 3 (1 (Su) + 2 (Mo)), Mo, We and Fr enabled = 42 (2 (Mo) + 8 (We) + 32 (Fr)) Monthly freq_type=16 Day X of every Y month(s) freq_interval=X freq_recurrence_factor=Y or The 1st,2nd,3rd,4th,LAST WEEKDAY freq_type=32 of every Y month(s) freq_relative_interval=1,2,4 (3rd),8 (4th),16(last) freq_interval= 1=Su,2=Mo,3=Tu,4=We,5=Th,6=Fr,7=Sa,8=Day,9=Weekday,10=Weekend day freq_recurrence_factor=Y Occurs Once at hh:mm:ss AM/PM freq_subday_type=0x1 or occurs Every X Hours/Minutes Starting: hh:mm:ss A/PM freq_subday_type=0x4 (minutes) or 0x8 (hours) Ending: hh:mm:ss A/PM freq_subday_interval=X active_start_time active_end_time Start Date mm/dd/yyy End Date mm/dd/yyyy active_start_date or active_end_date No End Date active_end_date=99991231Does anybody has a script that does that or several individual scripts that would have to be combined to do what I want to do? Thanks. I appreciate it.Cheers!Carsten Cumbrowskihttp://www.sqlhunt.com/ |
|
billsox
Yak Posting Veteran
74 Posts |
Posted - 2008-05-24 : 19:35:33
|
Carsten -- Oddly enough, you describe the very same thing I need. Were you able to make any progress since you first posted your question?Bill |
|
|
Cumbrowski.com
Starting Member
6 Posts |
Posted - 2008-05-26 : 09:22:57
|
quote: Originally posted by billsox Carsten -- Oddly enough, you describe the very same thing I need. Were you able to make any progress since you first posted your question?Bill
Hi Bill,Nope.... I posted it here, at SQLSeverCentral and at Expert-Exchange. I had at least some responses at the other places, which helped me to refine my explanation of the problem, but didn't got much answers to solve the problem. I also emailed two editors who write for SQL Server Magazine. Both did not even respond to my email :(. Not very nice.It is good to know that I am not the only one who came across this. I became self employed since then and do not have to worry about the issue. I would still like to find an answer, just to help my former employer out and because I refuse to believe that there is nothing out there that tackles the issue.If you should come across something, let me know. I will do the same in return.Cheers!Carsten Cumbrowskihttp://www.sqlhunt.com/ |
|
|
billsox
Yak Posting Veteran
74 Posts |
Posted - 2008-05-26 : 16:23:02
|
Will do. I'm surprised to hear how little response you got. I guess we're in a small minority of folks that need to know how to calculate past and future job execution dates/times. I tried to see how Microsoft calculates the "next_run_date" and "next_run_time" fields in the sp_help_job stored procedure. But it looks like it calls an extended stored procedure which calls a .dll file to perform the calculations. A dead end, as far as I'm concerned. I think I'm faced with either creating a much less elegant solution (which I'm dreading) or learning how the experts manage bitmapping and devising my own solution. Either way, I'll need some good luck!If anyone else can help us solve this dilemma, please post! Many thanks in advance.Bill |
|
|
Cumbrowski.com
Starting Member
6 Posts |
Posted - 2008-05-26 : 18:20:03
|
quote: Originally posted by billsox Will do. I'm surprised to hear how little response you got. I guess we're in a small minority of folks that need to know how to calculate past and future job execution dates/times. I tried to see how Microsoft calculates the "next_run_date" and "next_run_time" fields in the sp_help_job stored procedure. But it looks like it calls an extended stored procedure which calls a .dll file to perform the calculations. A dead end, as far as I'm concerned. I think I'm faced with either creating a much less elegant solution (which I'm dreading) or learning how the experts manage bitmapping and devising my own solution. Either way, I'll need some good luck!If anyone else can help us solve this dilemma, please post! Many thanks in advance.Bill
Hi Bill,If you know T-SQL well and able to write stored procedures and user defined functions, you could write it yourself. Its a lot to program though. I even offered money for somebody to write it. Not enough though. $100 and the author remains the resell rights. Fair deal for a student or a guy from india to do it in his spare time. I provided already everything that is needed to figure it out and write the code. I have some more in a word document, if you are interested. You can shoot me an email. My contact information are available here http://www.cumbrowski.com/contactI have it in Word 2007 format, but can save it in a different format, if you don't have Office 2007.Cheers!Carsten Cumbrowskihttp://www.sqlhunt.com/ |
|
|
Cumbrowski.com
Starting Member
6 Posts |
Posted - 2008-05-26 : 18:26:27
|
Hi Bill,Here are the links to the SQL Server Central and Experts-Exchange discussions. Just FYI. Maybe some of the comments are useful to you.I think you need a full account for the Experts-Exchange details.I can paste the stuff into a document as well, if you do not have an account and cannot access the full content.http://www.sqlservercentral.com/Forums/Topic378529-149-1.aspxhttp://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/Q_22393535.htmlCheers!Carsten Cumbrowskihttp://www.sqlhunt.com/ |
|
|
SHardy
Starting Member
35 Posts |
Posted - 2008-11-18 : 10:17:13
|
I know this is an old topic, so apologies if you have already found the solution. I stumbled across this topic whilst trying to figure out a different issue. However, I have a function in place that I believe should give you the required results. Unfortunately I do not have the original source bookmarked and as a result I am unable to give credit to the original "author".Run the following against your msdb to create a user function. When calling the function you will need to suplpy the start & end date/time for your required period.USE [msdb]GO/****** Object: UserDefinedFunction [dbo].[udfGetScheduleTimes] Script Date: 11/18/2008 15:14:58 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE FUNCTION [dbo].[udfGetScheduleTimes]( @startDate DATETIME, @endDate DATETIME)RETURNS @t TABLE ( scheduleID INT NOT NULL, serverName SYSNAME NOT NULL, jobName SYSNAME NOT NULL, jobDescription NVARCHAR(512) NOT NULL, scheduleName SYSNAME NOT NULL, categoryName SYSNAME NOT NULL, infoDate DATETIME NOT NULL, startTime DATETIME NOT NULL, endTime DATETIME NOT NULL, jobEnabled INT NOT NULL, scheduleEnabled INT NOT NULL)ASBEGIN-- Create a tally table. If you already have one of your own please use that instead.DECLARE @tallyNumbers TABLE ( num SMALLINT PRIMARY KEY CLUSTERED )DECLARE @index SMALLINTSET @index = 1WHILE @index <= 8640 BEGIN INSERT @tallyNumbers ( num ) VALUES ( @index ) SET @index = @index + 1 END-- Create a staging table for jobschedulesDECLARE @jobSchedules TABLE ( rowID INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED, serverName SYSNAME NOT NULL, jobName SYSNAME NOT NULL, jobDescription NVARCHAR(512) NOT NULL, scheduleName SYSNAME NOT NULL, scheduleID INT NOT NULL, categoryName SYSNAME NOT NULL, freq_type INT NOT NULL, freq_interval INT NOT NULL, freq_subday_type INT NOT NULL, freq_subday_interval INT NOT NULL, freq_relative_interval INT NOT NULL, freq_recurrence_factor INT NOT NULL, startDate DATETIME NOT NULL, startTime DATETIME NOT NULL, endDate DATETIME NOT NULL, endTime DATETIME NOT NULL, jobEnabled INT NOT NULL, scheduleEnabled INT NOT NULL )-- Popoulate the staging table for JobSchedules with SQL Server 2005 and SQL Server 2008INSERT @JobSchedules ( serverName, jobName, jobDescription, scheduleName, scheduleID, categoryName, freq_type, freq_interval, freq_subday_type, freq_subday_interval, freq_relative_interval, freq_recurrence_factor, startDate, startTime, endDate, endTime, jobEnabled, scheduleEnabled )SELECT srv.srvname, sj.name, COALESCE(sj.description, ''), ss.name, ss.schedule_id, sc.name, ss.freq_type, ss.freq_interval, ss.freq_subday_type, ss.freq_subday_interval, ss.freq_relative_interval, ss.freq_recurrence_factor, COALESCE(STR(ss.active_start_date, 8), CONVERT(CHAR(8), GETDATE(), 112)), STUFF(STUFF(REPLACE(STR(ss.active_start_time, 6), ' ', '0'), 3, 0, ':'), 6, 0, ':'), STR(ss.active_end_date, 8), STUFF(STUFF(REPLACE(STR(ss.active_end_time, 6), ' ', '0'), 3, 0, ':'), 6, 0, ':'), sj.enabled, ss.enabledFROM msdb..sysschedules AS ssINNER JOIN msdb..sysjobschedules AS sjs ON sjs.schedule_id = ss.schedule_idINNER JOIN msdb..sysjobs AS sj ON sj.job_id = sjs.job_idINNER JOIN sys.sysservers AS srv ON srv.srvid = sj.originating_server_idINNER JOIN msdb..syscategories AS sc ON sc.category_id = sj.category_idWHERE ss.freq_type IN (1, 4, 8, 16, 32)ORDER BY srv.srvname, sj.name, ss.name-- Deal with first, second, third, fourth and last occurenceDECLARE @tempStart DATETIME, @tempEnd DATETIMESELECT @tempStart = DATEADD(MONTH, DATEDIFF(MONTH, '19000101', @startDate), '19000101'), @TempEnd = DATEADD(MONTH, DATEDIFF(MONTH, '18991231', @endDate), '18991231')DECLARE @dayInformation TABLE ( infoDate DATETIME PRIMARY KEY CLUSTERED, weekdayName VARCHAR(9) NOT NULL, statusCode INT NOT NULL, lastDay TINYINT DEFAULT 0 )WHILE @tempStart <= @tempEnd BEGIN INSERT @dayInformation ( infoDate, weekdayName, statusCode ) SELECT @tempStart, DATENAME(WEEKDAY, @tempStart), CASE WHEN DATEPART(DAY, @tempStart) BETWEEN 1 AND 7 THEN 1 WHEN DATEPART(DAY, @tempStart) BETWEEN 8 AND 14 THEN 2 WHEN DATEPART(DAY, @tempStart) BETWEEN 15 AND 21 THEN 4 WHEN DATEPART(DAY, @tempStart) BETWEEN 22 AND 28 THEN 8 ELSE 0 END SET @tempStart = DATEADD(DAY, 1, @tempStart) ENDUPDATE diSET di.statusCode = di.statusCode + 16FROM @dayInformation AS diINNER JOIN ( SELECT DATEDIFF(MONTH, '19000101', infoDate) AS theMonth, DATEPART(DAY, MAX(infoDate)) - 6 AS theDay FROM @dayInformation GROUP BY DATEDIFF(MONTH, '19000101', infoDate) ) AS x ON x.theMonth = DATEDIFF(MONTH, '19000101', di.infoDate)WHERE DATEPART(DAY, di.infoDate) >= x.theDayUPDATE diSET di.lastDay = 16FROM @dayInformation AS diINNER JOIN ( SELECT DATEDIFF(MONTH, '19000101', infoDate) AS theMonth, MAX(infoDate) AS theDay FROM @dayInformation GROUP BY DATEDIFF(MONTH, '19000101', infoDate) ) AS x ON x.theMonth = DATEDIFF(MONTH, '19000101', di.infoDate)WHERE di.infoDate = x.theDayUPDATE @dayInformationSET lastDay = DATEPART(DAY, infoDate)WHERE DATEPART(DAY, infoDate) BETWEEN 1 AND 4-- Stage all individual schedule timesDECLARE @scheduleTimes TABLE ( rowID INT NOT NULL, infoDate DATETIME NOT NULL, startTime DATETIME NOT NULL, endTime DATETIME NOT NULL, waitSeconds INT DEFAULT 0 )-- Insert one time only schedulesINSERT @scheduleTimes ( rowID, infoDate, startTime, endTime )SELECT rowID, startDate, startTime, endTimeFROM @jobSchedulesWHERE freq_type = 1 AND startDate >= @StartDate AND startDate <= @EndDate-- Insert daily schedulesINSERT @scheduleTimes ( rowID, infoDate, startTime, endTime, waitSeconds )SELECT js.rowID, di.infoDate, js.startTime, js.endTime, CASE js.freq_subday_type WHEN 1 THEN 0 WHEN 2 THEN js.freq_subday_interval WHEN 4 THEN 60 * js.freq_subday_interval WHEN 8 THEN 3600 * js.freq_subday_interval ENDFROM @jobSchedules AS jsINNER JOIN @dayInformation AS di ON di.infoDate >= @startDate AND di.infoDate <= @endDateWHERE js.freq_type = 4 AND DATEDIFF(DAY, js.startDate, di.infoDate) % js.freq_interval = 0-- Insert weekly schedulesINSERT @scheduleTimes ( rowID, infoDate, startTime, endTime, waitSeconds )SELECT js.rowID, di.infoDate, js.startTime, js.endTime, CASE js.freq_subday_type WHEN 1 THEN 0 WHEN 2 THEN js.freq_subday_interval WHEN 4 THEN 60 * js.freq_subday_interval WHEN 8 THEN 3600 * js.freq_subday_interval ENDFROM @jobSchedules AS jsINNER JOIN @dayInformation AS di ON di.infoDate >= @startDate AND di.infoDate <= @endDateWHERE js.freq_type = 8 AND 1 = CASE WHEN js.freq_interval & 1 = 1 AND di.weekdayName = 'Sunday' THEN 1 WHEN js.freq_interval & 2 = 2 AND di.weekdayName = 'Monday' THEN 1 WHEN js.freq_interval & 4 = 4 AND di.weekdayName = 'Tuesday' THEN 1 WHEN js.freq_interval & 8 = 8 AND di.weekdayName = 'Wednesday' THEN 1 WHEN js.freq_interval & 16 = 16 AND di.weekdayName = 'Thursday' THEN 1 WHEN js.freq_interval & 32 = 32 AND di.weekdayName = 'Friday' THEN 1 WHEN js.freq_interval & 64 = 64 AND di.weekdayName = 'Saturday' THEN 1 ELSE 0 END AND (DATEDIFF(DAY, js.startDate, di.infoDate) / 7) % js.freq_recurrence_factor = 0-- Insert monthly schedulesINSERT @scheduleTimes ( rowID, infoDate, startTime, endTime, waitSeconds )SELECT js.rowID, di.infoDate, js.startTime, js.endTime, CASE js.freq_subday_type WHEN 1 THEN 0 WHEN 2 THEN js.freq_subday_interval WHEN 4 THEN 60 * js.freq_subday_interval WHEN 8 THEN 3600 * js.freq_subday_interval ENDFROM @jobSchedules AS jsINNER JOIN @dayInformation AS di ON di.infoDate >= @startDate AND di.infoDate <= @endDateWHERE js.freq_type = 16 AND DATEPART(DAY, di.infoDate) = js.freq_interval AND DATEDIFF(MONTH, js.startDate, di.infoDate) % js.freq_recurrence_factor = 0-- Insert monthly relative schedulesINSERT @scheduleTimes ( rowID, infoDate, startTime, endTime, waitSeconds )SELECT js.rowID, di.infoDate, js.startTime, js.endTime, CASE js.freq_subday_type WHEN 1 THEN 0 WHEN 2 THEN js.freq_subday_interval WHEN 4 THEN 60 * js.freq_subday_interval WHEN 8 THEN 3600 * js.freq_subday_interval ENDFROM @jobSchedules AS jsINNER JOIN @dayInformation AS di ON di.infoDate >= @startDate AND di.infoDate <= @endDateWHERE js.freq_type = 32 AND 1 = CASE WHEN js.freq_interval = 1 AND di.weekdayName = 'Sunday' THEN 1 WHEN js.freq_interval = 2 AND di.weekdayName = 'Monday' THEN 1 WHEN js.freq_interval = 3 AND di.weekdayName = 'Tuesday' THEN 1 WHEN js.freq_interval = 4 AND di.weekdayName = 'Wednesday' THEN 1 WHEN js.freq_interval = 5 AND di.weekdayName = 'Thursday' THEN 1 WHEN js.freq_interval = 6 AND di.weekdayName = 'Friday' THEN 1 WHEN js.freq_interval = 7 AND di.weekdayName = 'Saturday' THEN 1 WHEN js.freq_interval = 8 AND js.freq_relative_interval = di.lastDay THEN 1 WHEN js.freq_interval = 9 AND di.weekdayName NOT IN ('Sunday', 'Saturday') THEN 1 WHEN js.freq_interval = 10 AND di.weekdayName IN ('Sunday', 'Saturday') THEN 1 ELSE 0 END AND di.statusCode & js.freq_relative_interval = js.freq_relative_interval AND DATEDIFF(MONTH, js.startDate, di.infoDate) % js.freq_recurrence_factor = 0-- Get the daily recurring schedule timesINSERT @scheduleTimes ( rowID, infoDate, startTime, endTime, waitSeconds )SELECT st.rowID, st.infoDate, DATEADD(SECOND, tn.num * st.waitSeconds, st.startTime), st.endTime, st.waitSecondsFROM @scheduleTimes AS stCROSS JOIN @tallyNumbers AS tnWHERE tn.num * st.waitSeconds <= DATEDIFF(SECOND, st.startTime, st.endTime) AND st.waitSeconds > 0-- Present the resultINSERT @t (scheduleID, serverName, jobName, jobDescription, scheduleName, categoryName, infoDate, startTime, endTime, jobEnabled, scheduleEnabled)SELECT js.scheduleID, js.serverName, js.jobName, js.jobDescription, js.scheduleName, js.categoryName, st.infoDate, st.startTime, st.endTime, js.jobEnabled, js.scheduleEnabledFROM @scheduleTimes AS stINNER JOIN @jobSchedules AS js ON js.rowID = st.rowIDWHERE js.jobEnabled = 1 AND js.scheduleEnabled = 1RETURNEND Hope this is of use to you.Regards,Simon |
|
|
Cumbrowski.com
Starting Member
6 Posts |
Posted - 2008-11-19 : 03:10:02
|
quote: Originally posted by SHardy I know this is an old topic, so apologies if you have already found the solution. I stumbled across this topic whilst trying to figure out a different issue. However, I have a function in place that I believe should give you the required results. Unfortunately I do not have the original source bookmarked and as a result I am unable to give credit to the original "author".
Hi Simon, thanks a lot for the code. I glimpsed over it and it seems exactly to do what I was looking for, or at least close enough that it would only require some minor tweaking.I never got an answer anywhere so there are no apologies necessary for posting one late. :) This is a thread that explains a problem in great detail, but remained without a useful answer. There are several threads, which have the same fate. People who have the problem and find this thread today will be glad, because it actually helps them. The problem did not go away with SQL 2005 or SQL 2008 either, from what I can tell, so its also not obsolete at all.Cheers!Carsten CumbrowskiMS SQL Server Resources Meta Search Enginehttp://www.sqlhunt.com/ |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
|
SHardy
Starting Member
35 Posts |
Posted - 2008-11-19 : 05:35:13
|
Peso, I did not intentionally "rip off" your blog post. In fact, before posting, I did do quite a bit of Google-ing to try and find it so as to post the link and properly credit you. Unfortunately, I was unably to find it & could not remember what I had originally searched for to find your blog entry in the first place.Hence my comment "Unfortunately I do not have the original source bookmarked and as a result I am unable to give credit to the original 'author'".I made no attempt to pass it off as my own work, and made it quite clear that I had found the solution elsewhere.However, as you are reading this topic, I would like to take the opportunity to thank you for that particular piece of code, and is was absolutely spot on for what I required. TBH, I was getting in a bit of a mess with some of the schedule options. Hopefully the OP and billsox will find your work just as useful.Regards,Simon |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
|
blindman
Master Smack Fu Yak Hacker
2365 Posts |
Posted - 2008-11-19 : 08:23:01
|
Sorry Peso, but this is at least partly your own fault for not including your name in comments at the top of the code.If they removed your credit before posting the code, that would be clearly wrong. But they may just be copying code they got from you a long time ago and may not know where the original source was.If it is not practically useful, then it is practically useless. |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2008-11-19 : 08:25:55
|
October 10, 2008 is not that long ago. But I do get your point!EDIT: Blog post is edited to include source url E 12°55'05.63"N 56°04'39.26" |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2008-11-19 : 11:39:18
|
quote: Originally posted by Peso No worries. This guy is worse. Much worse http://forums.asp.net/p/1339487/2754586.aspxEDIT: Wow! 100 dollars for that piece of code? E 12°55'05.63"N 56°04'39.26"
That signature in the post seems very familiar to me within sqlteam forums. |
|
|
Cumbrowski.com
Starting Member
6 Posts |
Posted - 2008-11-24 : 17:31:49
|
Peso, adding a URL to the blog post or at least the blog itself would be smart too. You could remove parts of the extended documentation from the source code and make it available via a special blog post. The main code then simply includes a link to it. That keeps the code lean and clean, has a reference to an extended documentation and refers to the source by doing it.Simon mentioned that he wanted to give credits, but was not able to find the source anymore. What I find interesting is the fact that you Peso found out about the posting of the script and solution so quickly after it was posted here and SQLServerCentral, while the original threads with the open problem remained unanswered for good 1 1/2 years. A simple link to your blog post with the script a few weeks earlier would have been nice, but didn't happen. Now credits were given properly, even enhancements suggested at the other forum, plus Simon apologized, so everybody should be happy now :)Cheers! and no hard feelings.Carsten CumbrowskiMS SQL Server Resources Meta Search Enginehttp://www.sqlhunt.com/ |
|
|
|
|
|
|
|