Hi,
Our conservatory came across an old report that they'd like to run again. The only problem is the report comes up blank when you run it. I've done some basic troubleshooting and found that it's joining a local table lt_class_sched to t_perf and tr_season
just for clarity:
into #temp
from lt_class_sched a
join t_perf b on
a.inv_no = b.perf_no
join tr_season c on
b.season = c.id
where b.season = @season
and
b.perf_code = @perf_code
I've done some investigation and found the report is blank because there is no corresponding inv_no in the lt_class_sched. The perf_no does exist in t_perf however.
My question is, how do I find what populates LT_CLASS_SCHED?
I've checked dependencies for the table in SQL and LT_CLASS_SCHED shows no dependencies, though a number of things depend on it.
Any ideas/suggestions are greatly appreciated.
Thanks
These are local tables native to your org only.The might not be anything that populates. Someone could have just have done a task ->import and truncated into the table as needed.
Revised **Use this to find the SP(s) that have the table within the procedure.
SELECT Name FROM sys.procedures WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%TableNameOrWhatever%'
Hi Nick,
I inherited a large web of confusing (and occasionally crazy) custom tables/views/functions/stored procedures, and have gone on to create scores more, so I created a handy stored procedure to do a fairly exhaustive search of database objects for references to other objects.
I can't remember if there's a way to share files through the network site, but you could send me an email address and I could pass it along to you. Or paste the text of it in here.
--Gawain
No problem. Should get you to the answer rather quickly.
Travis
Unknown said:I've checked dependencies for the table in SQL and LT_CLASS_SCHED shows no dependencies, though a number of things depend on it.
By the way, the reason I created that procedure was that the dependencies in SQL require that objects be loaded into the database in a specific order, which is largely not the case for either Tessitura tables or custom tables.
Also, I'm pretty sure you won't catch dependencies in triggers or SQL Server Agent jobs.
/*[Gawain performs quick scan to ensure there isn't too much profanity in the SP comments*/
/* stored procedure written by Gawain Lavers on 2007/11/13 */
/* searches through system tables to find objects dependent upon the object
whose name is passed in */
use impresario
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[LP_CPSMA_FIND_DEPENDENCIES]', 'P') IS NOT NULL
DROP PROCEDURE [dbo].[LP_CPSMA_FIND_DEPENDENCIES]
CREATE PROCEDURE [dbo].[LP_CPSMA_FIND_DEPENDENCIES](
@search_string varchar(1000),
@dependency_filter varchar(1000) = null
)
AS
SET NOCOUNT ON
BEGIN
declare @whitespace varchar(255)
select @whitespace = '[ ' + char(9) + char(10) + char(13) + ']'
declare @whitespace_and_punctuation varchar(255)
select @whitespace_and_punctuation = '['
+ ' '
+ '.'
+ '('
+ ')'
+ char(9)
+ char(10)
+ char(13)
+ ']'
declare @obj_id int
set @obj_id = (select object_id from sys.objects where name = @search_string)
--RAISERROR if the object is not found
if @obj_id is null
begin
declare @error_string varchar(2000)
set @error_string = 'Could not find object named ' + @search_string + ' in sys.objects.'
RAISERROR (@error_string, 16, 1)
return 1
end
else
select
x.dependent, x.object_id, x.type, x.type_desc, x.found_in
from (
o.name as dependent, o.object_id, o.type, o.type_desc, 'sys.sql_modules' as found_in
from
sys.objects as o
inner join
sys.sql_modules as sm on sm.object_id = o.object_id
where
/*
sm.definition like '%' + @whitespace + @search_string + @whitespace + '%'
or sm.definition like @search_string + @whitespace + '%' --beginnning of the field
or sm.definition like '%' + @whitespace + @search_string --end of the field
or sm.definition like '%\[' + @search_string + '\]%' --bracketed nomenclature, e.g. "[table_name]"
*/
sm.definition like '%' + @whitespace_and_punctuation + @search_string + @whitespace_and_punctuation + '%'
or sm.definition like @search_string + @whitespace_and_punctuation + '%' --beginnning of the field
or sm.definition like '%' + @whitespace_and_punctuation + @search_string --end of the field
escape '\'
union
o.name as dependent, o.object_id, o.type, o.type_desc, 'sys.foreign_keys' as found_in
sys.foreign_keys as fk on fk.parent_object_id = o.object_id
fk.referenced_object_id = @obj_id
sj.name + ': ' + sjs.step_name as dependent, 0 as object_id, ' ' as type, 'Agent Job: Step' as type_desc, 'msdb.dbo.sysjobsteps' as found_in
-- sjs.name as dependent, o.object_id, o.type, o.type_desc, 'sys.sql_modules' as found_in
msdb.dbo.sysjobsteps as sjs
inner join msdb.dbo.sysjobs as sj on sj.job_id = sjs.job_id
sjs.command like '%' + @whitespace_and_punctuation + @search_string + @whitespace_and_punctuation + '%'
or sjs.command like @search_string + @whitespace_and_punctuation + '%' --beginnning of the field
or sjs.command like '%' + @whitespace_and_punctuation + @search_string --end of the field
or sjs.command like '%\[' + @search_string + '\]%' --bracketed nomenclature, e.g. "[table_name]"
) as x
((@dependency_filter is null) or (x.dependent like @dependency_filter))
order by
x.dependent
END
GRANT EXECUTE ON [dbo].[LP_CPSMA_FIND_DEPENDENCIES] TO [ImpUsers]
The SP is then used as follows:
exec LP_CPSMA_FIND_DEPENDENCIES '[object name here]' [optional filter in quotes for returned objects]
I use it a lot for finding where a custom object is using a Tessitura object, so I'll use a filter like 'CPSMA' to narrow down the results to just custom objects.
These are local tables native to your org only. Use this to find the SP(s) the populate the table. SELECT Name FROM sys.procedures WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%TableNameOrWhatever%'From: Nick Torres <bounce-nicktorres3067@tessituranetwork.com>Sent: 3/18/2016 11:42:38 AMHi, Our conservatory came across an old report that they'd like to run again. The only problem is the report comes up blank when you run it. I've done some basic troubleshooting and found that it's joining a local table lt_class_sched to t_perf and tr_season just for clarity: into #temp from lt_class_sched a join t_perf b on a.inv_no = b.perf_no join tr_season c on b.season = c.id where b.season = @season and b.perf_code = @perf_code I've done some investigation and found the report is blank because there is no corresponding inv_no in the lt_class_sched. The perf_no does exist in t_perf however. My question is, how do I find what populates LT_CLASS_SCHED? I've checked dependencies for the table in SQL and LT_CLASS_SCHED shows no dependencies, though a number of things depend on it. Any ideas/suggestions are greatly appreciated. ThanksThis message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!
These are local tables native to your org only.
Use this to find the SP(s) the populate the table.
From: Nick Torres <bounce-nicktorres3067@tessituranetwork.com>Sent: 3/18/2016 11:42:38 AM
I would be interested in that script, if you wouldn’t mind pasting it in this thread
From: Tessitura Technical Forum [mailto:forums-technical@tessituranetwork.com] On Behalf Of Gawain Lavers Sent: 18 March, 2016 11:20 To: Robert Martin <rmartin@waltonartscenter.org> Subject: Re: [Tessitura Technical Forum] Finding the source for a LT
From: Nick Torres <bounce-nicktorres3067@tessituranetwork.com> Sent: 3/18/2016 11:42:38 AM
This message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!
right, I knew they were local to us, it's the logic of finding the source I'm after.Thanks for the code though, it gives me a place to start looking.On Fri, Mar 18, 2016 at 12:13 PM, Travis Armbuster <bounce-travisarmbuster9061@tessituranetwork.com> wrote:These are local tables native to your org only. Use this to find the SP(s) the populate the table. SELECT Name FROM sys.procedures WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%TableNameOrWhatever%'From: Nick Torres <bounce-nicktorres3067@tessituranetwork.com>Sent: 3/18/2016 11:42:38 AMHi, Our conservatory came across an old report that they'd like to run again. The only problem is the report comes up blank when you run it. I've done some basic troubleshooting and found that it's joining a local table lt_class_sched to t_perf and tr_season just for clarity: into #temp from lt_class_sched a join t_perf b on a.inv_no = b.perf_no join tr_season c on b.season = c.id where b.season = @season and b.perf_code = @perf_code I've done some investigation and found the report is blank because there is no corresponding inv_no in the lt_class_sched. The perf_no does exist in t_perf however. My question is, how do I find what populates LT_CLASS_SCHED? I've checked dependencies for the table in SQL and LT_CLASS_SCHED shows no dependencies, though a number of things depend on it. Any ideas/suggestions are greatly appreciated. ThanksThis message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!
Hi Nick, I inherited a large web of confusing (and occasionally crazy) custom tables/views/functions/stored procedures, and have gone on to create scores more, so I created a handy stored procedure to do a fairly exhaustive search of database objects for references to other objects. I can't remember if there's a way to share files through the network site, but you could send me an email address and I could pass it along to you. Or paste the text of it in here. --Gawain From: Nick Torres <bounce-nicktorres3067@tessituranetwork.com>Sent: 3/18/2016 11:42:38 AMHi, Our conservatory came across an old report that they'd like to run again. The only problem is the report comes up blank when you run it. I've done some basic troubleshooting and found that it's joining a local table lt_class_sched to t_perf and tr_season just for clarity: into #temp from lt_class_sched a join t_perf b on a.inv_no = b.perf_no join tr_season c on b.season = c.id where b.season = @season and b.perf_code = @perf_code I've done some investigation and found the report is blank because there is no corresponding inv_no in the lt_class_sched. The perf_no does exist in t_perf however. My question is, how do I find what populates LT_CLASS_SCHED? I've checked dependencies for the table in SQL and LT_CLASS_SCHED shows no dependencies, though a number of things depend on it. Any ideas/suggestions are greatly appreciated. ThanksThis message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!
To find the logic right click on the table and do a Script As Create to a new query On Fri, Mar 18, 2016 at 8:58 AM -0700, "Nick Torres" <bounce-nicktorres3067@tessituranetwork.com<mailto:bounce-nicktorres3067@tessituranetwork.com>> wrote: Hi, Our conservatory came across an old report that they'd like to run again. The only problem is the report comes up blank when you run it. I've done some basic troubleshooting and found that it's joining a local table lt_class_sched to t_perf and tr_season just for clarity: into #temp from lt_class_sched a join t_perf b on a.inv_no = b.perf_no join tr_season c on b.season = c.id where b.season = @season and b.perf_code = @perf_code I've done some investigation and found the report is blank because there is no corresponding inv_no in the lt_class_sched. The perf_no does exist in t_perf however. My question is, how do I find what populates LT_CLASS_SCHED? I've checked dependencies for the table in SQL and LT_CLASS_SCHED shows no dependencies, though a number of things depend on it. Any ideas/suggestions are greatly appreciated. Thanks This message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you! This message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!
Me to – there were a lot of tables created here before my time that here is no documentation for.
Thank you for sharing!
From: Tessitura Technical Forum [mailto:forums-technical@tessituranetwork.com] On Behalf Of Robert Martin Sent: Friday, March 18, 2016 9:52 AM To: Michelle Usadel <musadel@phoenixsymphony.org> Subject: RE: [Tessitura Technical Forum] Finding the source for a LT
Hi all
Another option here is the rather lovely free tool from Redgate called SQL Search.
They do a lot of other good tools, for money, but that one is free, and it's very helpful in tracing use of text within procs, table or view definitions, whatevs.
It's an add-in to Management Studio. Results look like this
Ken
I use SQL Search too and I love it. I also use SQL Prompt from Redgate and I like that too.
From: Tessitura Technical Forum [mailto:forums-technical@tessituranetwork.com] On Behalf Of Brian Wilbur Grundstrom Sent: Monday, March 21, 2016 12:17 PM To: Gloria Ormsby Subject: RE: [Tessitura Technical Forum] Finding the source for a LT
I highly recommend Redgate’s free search plugin. Also, when generating scripts, there are options to include things like permissions and triggers, etc, which I find helpful.
BRIAN WILBUR GRUNDSTROM | Database Administrator SHAKESPEARE THEATRE COMPANY Recipient of the 2012 Regional Theatre Tony Award® 516 Eighth Street, SE | Washington, DC 20003-2834 p 202.547.3230 ext. 2216 | c 917.952.7957 bwg@shakespearetheatre.org www.shakespearetheatre.org www.brianwilbur.com 2015|2016 SEASON •• Farber’s SALOMÉ • Porter’s KISS ME, KATE • Hatcher’s THE CRITIC & Stoppard’s THE REAL INSPECTOR HOUND • Shakespeare’s OTHELLO • Orwell’s 1984 • Shakespeare’s THE TAMING OF THE SHREW
From: Tessitura Technical Forum [mailto:forums-technical@tessituranetwork.com] On Behalf Of Ken McSwain Sent: Sunday, March 20, 2016 7:22 PM To: Brian W. Grundstrom Subject: RE: [Tessitura Technical Forum] Finding the source for a LT
From: Michelle Usadel <bounce-michelleusadel3057@tessituranetwork.com> Sent: 3/18/2016 4:59:41 PM