Initial commit
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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}
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -0,0 +1,7 @@
|
||||
SELECT
|
||||
name,
|
||||
data_space_id AS [ID],
|
||||
is_default,
|
||||
is_read_only,
|
||||
type
|
||||
FROM sys.filegroups ORDER BY name
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
SELECT SCHEMA_NAME(schema_id) AS Owner,name,object_id,base_object_name from sys.synonyms ORDER BY Name
|
||||
@@ -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}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user