我正在建立一个Azure数据库,CRM 360数据导出服务(DES)需要连接到该数据库。我可以使用SSMS手动执行此操作,并使用我的Azure帐户登录。
然后将DES服务帐户设置为外部提供商。
从外部提供商创建用户DynamicsDataExportService
很好,但是我希望自动化该过程,因此我需要使用C#登录到该服务并以这种方式连接并运行代码。
我正在使用以下代码在System.Data.SqlClient 4.7上运行核心2.2:
var cs = "data source=tcp:dvzxfsdg-sql.database.windows.net,1433;initial catalog=dfsdfs-sqldb; Authentication=Active Directory Integrated";
using (var connection = new SqlConnection(cs))
{
connection.Open();
令人讨厌的是它给出了错误
“ System.ArgumentException:'不支持的关键字:'authentication'。'”。
我敢肯定我犯的错误是很基本的,但是我似乎无法弄清它的深处。因此,非常感谢您收到任何指针。
答案 0 :(得分:0)
您可能想尝试使用SQLConnectionStringBuilder
来正确设置连接字符串的格式。这有助于避免使用纯文本连接字符串时可能遇到的输入错误和问题。之后,您实际上可以直接在构建器上设置AuthenticationMethod。
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder ()
{
DataSource = "ServerName",
InitialCatalog = "DatabaseName",
etc...
}
builder.Authentication = SqlAuthenticationMethod.ActiveDirectoryInteractive;
SqlConnection sqlConnection = new SqlConnection(builder.ConnectionString);
如果SQL数据库是Azure SQL数据库,则可以查看资源的概述页面并找到“连接字符串”刀片。这可能有助于解决与提供的连接字符串有关的问题。
查看this answer有关构建连接字符串的更多信息
答案 1 :(得分:0)
这里的问题是连接字符串中的Authentication=Active Directory Integrated
。如果要使用AD用户,则应该使用:
“数据源= tcp:dvzxfsdg-sql.database.windows.net,1433;初始目录= dfsdfs-sqldb; 集成安全性= true ”;
如果您要继续指定用户名和密码:
“数据源= tcp:dvzxfsdg-sql.database.windows.net,1433;初始目录= dfsdfs-sqldb; 用户ID = myUsername;密码= myPassword; ”;
答案 2 :(得分:0)
我终于意识到dotnet core 2.0不支持这种类型的登录,因此最终不得不使用该应用程序的框架版本。相同的代码可以完美地工作。谢谢大家的帮助。非常感谢。