Banco de Dados - SQL Server
Como encontrar objetos no SQL Server?
Esse texto aborda como encontrar objetos no SQL Server.
por Diego NogareHá algumas semanas, mais uma vez, precisei criar um script para uma documentação de sistema. Estamos montando algumas Matrizes de Rastreabilidade para um projeto no cliente e precisávamos saber todos os objetos que faziam parte de um determinado conjunto de tabelas. O banco de dados ainda é o SQL Server 2000 e não temos muitas coisas que dê para fazer utilizando os recursos novos. O código original é pro SQL Server 2000, mas eu adaptei algumas poucas coisas rapidamente para o 2008. Essa execução abaixo é resultado do SQL Server 2008.
Neste caso, precisávamos encontrar todos os objetos que seriam documentados e, de acordo com a necessidade, migrado para a aplicação off-line que estamos atuando. Veja o código T-SQL e o resultado obtido.
SET NOCOUNT ON
/* MOSTRAR TODAS
TABELAS DO SCHEMA VENDAS [SALES] */
print("*********************************************************")
print("MOSTRAR TODAS TABELAS DO SCHEMA VENDAS [SALES]")
SELECT
T.NAME "TABELAS"
FROM sys.tables T
INNER JOIN sys.schemas S
ON T.schema_id = S.schema_id
WHERE S.name = "Sales"
DECLARE @TABELA VARCHAR(50)
SET @TABELA = "%Store%"
/*
RELACIONAMENTOS DE 1 NIVEL DA TABELA */
print("*********************************************************")
print("RELACIONAMENTOS DE 1 NIVEL DA TABELA")
SELECT
PK.TABLE_NAME "PAI",
FK.TABLE_NAME "FILHO"
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
ON C.CONSTRAINT_NAME =
PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK
ON C.UNIQUE_CONSTRAINT_NAME =
FK.CONSTRAINT_NAME
WHERE FK.TABLE_NAME = REPLACE(@TABELA,"%","")
OR PK.TABLE_NAME = REPLACE(@TABELA,"%","")
/* TODOS OS
OBJETOS DA TABELA */
print("*********************************************************")
print("TODOS OS OBJETOS DA TABELA")
SELECT
O.NAME "NOME",
REPLACE(O.type_desc,"_"," ") "TIPO"
FROM SYS.OBJECTS O
INNER JOIN SYSCOMMENTS C
ON O.object_id = C.ID
WHERE C.TEXT LIKE @TABELA
/* TODAS AS
CONSTRAINTS DA TABELA */
print("*********************************************************")
print("TODAS AS CONSTRAINTS DA TABELA")
SELECT
O2.NAME "TABELA",
CL.NAME "COLUNA",
O.NAME "CONSTRAINT",
COM.TEXT "CONDIÇÃO"
FROM SYSCONSTRAINTS C
INNER JOIN SYSOBJECTS O
ON O.ID = C.CONSTID
INNER JOIN SYSOBJECTS O2
ON O2.ID = C.ID
INNER JOIN SYSCOLUMNS CL
ON CL.ID = O2.ID
AND CL.COLID = C.COLID
INNER JOIN SYSCOMMENTS COM
ON O.ID = COM.ID
WHERE O2.NAME LIKE REPLACE(@TABELA,"%","")
AND O2.XTYPE = "U"
ORDER BY O2.NAME, CL.NAME, O.NAME
SET NOCOUNT OFF
e o resultado apresentado é esse:
*********************************************************
MOSTRAR TODAS TABELAS DO SCHEMA VENDAS [SALES]
TABELAS
--------------------------------
Store
StoreContact
ContactCreditCard
CountryRegionCurrency
CreditCard
Currency
SalesOrderDetail
CurrencyRate
Customer
SalesOrderHeader
CustomerAddress
SalesOrderHeaderSalesReason
SalesPerson
SalesPersonQuotaHistory
SalesReason
Individual
SalesTaxRate
SalesTerritory
SalesTerritoryHistory
ShoppingCartItem
SpecialOffer
SpecialOfferProduct
*********************************************************
RELACIONAMENTOS DE 1 NIVEL DA TABELA
PAI
FILHO
----------------- ----------------
StoreContact Store
Store
Customer
Store
SalesPerson
*********************************************************
TODOS OS OBJETOS DA TABELA
NOME
TIPO
------------------------ ---------------------------
uspLogError
SQL STORED PROCEDURE
iuIndividual
SQL TRIGGER
iStore
SQL TRIGGER
vStoreWithDemographics VIEW
ufnGetContactInformation SQL TABLE VALUED FUNCTION
*********************************************************
TODAS AS CONSTRAINTS DA TABELA
TABELA COLUNA
CONSTRAINT
CONDIÇÃO
------- -------------- ---------------------- -----------
Store ModifiedDate DF_Store_ModifiedDate
(getdate())
Store rowguid
DF_Store_rowguid (newid())
- Representando dados em XML no SQL ServerSQL Server
- Diferenças entre SEQUENCES x IDENTITY no Microsoft SQL Server 2012SQL
- Utilizando FILETABLE no SQL Server 2012SQL Server
- NHibernate com o Delphi Prism: Acessando um Banco de Dados SQL ServerVisual Studio
- Novidades no SQL Server Codinome DenaliSQL Server