Initial commit

This commit is contained in:
2021-08-26 20:59:17 +02:00
commit 3afa4c82ef
524 changed files with 52428 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
select DISTINCT '[' + S2.Name + '].[' + AT.Name + ']' as UDTName,
ISNULL('[' + A2.name + ']','') AS Dependency,
ISNULL('[' + S3.Name + '].[' + A3.name + ']','') AS ObjectDependency,
AF.assembly_id, A.clr_name,A.name,S.name AS Owner, A.permission_set_desc, A.is_visible, content
FROM sys.assemblies A
INNER JOIN sys.assembly_files AF ON AF.assembly_id = A.assembly_id
LEFT JOIN sys.assembly_references AR ON A.assembly_id = AR.referenced_assembly_id
LEFT JOIN sys.assemblies A2 ON A2.assembly_id = AR.assembly_id
LEFT JOIN sys.schemas S1 ON S1.schema_id = A2.principal_id
INNER JOIN sys.schemas S ON S.schema_id = A.principal_id
LEFT JOIN sys.assembly_types AT ON AT.assembly_id = A.assembly_id
LEFT JOIN sys.schemas S2 ON S2.schema_id = AT.schema_id
LEFT JOIN sys.assembly_modules AM ON AM.assembly_id = A.assembly_id
LEFT JOIN sys.objects A3 ON A3.object_id = AM.object_id
LEFT JOIN sys.schemas S3 ON S3.schema_id = A3.schema_id
ORDER BY A.name

View File

@@ -0,0 +1,4 @@
select '[' + A.Name + ']' AS Name, AF.content AS FileContent, AF.File_Id AS FileId, AF.Name AS FileName
FROM sys.assemblies A
INNER JOIN sys.assembly_files AF ON AF.assembly_id = A.assembly_id
ORDER BY A.Name

View File

@@ -0,0 +1,3 @@
SELECT OBJECT_DEFINITION(T.object_id) AS Text,T.name,is_disabled,is_not_for_replication,is_instead_of_trigger
FROM sys.triggers T
WHERE T.parent_id = 0 AND T.parent_class = 0

View File

@@ -0,0 +1,10 @@
select file_id,
type,
name,
physical_name,
size,
max_size,
growth,
is_sparse,
is_percent_growth
from sys.database_files WHERE data_space_id = {ID}

View File

@@ -0,0 +1,5 @@
SELECT obj.object_id, Name, SCHEMA_NAME(obj.schema_id) AS Owner, ISNULL(smobj.definition, ssmobj.definition) AS [Definition] from sys.objects obj
LEFT OUTER JOIN sys.sql_modules AS smobj ON smobj.object_id = obj.object_id
LEFT OUTER JOIN sys.system_sql_modules AS ssmobj ON ssmobj.object_id = obj.object_id
where obj.type='D'
return sql;

View File

@@ -0,0 +1,9 @@
SELECT DISTINCT T2.Name as ParentName, S1.name AS OwnerType, T.name AS TypeName, O.type, A.name AS AssemblyName, EP.*,S.name as Owner, O.name AS ObjectName, I1.name AS IndexName FROM sys.extended_properties EP
LEFT JOIN sys.objects O ON O.object_id = EP.major_id
LEFT JOIN sys.schemas S ON S.schema_id = O.schema_id
LEFT JOIN sys.assemblies A ON A.assembly_id = EP.major_id
LEFT JOIN sys.types T ON T.user_type_id = EP.major_id
LEFT JOIN sys.schemas S1 ON S1.schema_id = T.schema_id
LEFT JOIN sys.indexes I1 ON I1.index_id = EP.minor_id AND I1.object_id = O.object_ID AND class = 7
LEFT JOIN sys.tables T2 ON T2.object_id = O.parent_object_id AND class = 1
ORDER BY major_id

View File

@@ -0,0 +1,7 @@
SELECT
name,
data_space_id AS [ID],
is_default,
is_read_only,
type
FROM sys.filegroups ORDER BY name

View File

