1

我已成功创建了主密钥、数据库范围凭据、外部数据源和外部表,以引用同一服务器上托管的另一个AZ SQL数据库,但无法查询外部表。

以下代码成功运行:

--创建主密钥通过密码创建主密钥加密=“MyPassword”;--创建数据库范围凭据创建数据库范围的凭据数据库_SCOPED_CREDENTIALIDENTITY=“我的用户名”,SECRET='MySecret';--创建外部数据源创建外部数据源DS_EXTERNAL_DB(类型=关系型数据库管理系统,LOCATION=“MyServerName.database.windows.net”,DATABASE_NAME='MyDBName',CREDENTIAL=DB_scoped_CREDENTIAL);--创建外部表创建外部表格agencies_ext(id int,[名称]varchar(150),coc varchar(50),[状态]tinyint,ref_county整数,客户tinyint,添加日期日期时间,last_updated日期时间,ref_user_updated整数,受害者服务提供者tinyint,ref_geolocation int,参考地理位置int,删除的tinyint)(DATA_SOURCE=DS_External_DB,SCHEMA_NAME='dbo',OBJECT_NAME='代理');

但在运行简单查询时:

从agencies_ext中选择*;

我收到以下错误消息:

消息46832,级别16,状态3,第42行建立与远程数据源的连接时出错:[Microsoft][ODBC Driver 17 for SQL Server]SSL Provider:目标主体名称不正确。[Microsoft][ODBC Driver 17 for SQL Server]客户端无法建立连接

我已经三次检查了所有的字符串参数,以确保没有拼写错误,也不确定为什么我无法建立到数据源的远程连接并查询外部表。Azure SQL DB中是否有任何设置可以阻止这种情况发生?创建外部数据源和外部表是否存在根本性问题?我希望此查询能够成功运行,并显示DS引用的数据库中agents表中的所有行和列_外部_数据库数据源。同样,这两个数据库都托管在同一服务器上。

0

1答案1

重置为默认值

SSL提供程序:目标主体名称不正确。

表示您在连接字符串中使用的服务器名称与通用名称在SQL Server提供的SSL证书中。

这个问题的解决值得一提TrustServerCertificate=是;在连接字符串中Always学习因此它不会检查SQL server的名称是否与匹配通用名称在SQL Server提供的SSL证书中。

我用创建了DataSourceTrustServerCertificate=是;具有以下代码。

创建外部数据源DS_EXTERNAL_DB6(TYPE=RDBMS,LOCATION='YourServer.database.windows.net;TrustServerCertificate=是',DATABASE_NAME=“数据库1”,证书=DB_scoped_credential5);

执行:在此处输入图像描述在此处输入图像描述

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.