Skip to content

Commit 7288ebb

Browse files
committed
Add script para procurar dependencias e pequenos ajustes na doc sqlserverlib-assistant
1 parent 1992be1 commit 7288ebb

File tree

3 files changed

+76
-6
lines changed

3 files changed

+76
-6
lines changed

Modulos/DependencyChain.sql

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*#info
2+
3+
# Autor
4+
Rodrigo Ribeiro Gomes
5+
6+
# Descrição
7+
Esse script já me ajudou muitas e muitas vezes para achar as dependências de um objet, como view, procedure, etc.
8+
Você passa o nome da view, e então ele usa a DMV sys.sql_expression_dependencies recursivamente para achar todas as dependências.
9+
O legal, é que ele acha as dependências em outros bancos, então é bem útil.
10+
11+
As colunas retornadas são:
12+
referenced_id = object_id da dependencia
13+
ReferencedObject = nome do objeto referenciado (sem o esquema)
14+
type_desc = Tipo do objeto dependente
15+
RefLevel = O nível de dependência. 1 é dependêcnia direta (está direto no código do objeto que você colocou).
16+
2, ele encontrou em um dos obejtos de nível 1
17+
3, el encontrou em um dos objetos de nível 2 e por aí vai!
18+
RefChain = Uma representação visual da dependência, partindo do objeto que você passou até este atual.
19+
Com isso você consegue ver todos os objetos referenciados até chegar neste da linha respectiva.
20+
21+
*/
22+
23+
24+
;WITH Depends AS (
25+
SELECT
26+
E.referencing_id
27+
,E.referenced_id
28+
,E.referenced_database_name
29+
,ReferencedObject = CONVERT(nvarchar(1000),ISNULL(E.referenced_server_name+'.','')+ISNULL(E.referenced_database_name+'.','')+ISNULL(E.referenced_schema_name+'.','')+ISNULL(E.referenced_entity_name,''))
30+
,RefLevel = CONVERT(bigint,1)
31+
,RefChain = CONVERT(nvarchar(max), OBJECT_NAME(E.referencing_id)+'->'+E.referenced_entity_name )
32+
FROM
33+
sys.sql_expression_dependencies E
34+
WHERE
35+
E.referencing_id = OBJECT_ID('schema.NomeTabela')
36+
37+
38+
UNION ALL
39+
40+
SELECT
41+
E.referencing_id
42+
,E.referenced_id
43+
,E.referenced_database_name
44+
,ReferencedObject = CONVERT(nvarchar(1000),ISNULL(E.referenced_server_name+'.','')+ISNULL(E.referenced_database_name+'.','')+ISNULL(E.referenced_schema_name+'.','')+ISNULL(E.referenced_entity_name,''))
45+
,RefLevel = CONVERT(bigint,D.RefLevel + 1)
46+
,RefChain = CONVERT(nvarchar(max), D.RefChain+'->'+E.referenced_entity_name )
47+
FROM
48+
Depends D
49+
INNER JOIN
50+
sys.sql_expression_dependencies E
51+
ON E.referencing_id = D.referenced_id
52+
WHERE
53+
E.referenced_minor_id = 0
54+
55+
)
56+
SELECT
57+
D.referenced_id
58+
,D.ReferencedObject
59+
,O.type_desc
60+
,D.RefLevel
61+
,D.RefChain
62+
FROM
63+
Depends D
64+
LEFT JOIN
65+
sys.objects O
66+
ON (D.referenced_database_name IS NULL OR D.referenced_database_name = DB_NAME())
67+
AND D.referenced_id = O.object_id
68+
ORDER BY
69+
D.RefLevel

SqlLibEmbeddings/README.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
Aproveitando o boom e estudos de AI, resolvi indexar todos esses scripts para que seja fáceis de ser procurados por AI.
44
Todos os scripts pertinentes a esse projeto, irei colocar aqui nesse diretório, o que servirá como guia!
55

6-
Como é um projeto público, eu optei por tentar usar o máxio de recursos free possível.
6+
Como é um projeto público, eu optei por tentar usar o máxio de recursos free ou barato possível.
77
Portanto, a estrutura do projeto é a seguinte:
88

9-
- Irei usar um FREE Azure SQL Database, o qual contém um suporte mínimo de vector
9+
- Irei usar o Azure SQL database, que já tem um suporte de vector (tentei usar o FREE Offer mas já nos testes expirou, então peguei por DTU).
1010
- Sempre que este repositório for modificado, ele irá disparar um github action para atualizar o banco
1111
- Um Space no Hugging Face vai me permitir consultar os scripts, conforme texto do usuário, usando algum serviço de LLM.
1212

1313
Com isso, eu consigo usar 100% de tecnologias com muito baixo custo e mantenho todo o código público!
1414

15-
Este diretório contém todos os scripts SQL que irei uar no SQL Database
15+
Este diretório contém todos os scripts SQL que irei uar no Azure SQL Database
1616

1717
# Estrutura do Banco
1818

@@ -24,8 +24,7 @@ Com isso, conseguiremos pesquisar usando os recuross de vector do sql!
2424
Como ó esperado é menos de 1000 linhas, o que é relativamente pouco, então, o sql deve atender bem!
2525

2626

27-
28-
27+
Todo o código e ferramenta da pesquisa estão nesse space do Hugging Face: https://huggingface.co/spaces/rrg92/sqlserver-lib-assistant
2928

3029

3130

SqlLibEmbeddings/tab.Scripts.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
drop table Scripts;
1+
-- For Azure SQL Database or SQL Server 2025+
2+
3+
-- drop table Scripts;
24
CREATE TABLE Scripts (
35
id int IDENTITY PRIMARY KEY WITH(DATA_COMPRESSION = PAGE)
46
,RelPath varchar(1000) NOT NULL

0 commit comments

Comments
 (0)