@@ -0,0 +1,9 @@
SELECT FK.object_id, C.user_type_id ,FK.parent_object_id,S.Name AS Owner, S2.Name AS ReferenceOwner, C2.Name AS ColumnName, C2.column_id AS ColumnId, C.name AS ColumnRelationalName, C.column_id AS ColumnRelationalId, T.object_id AS TableRelationalId, FK.Parent_object_id AS TableId, T.Name AS TableRelationalName, FK.Name, FK.is_disabled, FK.is_not_for_replication, FK.is_not_trusted, FK.delete_referential_action, FK.update_referential_action
FROM sys.foreign_keys FK
INNER JOIN sys.tables T ON T.object_id = FK.referenced_object_id
INNER JOIN sys.schemas S2 ON S2.schema_id = T.schema_id
INNER JOIN sys.foreign_key_columns FKC ON FKC.constraint_object_id = FK.object_id
INNER JOIN sys.columns C ON C.object_id = FKC.referenced_object_id AND C.column_id = referenced_column_id
INNER JOIN sys.columns C2 ON C2.object_id = FKC.parent_object_id AND C2.column_id = parent_column_id
INNER JOIN sys.schemas S ON S.schema_id = FK.schema_id
ORDER BY FK.parent_object_id, FK.Name, ColumnId

View File

@@ -0,0 +1,5 @@
SELECT S.Name as Owner,F.name AS FileGroupName, fulltext_catalog_id, FC.Name, path, FC.is_default, is_accent_sensitivity_on
FROM
sys.fulltext_catalogs FC
LEFT JOIN sys.filegroups F ON F.data_space_id = FC.data_space_id
INNER JOIN sys.schemas S ON S.schema_id = FC.principal_id

View File

@@ -0,0 +1,4 @@
select AP.is_output, AP.scale, AP.precision, '[' + SCHEMA_NAME(O.schema_id) + '].['+ O.name + ']' AS ObjectName, AP.name, TT.name AS TypeName, AP.max_length from sys.all_parameters AP
INNER JOIN sys.types TT ON TT.user_type_id = AP.user_type_id
INNER JOIN sys.objects O ON O.object_id = AP.object_id
WHERE type in ('PC', 'FS', 'FT') AND AP.name <> '' ORDER BY O.object_id, AP.parameter_id

View File

@@ -0,0 +1,6 @@
select PRV.value, T.name AS TypeName, PP.max_length, PP.precision, PP.scale, PF.Name, PF.function_id, fanout, boundary_value_on_right AS IsRight
from sys.partition_functions PF
INNER JOIN sys.partition_parameters PP ON PP.function_id = PF.function_id
INNER JOIN sys.types T ON T.system_type_id = PP.system_type_id
INNER JOIN sys.partition_range_values PRV ON PRV.parameter_id = PP.parameter_id and PP.function_id = PRV.function_id
ORDER BY PP.function_id, PRV.parameter_id, boundary_id

View File

@@ -0,0 +1,6 @@
select P.data_space_id AS ID, DS.Name AS FileGroupName,P.Name, F.name AS FunctionName
from sys.partition_schemes P
INNER JOIN sys.partition_functions F ON F.function_id = P.function_id
INNER JOIN sys.destination_data_spaces DF ON DF.partition_scheme_id = P.data_space_id
INNER JOIN sys.data_spaces DS ON DS.data_space_id = DF.data_space_id
ORDER BY P.data_space_id, DF.destination_id

View File

@@ -0,0 +1,5 @@
SELECT ISNULL(CONVERT(varchar,AM.execute_as_principal_id),'CALLER') as ExecuteAs, P.type, AF.name AS assembly_name, AM.assembly_class, AM.assembly_id, AM.assembly_method, P.object_id, S.name as owner, P.name as name
FROM sys.procedures P
INNER JOIN sys.schemas S ON S.schema_id = P.schema_id
,(SELECT null as execute_as_principal_id, null as assembly_class, null as assembly_id, null as assembly_method) AS AM,
(SELECT null AS name) AS AF

View File

@@ -0,0 +1,5 @@
SELECT ISNULL(CONVERT(varchar,AM.execute_as_principal_id),'CALLER') as ExecuteAs, P.type, AF.name AS assembly_name, AM.assembly_class, AM.assembly_id, AM.assembly_method, P.object_id, S.name as owner, P.name as name
FROM sys.procedures P
INNER JOIN sys.schemas S ON S.schema_id = P.schema_id
LEFT JOIN sys.assembly_modules AM ON AM.object_id = P.object_id
LEFT JOIN sys.assemblies AF ON AF.assembly_id = AM.assembly_id

View File

