Last active
December 21, 2016 21:07
-
-
Save xagronaut/6d2d802f0420374944cb48439bb13b6a to your computer and use it in GitHub Desktop.
Analysis query for SQL Server based on the sys.sql_dependencies view. Suitable for CSV export and import into Neo4j.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- ******* | |
-- * Track which objects in the database depend on other objects | |
-- ******* | |
;WITH ObjectTypeNames AS ( | |
SELECT [Type] = 'P', [Name] = 'DbProcedure' UNION ALL | |
SELECT [Type] = 'FN', [Name] = 'DbFunction' UNION ALL | |
SELECT [Type] = 'U', [Name] = 'DbTable' UNION ALL | |
SELECT [Type] = 'V', [Name] = 'DbView' | |
), | |
ObjectReferences AS ( | |
SELECT DISTINCT | |
[ReferencerId] = sqd1.[object_id], | |
[ReferencerSchema] = OBJECT_SCHEMA_NAME(sqd1.[object_id]), | |
[ReferencerName] = OBJECT_NAME(sqd1.[object_id]), | |
[ReferencerFullName] = OBJECT_SCHEMA_NAME(sqd1.[object_id]) + '.' + OBJECT_NAME(sqd1.[object_id]), | |
[ReferencingType] = otn1.Name, | |
[ReferencedId] = sqd1.[referenced_major_id], | |
[ReferencedSchema] = OBJECT_SCHEMA_NAME(sqd1.referenced_major_id), | |
[ReferencedName] = OBJECT_NAME(sqd1.referenced_major_id), | |
[ReferencedFullName] = OBJECT_SCHEMA_NAME(sqd1.referenced_major_id) + '.' + OBJECT_NAME(sqd1.referenced_major_id), | |
[ReferencedType] = otn2.Name | |
FROM sys.sql_dependencies sqd1 | |
JOIN sys.sysobjects o | |
ON sqd1.[object_id] = o.id | |
JOIN ObjectTypeNames otn1 | |
ON o.xtype = otn1.[Type] | |
JOIN sys.sysobjects o2 | |
ON sqd1.[referenced_major_id] = o2.id | |
JOIN ObjectTypeNames otn2 | |
ON o2.xtype = otn2.[Type] | |
) | |
SELECT | |
ref.* | |
--, [ReferencerDefinition] = (SELECT OBJECT_DEFINITION(ref.ReferencerId) FOR XML PATH(''), type) | |
--, [ReferencedDefinition] = (SELECT OBJECT_DEFINITION(ref.ReferencedId) FOR XML PATH(''), type) | |
FROM ObjectReferences ref | |
ORDER BY ref.ReferencerFullName, ref.ReferencedFullName |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Load DbView-to-DbTable dependencies from CSV | |
LOAD CSV WITH HEADERS FROM 'http://localhost/neo4jImport/dependencies.txt' | |
AS item FIELDTERMINATOR '\t' | |
WITH item | |
WHERE item.ReferencingType = 'DbView' AND item.ReferencedType = 'DbTable' | |
MATCH (i:DbView { name: item.ReferencerName, schemaName: item.ReferencerSchema }) | |
MATCH (j:DbTable { name: item.ReferencedName, schemaName: item.ReferencedSchema }) | |
MERGE (i)-[r:REFERENCES]->(j) | |
RETURN item, i, r, j; | |
// Load DbProcedure-to-DbView dependencies from CSV | |
LOAD CSV WITH HEADERS FROM 'http://localhost/neo4jImport/dependencies.txt' | |
AS item FIELDTERMINATOR '\t' | |
WITH item | |
WHERE item.ReferencingType = 'DbProcedure' AND item.ReferencedType = 'DbView' | |
MATCH (i:DbProcedure { name: item.ReferencerName, schemaName: item.ReferencerSchema }) | |
MATCH (j:DbView { name: item.ReferencedName, schemaName: item.ReferencedSchema }) | |
MERGE (i)-[r:REFERENCES]->(j) | |
RETURN item, i, r, j; | |
// Load DbProcedure-to-DbTable dependencies from CSV | |
LOAD CSV WITH HEADERS FROM 'http://localhost/neo4jImport/dependencies.txt' | |
AS item FIELDTERMINATOR '\t' | |
WITH item | |
WHERE item.ReferencingType = 'DbProcedure' AND item.ReferencedType = 'DbTable' | |
MATCH (i:DbProcedure { name: item.ReferencerName, schemaName: item.ReferencerSchema }) | |
MATCH (j:DbTable { name: item.ReferencedName, schemaName: item.ReferencedSchema }) | |
MERGE (i)-[r:REFERENCES]->(j) | |
RETURN item, i, r, j; | |
// Load DbProcedure-to-DbFunction dependencies from CSV | |
LOAD CSV WITH HEADERS FROM 'http://localhost/neo4jImport/dependencies.txt' | |
AS item FIELDTERMINATOR '\t' | |
WITH item | |
WHERE item.ReferencingType = 'DbProcedure' AND item.ReferencedType = 'DbFunction' | |
MATCH (i:DbProcedure { name: item.ReferencerName, schemaName: item.ReferencerSchema }) | |
MATCH (j:DbFunction { name: item.ReferencedName, schemaName: item.ReferencedSchema }) | |
MERGE (i)-[r:REFERENCES]->(j) | |
RETURN item, i, r, j; | |
// Find relationships to DbProcedure | |
MATCH (n:DbProcedure { name: "ProcName" })-[]-(m) RETURN n, m; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment