You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.7 KiB
73 lines
3.7 KiB
using OpenDBDiff.Schema.SQLServer.Generates.Model;
|
|
using System.Text;
|
|
|
|
namespace OpenDBDiff.Schema.SQLServer.Generates.Generates.SQLCommands
|
|
{
|
|
internal static class FullTextIndexSQLCommand
|
|
{
|
|
public static string Get(DatabaseInfo.SQLServerVersion version)
|
|
{
|
|
switch (version)
|
|
{
|
|
case DatabaseInfo.SQLServerVersion.SQLServer2005:
|
|
return Get2005();
|
|
|
|
default:
|
|
return Get2008();
|
|
}
|
|
}
|
|
|
|
private static string Get2005()
|
|
{
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("SELECT ");
|
|
sql.Append("FI.object_id, ");
|
|
sql.Append("T.Name AS TableName, ");
|
|
sql.Append("FC.name AS FullTextCatalogName, ");
|
|
sql.Append("I.name AS IndexName, ");
|
|
sql.Append("FI.is_enabled, ");
|
|
sql.Append("'['+ S.name + '].['+ T.name + '].[' + FC.name + ']' AS Name, ");
|
|
sql.Append("C.name as ColumnName, ");
|
|
sql.Append("FI.change_tracking_state_desc AS ChangeTracking, ");
|
|
sql.Append("FL.name AS LanguageName ");
|
|
sql.Append("FROM sys.fulltext_indexes FI ");
|
|
sql.Append("INNER JOIN sys.fulltext_catalogs FC ON FC.fulltext_catalog_id = FI.fulltext_catalog_id ");
|
|
sql.Append("INNER JOIN sys.indexes I ON I.index_id = FI.unique_index_id and I.object_id = FI.object_id ");
|
|
sql.Append("INNER JOIN sys.tables T ON T.object_id = FI.object_id ");
|
|
sql.Append("INNER JOIN sys.schemas S ON S.schema_id = T.schema_id ");
|
|
sql.Append("INNER JOIN sys.fulltext_index_columns FIC ON FIC.object_id = FI.object_id ");
|
|
sql.Append("INNER JOIN sys.columns C ON C.object_id = FIC.object_id AND C.column_id = FIC.column_id ");
|
|
sql.Append("INNER JOIN sys.fulltext_languages FL ON FL.lcid = FIC.language_id ");
|
|
sql.Append("ORDER BY OBJECT_NAME(FI.object_id), I.name ");
|
|
return sql.ToString();
|
|
}
|
|
|
|
private static string Get2008()
|
|
{
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("SELECT ");
|
|
sql.Append("FI.object_id, ");
|
|
sql.Append("T.Name AS TableName, ");
|
|
sql.Append("FC.name AS FullTextCatalogName, ");
|
|
sql.Append("I.name AS IndexName, ");
|
|
sql.Append("FI.is_enabled, ");
|
|
sql.Append("'['+ S.name + '].['+ T.name + '].[' + FC.name + ']' AS Name, ");
|
|
sql.Append("C.name as ColumnName, ");
|
|
sql.Append("FL.name AS LanguageName,");
|
|
sql.Append("DS.name AS FileGroupName, ");
|
|
sql.Append("FI.change_tracking_state_desc AS ChangeTracking ");
|
|
sql.Append("FROM sys.fulltext_indexes FI ");
|
|
sql.Append("INNER JOIN sys.fulltext_catalogs FC ON FC.fulltext_catalog_id = FI.fulltext_catalog_id ");
|
|
sql.Append("INNER JOIN sys.indexes I ON I.index_id = FI.unique_index_id and I.object_id = FI.object_id ");
|
|
sql.Append("INNER JOIN sys.tables T ON T.object_id = FI.object_id ");
|
|
sql.Append("INNER JOIN sys.schemas S ON S.schema_id = T.schema_id ");
|
|
sql.Append("INNER JOIN sys.fulltext_index_columns FIC ON FIC.object_id = FI.object_id ");
|
|
sql.Append("INNER JOIN sys.columns C ON C.object_id = FIC.object_id AND C.column_id = FIC.column_id ");
|
|
sql.Append("INNER JOIN sys.data_spaces DS ON DS.data_space_id = FI.data_space_id ");
|
|
sql.Append("INNER JOIN sys.fulltext_languages FL ON FL.lcid = FIC.language_id ");
|
|
sql.Append("ORDER BY OBJECT_NAME(FI.object_id), I.name ");
|
|
return sql.ToString();
|
|
}
|
|
}
|
|
}
|