@@ -0,0 +1,5 @@
select obj.object_id, Name, SCHEMA_NAME(obj.schema_id) AS Owner, ISNULL(smobj.definition, ssmobj.definition) AS [Definition] from sys.objects obj
LEFT OUTER JOIN sys.sql_modules AS smobj ON smobj.object_id = obj.object_id
LEFT OUTER JOIN sys.system_sql_modules AS ssmobj ON ssmobj.object_id = obj.object_id
where obj.type='R'

View File

@@ -0,0 +1,26 @@
SELECT TT.type, 0 AS IsComputed, T.user_type_id,'[' + S.Name + '].[' + TT.Name + ']' AS TableName, '[' + S.Name + '].[' + TT.Name + '].[' + C.Name + ']' AS ColumnName,'[' + S2.Name + '].[' + T.Name + ']' AS TypeName FROM sys.types T
INNER JOIN sys.columns C ON C.user_type_id = T.user_type_id
INNER JOIN sys.objects TT ON TT.object_id = C.object_id
INNER JOIN sys.schemas S ON S.schema_id = TT.schema_id
INNER JOIN sys.schemas S2 ON S2.schema_id = T.schema_id
WHERE is_user_defined = 1
UNION
SELECT TT.type, 1 AS IsComputed, T.user_type_id, '[' + S.Name + '].[' + TT.Name + ']' AS TableName, '[' + S.Name + '].[' + TT.Name + '].[' + C2.Name + ']' AS ColumnName, '[' + S2.Name + '].[' + T.Name + ']' AS TypeName FROM sys.types T
INNER JOIN sys.columns C ON C.user_type_id = T.user_type_id
INNER JOIN sys.sql_dependencies DEP ON DEP.referenced_major_id = C.object_id AND DEP.referenced_minor_id = C.column_Id AND DEP.object_id = C.object_id
INNER JOIN sys.columns C2 ON C2.column_id = DEP.column_id AND C2.object_id = DEP.object_id
INNER JOIN sys.objects TT ON TT.object_id = C2.object_id
INNER JOIN sys.schemas S ON S.schema_id = TT.schema_id
INNER JOIN sys.schemas S2 ON S2.schema_id = T.schema_id
WHERE is_user_defined = 1
UNION
SELECT TT.type, 0 AS IsComputed, T.user_type_id,'[' + S.Name + '].[' + TT.Name + ']' AS TableName, '[' + S.Name + '].[' + TT.Name + '].[' + C.Name + ']' AS ColumnName,'[' + S2.Name + '].[' + T.Name + ']' AS TypeName from sys.sql_dependencies DEP
INNER JOIN sys.objects TT ON DEP.object_id = TT.object_id
INNER JOIN sys.schemas S ON S.schema_id = TT.schema_id
INNER JOIN sys.parameters C ON C.object_id = TT.object_id AND C.parameter_id = DEP.referenced_minor_id
INNER JOIN sys.types T ON C.user_type_id = T.user_type_id
INNER JOIN sys.schemas S2 ON S2.schema_id = T.schema_id
WHERE is_user_defined = 1
ORDER BY IsComputed DESC,T.user_type_id

View File

@@ -0,0 +1,8 @@
SELECT
xsc.name,
xsc.xml_collection_id AS [ID],
sch.name AS Owner,
XML_SCHEMA_NAMESPACE(sch.Name, xsc.name) AS Text
FROM sys.xml_schema_collections AS xsc
INNER JOIN sys.schemas AS sch ON xsc.schema_id = sch.schema_id
WHERE xsc.schema_id <> 4

View File

@@ -0,0 +1,3 @@
SELECT S1.name,S1.schema_id, S2.name AS Owner FROM sys.schemas S1
INNER JOIN sys.database_principals S2 ON S2.principal_id = S1.principal_id

View File

@@ -0,0 +1 @@
SELECT SCHEMA_NAME(schema_id) AS Owner,name,object_id,base_object_name from sys.synonyms ORDER BY Name

View File

@@ -0,0 +1,3 @@
SELECT O.name, O.type, M.object_id, OBJECT_DEFINITION(M.object_id) AS Text FROM sys.sql_modules M
INNER JOIN sys.objects O ON O.object_id = M.object_id
WHERE {FILTER}

View File

