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 |
pkouzov
Starting Member
1 Post |
Posted - 2008-01-03 : 16:57:35
|
As far as I know SQL Server 2005 lists only dependencies within the same database. In many cases though there are objects in one database depending on objects in a different database on the same server. I unsuccessfully looked for a tool to list those and I ended up creating a script to do the job instead. Any improvements are appreciated, e.g. the script uses syscomments which may no longer be available in the next SQL Server version - I have not found a replacement sys.XXX table yet. Please note that you need to use a connection with access to all the SQL databases on a server and that it may take a while to run the script below if you have many databases with numerous objects in there. On the other hand these are exactly the cases when you need to know which of the thousands of objects are dependent on the table or view you are looking at.P.S. Does anybody know where the extended properties get stored (hint - not in syscomments)? I was looking for those too, since often I document in the description of a field that it links to "DatabaseABC.dbo.TableXYZ.Field1"Plamen Kouzov==========declare @searchstring varchar(50)declare @dbid intdeclare @DBName varchar(1024)declare @command varchar(1024)declare @ServerDBs table([dbid] smallint, DBName varchar(1024))select @searchstring = 'DatabaseABC.dbo.TableXYZ'insert into @ServerDBs ([dbid], DBName)select [dbid], [name]from master.dbo.sysdatabases where [name] not in ('master','tempdb','model','msdb','pubs','Northwind') create table #ObjectsFound (DBName varchar(500), ObjectName varchar(500))while (select count(*) from @ServerDBs)>0BEGIN set @dbid = (select TOP 1 dbid from @ServerDBs) set @DBName = (select DBName from @ServerDBs where dbid = @dbid) set @command = 'use ' + @DBName + '; insert into #ObjectsFound(DBName, ObjectName) select ''' + @DBName + ''', [name] from sysobjects where id in (select [id] from syscomments where text like ''%' + @searchstring + '%'') order by 1' exec sp_sqlexec @command delete from @ServerDBs where dbid = @dbidENDselect * from #ObjectsFound order by 1,2drop table #ObjectsFound |
|
jezemine
Master Smack Fu Yak Hacker
2886 Posts |
Posted - 2008-01-03 : 19:30:13
|
for extended properties, see fn_listextendedproperty and sys.extended_properties elsasoft.org |
|
|
|
|
|
|
|