gpt4 book ai didi

t-sql - 如何从 Azure SQL 数据库获取表描述

转载 作者:行者123 更新时间:2023-12-02 23:49:44 25 4
gpt4 key购买 nike

对于 SQL Server,我可以使用以下方法从元数据中获取表描述:

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 数据库中提取它?

我得到的异常(exception)是:

System.Data.SqlClient.SqlException occurred HResult=-2146232060
Message=Invalid object name 'sys.extended_properties'. Source=.Net SqlClient Data Provider ErrorCode=-2146232060 Class=16
LineNumber=1 Number=208 Procedure=""
Server=tcp:odjidszumt.database.windows.net State=1 StackTrace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection, Action
1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.ExecuteReader() at net.windward.utils.ado.SqlServer.WrSqlServerDatabase.TableDesc(DbConnection conn, String select) in c:\vso\Jenova\team\refactoring\Engine\DotNetEngine\Kailua\net\windward\utils\ado\SqlServer\WrSqlServerDatabase.cs:line 465 InnerException:

我不知道 Sql 数据库的版本 - 我们在 Azure 上创建了一个 Sql 数据库,并且没有做任何特殊的事情,所以我猜测是最新的。

最佳答案

官方消息,据this MSDN article Azure SQL 数据库不支持 sys.extended_properties View 。您提供的错误消息显示“无效的对象名称'sys.extend_properties'”,这证明它不受支持。 enter image description here

但是,奇怪的是,当我从 SSMS 和 SQL Server 对象资源管理器针对 Azure SQL 数据库运行查询时,它可以工作。然后,我返回到门户,注意到我创建了一个 V12 SQL Server,然后尝试创建一个 V2 SQL Server 并对其运行查询,得到相同的结果“无效的对象名称 'sys.extended_properties' ”,请参见下面的快照:
enter image description here

根据上述测试,我认为“sys.extended_properties”仅在 Azure SQL Server V12 数据库中受支持。看来MS官方文章可能没有更新到最新。我建议您检查您创建的 Azure SQL 数据库版本:
enter image description here

您可以在创建 SQL Server 时启用 V12,如下所示:
enter image description here

关于t-sql - 如何从 Azure SQL 数据库获取表描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37091973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com