diff --git a/doc/snippets/Microsoft.Data.SqlClient/SqlClientMetaDataCollectionNames.xml b/doc/snippets/Microsoft.Data.SqlClient/SqlClientMetaDataCollectionNames.xml
index 8aa207b418..e013016ee9 100644
--- a/doc/snippets/Microsoft.Data.SqlClient/SqlClientMetaDataCollectionNames.xml
+++ b/doc/snippets/Microsoft.Data.SqlClient/SqlClientMetaDataCollectionNames.xml
@@ -24,14 +24,10 @@
A constant for use with the **GetSchema** method that represents the **Indexes** collection.
To be added.
-
- A constant for use with the **GetSchema** method that represents the **Parameters** collection.
+
+ A constant for use with the **GetSchema** method that represents the **ProcedureParameters** collection.
To be added.
-
-
- A constant for use with the **GetSchema** method that represents the **ProcedureColumns** collection.
- To be added.
-
+
A constant for use with the **GetSchema** method that represents the **Procedures** collection.
To be added.
@@ -56,5 +52,13 @@
A constant for use with the **GetSchema** method that represents the **Views** collection.
To be added.
+
+ A constant for use with the **GetSchema** method that represents the **AllColumns** collection.
+ To be added.
+
+
+ A constant for use with the **GetSchema** method that represents the **ColumnSetColumns** collection.
+ To be added.
+
diff --git a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs
index 52e6e35dd3..461bee2eaf 100644
--- a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs
+++ b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs
@@ -328,10 +328,8 @@ public static partial class SqlClientMetaDataCollectionNames
public static readonly string IndexColumns;
///
public static readonly string Indexes;
- ///
- public static readonly string Parameters;
- ///
- public static readonly string ProcedureColumns;
+ ///
+ public static readonly string ProcedureParameters;
///
public static readonly string Procedures;
///
@@ -344,6 +342,10 @@ public static partial class SqlClientMetaDataCollectionNames
public static readonly string ViewColumns;
///
public static readonly string Views;
+ ///
+ public static readonly string AllColumns;
+ ///
+ public static readonly string ColumnSetColumns;
}
///
[System.ComponentModel.DefaultEventAttribute("RecordsAffected")]
diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlClientMetaDataCollectionNames.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlClientMetaDataCollectionNames.cs
index 7caf4421fa..1c805b53df 100644
--- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlClientMetaDataCollectionNames.cs
+++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlClientMetaDataCollectionNames.cs
@@ -23,11 +23,8 @@ public static class SqlClientMetaDataCollectionNames
///
public static readonly string Indexes = "Indexes";
- ///
- public static readonly string Parameters = "Parameters";
-
- ///
- public static readonly string ProcedureColumns = "ProcedureColumns";
+ ///
+ public static readonly string ProcedureParameters = "ProcedureParameters";
///
public static readonly string Procedures = "Procedures";
@@ -46,5 +43,11 @@ public static class SqlClientMetaDataCollectionNames
///
public static readonly string Views = "Views";
+
+ ///
+ public static readonly string AllColumns = "AllColumns"; // supported starting from SQL Server 2008
+
+ ///
+ public static readonly string ColumnSetColumns = "ColumnSetColumns"; // supported starting from SQL Server 2008
}
}
diff --git a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs
index 345ebcea9e..197e886da2 100644
--- a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs
+++ b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs
@@ -365,10 +365,8 @@ public static partial class SqlClientMetaDataCollectionNames
public static readonly string IndexColumns;
///
public static readonly string Indexes;
- ///
- public static readonly string Parameters;
- ///
- public static readonly string ProcedureColumns;
+ ///
+ public static readonly string ProcedureParameters;
///
public static readonly string Procedures;
///
@@ -381,6 +379,10 @@ public static partial class SqlClientMetaDataCollectionNames
public static readonly string ViewColumns;
///
public static readonly string Views;
+ ///
+ public static readonly string AllColumns;
+ ///
+ public static readonly string ColumnSetColumns;
}
///
public sealed partial class SqlClientPermission : System.Data.Common.DBDataPermission
diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlClientMetaDataCollectionNames.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlClientMetaDataCollectionNames.cs
index eb2db23548..5400ac2fb0 100644
--- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlClientMetaDataCollectionNames.cs
+++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlClientMetaDataCollectionNames.cs
@@ -22,11 +22,8 @@ public static class SqlClientMetaDataCollectionNames
///
public static readonly string Indexes = "Indexes";
- ///
- public static readonly string Parameters = "Parameters";
-
- ///
- public static readonly string ProcedureColumns = "ProcedureColumns";
+ ///
+ public static readonly string ProcedureParameters = "ProcedureParameters";
///
public static readonly string Procedures = "Procedures";
@@ -46,5 +43,11 @@ public static class SqlClientMetaDataCollectionNames
///
public static readonly string Views = "Views";
+ ///
+ public static readonly string AllColumns = "AllColumns"; // supported starting from SQL Server 2008
+
+ ///
+ public static readonly string ColumnSetColumns = "ColumnSetColumns"; // supported starting from SQL Server 2008
+
}
}
diff --git a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlClientMetaDataCollectionNamesTest.cs b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlClientMetaDataCollectionNamesTest.cs
index 69ed6d6304..789949ee68 100644
--- a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlClientMetaDataCollectionNamesTest.cs
+++ b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlClientMetaDataCollectionNamesTest.cs
@@ -16,14 +16,15 @@ public void ValuesTest()
Assert.Equal("ForeignKeys", SqlClientMetaDataCollectionNames.ForeignKeys);
Assert.Equal("IndexColumns", SqlClientMetaDataCollectionNames.IndexColumns);
Assert.Equal("Indexes", SqlClientMetaDataCollectionNames.Indexes);
- Assert.Equal("Parameters", SqlClientMetaDataCollectionNames.Parameters);
- Assert.Equal("ProcedureColumns", SqlClientMetaDataCollectionNames.ProcedureColumns);
+ Assert.Equal("ProcedureParameters", SqlClientMetaDataCollectionNames.ProcedureParameters);
Assert.Equal("Procedures", SqlClientMetaDataCollectionNames.Procedures);
Assert.Equal("Tables", SqlClientMetaDataCollectionNames.Tables);
Assert.Equal("UserDefinedTypes", SqlClientMetaDataCollectionNames.UserDefinedTypes);
Assert.Equal("Users", SqlClientMetaDataCollectionNames.Users);
Assert.Equal("ViewColumns", SqlClientMetaDataCollectionNames.ViewColumns);
Assert.Equal("Views", SqlClientMetaDataCollectionNames.Views);
+ Assert.Equal("AllColumns", SqlClientMetaDataCollectionNames.AllColumns);
+ Assert.Equal("ColumnSetColumns", SqlClientMetaDataCollectionNames.ColumnSetColumns);
}
}
}
diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataBaseSchemaTest/ConnectionSchemaTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataBaseSchemaTest/ConnectionSchemaTest.cs
index 6e7e1623a2..7b2742e8d6 100644
--- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataBaseSchemaTest/ConnectionSchemaTest.cs
+++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataBaseSchemaTest/ConnectionSchemaTest.cs
@@ -12,17 +12,89 @@ public static class ConnectionSchemaTest
{
[ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
- public static void GetAllTablesFromSchema()
+ public static void GetTablesFromSchema()
{
VerifySchemaTable(SqlClientMetaDataCollectionNames.Tables, new string[] { "TABLE_CATALOG", "TABLE_SCHEMA", "TABLE_NAME", "TABLE_TYPE" });
}
[ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
- public static void GetAllProceduresFromSchema()
+ public static void GetProceduresFromSchema()
{
VerifySchemaTable(SqlClientMetaDataCollectionNames.Procedures, new string[] { "ROUTINE_SCHEMA", "ROUTINE_NAME", "ROUTINE_TYPE" });
}
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetProcedureParametersFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.ProcedureParameters, new string[] { "PARAMETER_MODE", "PARAMETER_NAME" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetDatabasesFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.Databases, new string[] { "database_name", "dbid", "create_date" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetForeignKeysFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.ForeignKeys, new string[] { "CONSTRAINT_TYPE", "IS_DEFERRABLE", "INITIALLY_DEFERRED" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetIndexesFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.Indexes, new string[] { "index_name", "constraint_name" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetIndexColumnsFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.IndexColumns, new string[] { "index_name", "KeyType", "column_name" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetColumnsFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.Columns, new string[] { "IS_NULLABLE", "COLUMN_DEFAULT" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetAllColumnsFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.AllColumns, new string[] { "IS_NULLABLE", "COLUMN_DEFAULT", "IS_FILESTREAM", "IS_SPARSE", "IS_COLUMN_SET" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetColumnSetColumnsFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.ColumnSetColumns, new string[] { "IS_NULLABLE", "COLUMN_DEFAULT", "IS_FILESTREAM", "IS_SPARSE", "IS_COLUMN_SET" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetUsersFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.Users, new string[] { "uid", "user_name" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetViewsFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.Views, new string[] { "TABLE_NAME", "CHECK_OPTION", "IS_UPDATABLE" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetViewColumnsFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.ViewColumns, new string[] { "VIEW_CATALOG", "VIEW_SCHEMA", "VIEW_NAME" });
+ }
+
+ [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))]
+ public static void GetUserDefinedTypesFromSchema()
+ {
+ VerifySchemaTable(SqlClientMetaDataCollectionNames.UserDefinedTypes, new string[] { "assembly_name", "version_revision", "culture_info" });
+ }
+
private static void VerifySchemaTable(string schemaItemName, string[] testColumnNames)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(DataTestUtility.TCPConnectionString)
@@ -36,9 +108,6 @@ private static void VerifySchemaTable(string schemaItemName, string[] testColumn
connection.Open();
DataTable table = connection.GetSchema(schemaItemName);
- // Display the contents of the table.
- Assert.InRange(table.Rows.Count, 1, int.MaxValue);
-
// Get all table columns
HashSet columnNames = new HashSet();