sql - Find all ERDs containing table with specified name -


is possible can query names of erds (entity relationship diagram) contain table name

like '%mytable%' 

something this:

select *  <erd objects>  tablename '%%' 

actually, have large database lots of erds. so, understand scope of table want browse erds of specific table.

as understand need list of tables contained in database diagrams. there can article. add part of here:

the diagram stored in binary field. , can not convert readable form without difficulties. deserializing field (called definition) need 2 functions:

create function [dbo].[tool_varbinarytovarchar_text] (     @varbinaryvalue varbinary(max),     @bitasciionly   bit = 0 ) returns varchar(max) begin declare @numberofbytes  int  set @numberofbytes = datalength(@varbinaryvalue) -- part 1 -- if (@numberofbytes > 4) begin     declare @firsthalfnumberofbytes int     declare @secondhalfnumberofbytes int     set @firsthalfnumberofbytes  = @numberofbytes/2     set @secondhalfnumberofbytes = @numberofbytes - @firsthalfnumberofbytes     -- call function recursively 2 parts of input split in half     return dbo.tool_varbinarytovarchar_text(cast(substring(@varbinaryvalue, 1                           , @firsthalfnumberofbytes)  varbinary(max)),@bitasciionly)          + dbo.tool_varbinarytovarchar_text(cast(substring(@varbinaryvalue, @firsthalfnumberofbytes+1 , @secondhalfnumberofbytes) varbinary(max)),@bitasciionly) end  if (@numberofbytes = 0) begin     return ''   -- no bytes found, therefore no 'hex string' returned end  -- part 2 -- declare @highbyte       int -- @numberofbytes <= 4 (four or less characters/8 hex digits input) --                       eg. 88887777 66665555 44443333 22221111 -- we'll process right-most (least-significant) byte, consists -- of 8 bits  -- 2. carve off rightmost 8 bits/single hex digit (ie 22221111) --    divide 16 shift-left (now processing 2222) set @highbyte = cast(@varbinaryvalue int) & 255 if @bitasciionly = 1 , (@highbyte < 32 or @highbyte > 126) set @highbyte=13;  -- 3. trim byte (two hex values) right (least significant) input binary --    in preparation further parsing set @varbinaryvalue = substring(@varbinaryvalue, 1, (@numberofbytes-1))  -- 4. recursively call method on remaining binary data, concatenating text  --    'value' decoded ascii character representation --    ie. pass 88887777 66665555 44443333 function, adding x result string return dbo.tool_varbinarytovarchar_text(@varbinaryvalue,@bitasciionly) +   char(@highbyte) end 

and:

create function [dbo].[fntool_scriptdiagram2005_text]() returns  @tblout table  (     -- add column definitions table variable here     diagramname     nvarchar(128),      diagram_id      int primary key,     diagram_text    varchar(max),     diagram_ascii   varchar(max) ) begin     declare @name           nvarchar(128);     declare @diagram_id     int;     declare @index          int;     declare @size           int;     declare @chunk          int;     declare @line           varchar(max);     declare @lineasc        varchar(max);     declare @currentpos     int;     select @currentpos = min(diagram_id) dbo.sysdiagrams;      while (@currentpos not null)     begin         -- set start index, , chunk 'constant' value         set @index = 1;     --          set @chunk = 32;    -- values work: 2, 6                             -- values fail: 15,16, 64          select  @diagram_id = diagram_id,                 @size = datalength(definition),                 @name = name           dbo.sysdiagrams           diagram_id = @currentpos;          -- diagram_id, work          set @line = '';         set @lineasc = '';         while @index < @size         begin             -- output many update statements required append diagram binary             -- data, represented hexadecimal strings             select  @line = @line + dbo.tool_varbinarytovarchar_text(substring (definition, @index, @chunk),0),                     @lineasc = @lineasc + dbo.tool_varbinarytovarchar_text(substring (definition, @index, @chunk),1)                dbo.sysdiagrams                diagram_id = @currentpos;              set @index = @index + @chunk;         end         insert @tblout (diagramname, diagram_id, diagram_text, diagram_ascii)              values         (@name,      @diagram_id, @line,        replace(@lineasc,char(13),''));         select @currentpos = min(diagram_id)           dbo.sysdiagrams          diagram_id > @currentpos;     end     return; end 

after can run:

select *  [dbo].[fntool_scriptdiagram2005_text] () diagram_ascii '%tabletofind%' 

for example have created diagram testdiagram 2 tables named whatever , ie_stat. in return query:

root entrypfobcompobj_ !"#$%&'()*+,-.123456789:(}5n]4o[\0v?[?i???v?[?i??t,,,4") -bh''uu94941#xv4xdboie_statmicrosoft dds form 2.0embedded object9q&sch_labels_visibled(activetableviewmode1 tableviewmode:0:4,0,28ddsstreamschema udv default&/dsref-schema-contents,0schema udv default post v66;4,0,2310,1,1890,5,1260 tableviewmode:12,0,284,0,2805 tableviewmode:22,0,284,0,2310 tableviewmode:32,0,284,0,2310 tableviewmode:4>4,0,284,0,2310,12,2730,11,1680(activetableviewmode1 tableviewmode:0:4,0,284,0,2310,1,1890,5,1260 tableviewmode:12,0,284,0,2805 tableviewmode:22,0,284,0,2310 tableviewmode:32,0,284,0,2310 tableviewmode:4>4,0,284,0,2310,12,2730,11,1680naqw9 lhedata source=********;initial catalog=test;integrated security=true;multipleactiveresultsets=false;trustservercertificate=true;packet size=4096;application name="microsoft sql server management studio"testdiagram&whateverdbo$ie_statdboke7d2pn{1634cdd7-0888-42e3-9fa2-b6d32563b91d}br

you can see both table names.


Comments

Popular posts from this blog

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project.Error occurred in starting fork -

windows - Debug iNetMgr.exe unhandle exception System.Management.Automation.CmdletInvocationException -

configurationsection - activeMq-5.13.3 setup configurations for wildfly 10.0.0 -