Для SQL Server, я могу получить описание таблиц из метаданных с помощью:Как я могу получить описание таблиц с Azure SQL Database
SELECT
OBJECT_SCHEMA_NAME(t.object_id) as SchemaName,
t.name AS TableName,
ex.value AS Description
FROM
sys.tables AS t,
sys.extended_properties AS ex
WHERE
ex.major_id = t.object_id
AND ex.minor_id = 0
AND ex.name = 'MS_Description'
AND ex.value IS NOT NULL
Но что бросает исключение поражая базы данных Azure SQL. Как я могу извлечь его из базы данных Azure SQL?
Исключение я получаю:
System.Data.SqlClient.SqlException произошло HRESULT имя = -2146232060
Message = Invalid объект 'sys.extended_properties'. Источник = .Net SqlClient Data Provider ErrorCode = -2146232060 Класс = 16
LineNumber = 1 Number = 208 Процедура = ""
Server = TCP: odjidszumt.database.windows.net State = 1 StackTrace: в System.Data .SqlClient.SqlConnection.OnError (SqlException исключение, булева breakConnection, Действие1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction) на System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj, булева callerHasConnectionLock, булева asyncClose) на System.Data.SqlClient.TdsParser. TryRun (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject состояние Obj, булева & dataReady) на System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() в System.Data.SqlClient.SqlDataReader.get_MetaData() в System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader DS, RunBehavior runBehavior , Строка resetOptionsString) на System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева returnStream, булева асинхронной, Int32 тайм-аут, задача & задачи, булева asyncWrite, SqlDataReader DS) на System.Data. SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Строка метод, TaskCompletionSource`1 завершение, Int32 тайм-аут, Задача & задача, Логическое asyncWrite) на System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева returnStream, String метод) в системе. Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior поведение, метод String) на System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior поведение) на System.Data.Common.DbCommand.ExecuteReader() в net.windward. utils.ado.SqlServer.WrSqlServerDatabase.TableDesc (DbConnection conn, String select) в C: \ всо \ Jenova \ команда \ рефакторинга \ Engine \ DotNetEngine \ Kailua \ сетчатой \ наветренной \ Utils \ \ SQLServer лишних слов \ WrSqlServerDatabase.cs: линия 465 InnerException:
Я понятия не имею, что версия База данных Sql - мы создали базу данных Sql на Azure и не делали ничего особенного, поэтому я предполагаю, что последнее.
[Вредные привычки пинать: использование старого стиля JOIN и] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old -style-joins.aspx) - стиль старого стиля * разделенный запятыми список таблиц * был заменен на * правильный * ANSI 'JOIN' синтаксис в ANSI - ** 92 ** SQL Standard (** более 20 лет ** назад), и его использование не рекомендуется –
Ваш запрос работал на меня в Azure SQL. Какую версию сервера Azure SQL вы используете? Имеет ли пользователь SQL доступ к запросу базы данных Master? – Francois
@Francois - извините, не знаю, какая версия БД. Мы просто создали экземпляр Azure. Все остальные запросы метаданных работают, поэтому у нас есть доступ к основной базе данных. Это всего лишь запросы описания таблиц и столбцов, которые используют sys.extended_properties в select, которые терпят неудачу. –