@@ -0,0 +1,11 @@
SELECT T.object_id, O.type AS ObjectType, ISNULL(CONVERT(varchar,AM.execute_as_principal_id),'CALLER') as ExecuteAs, AF.name AS assembly_name, AM.assembly_class, AM.assembly_id, AM.assembly_method, T.type, CAST(ISNULL(tei.object_id,0) AS bit) AS IsInsert, CAST(ISNULL(teu.object_id,0) AS bit) AS IsUpdate, CAST(ISNULL(ted.object_id,0) AS bit) AS IsDelete, T.parent_id, S.name AS Owner,T.name,is_disabled,is_not_for_replication,is_instead_of_trigger
FROM sys.triggers T
INNER JOIN sys.objects O ON O.object_id = T.parent_id
INNER JOIN sys.schemas S ON S.schema_id = O.schema_id
LEFT JOIN sys.trigger_events AS tei ON tei.object_id = T.object_id and tei.type=1
LEFT JOIN sys.trigger_events AS teu ON teu.object_id = T.object_id and teu.type=2
LEFT JOIN sys.trigger_events AS ted ON ted.object_id = T.object_id and ted.type=3
,(SELECT null as execute_as_principal_id, null as assembly_class, null as assembly_id, null as assembly_method) AS AM,
(SELECT null AS name) AS AF
ORDER BY T.parent_id

View File

@@ -0,0 +1,11 @@
SELECT T.object_id, O.type AS ObjectType, ISNULL(CONVERT(varchar,AM.execute_as_principal_id),'CALLER') as ExecuteAs, AF.name AS assembly_name, AM.assembly_class, AM.assembly_id, AM.assembly_method, T.type, CAST(ISNULL(tei.object_id,0) AS bit) AS IsInsert, CAST(ISNULL(teu.object_id,0) AS bit) AS IsUpdate, CAST(ISNULL(ted.object_id,0) AS bit) AS IsDelete, T.parent_id, S.name AS Owner,T.name,is_disabled,is_not_for_replication,is_instead_of_trigger
FROM sys.triggers T
INNER JOIN sys.objects O ON O.object_id = T.parent_id
INNER JOIN sys.schemas S ON S.schema_id = O.schema_id
LEFT JOIN sys.trigger_events AS tei ON tei.object_id = T.object_id and tei.type=1
LEFT JOIN sys.trigger_events AS teu ON teu.object_id = T.object_id and teu.type=2
LEFT JOIN sys.trigger_events AS ted ON ted.object_id = T.object_id and ted.type=3
LEFT JOIN sys.assembly_modules AM ON AM.object_id = T.object_id
LEFT JOIN sys.assemblies AF ON AF.assembly_id = AM.assembly_id
ORDER BY T.parent_id

View File

@@ -0,0 +1,6 @@
SELECT O.Type, '[' + S1.Name + '].[' + XS.Name +']' AS XMLName, '[' + S.Name + '].[' + O.Name +']' AS TableName, '[' + S.Name + '].[' + O.Name + '].[' + C.Name + ']' AS ColumnName from sys.columns C
INNER JOIN sys.xml_schema_collections XS ON XS.xml_collection_id = C.xml_collection_id
INNER JOIN sys.objects O ON O.object_id = C.object_id
INNER JOIN sys.schemas S ON S.schema_id = O.schema_id
INNER JOIN sys.schemas S1 ON S1.schema_id = XS.schema_id
ORDER BY XS.xml_collection_id

View File

@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OpenDBDiff.Schema.SQLServer.Generates.SQLQueries
{
public static class SQLQueryFactory
{
private static Dictionary<string, string> queries = new Dictionary<string, string>();
public static string Get(string queryFullName, Model.DatabaseInfo.SQLServerVersion version)
{
return Get($"{queryFullName}.{version}");
}
public static string Get(string queryClass)
{
var ns = typeof(SQLQueryFactory).Namespace;
var qualifiedQueryClass = string.Concat(ns, '.', queryClass);
if (queries.ContainsKey(qualifiedQueryClass))
{
return queries[qualifiedQueryClass];
}
else
{
string query = FetchQuery(qualifiedQueryClass);
queries.Add(qualifiedQueryClass, query);
return query;
}
}
private static string FetchQuery(string queryFullName)
{
string resourceName = queryFullName + ".sql";
using (System.IO.Stream stream = typeof(SQLQueryFactory).Assembly.GetManifestResourceStream(resourceName))
{
if (stream == null) throw new InvalidOperationException("The Query " + queryFullName + " cannot be found");
using (System.IO.StreamReader reader = new System.IO.StreamReader(stream))
{
return reader.ReadToEnd();
}
}
}
}
}