使用Active Directory密码从C#连接到Sql Azure Db时出现问题

时间:2019-11-15 16:27:04

标签: c# sql azure crm des

我正在建立一个Azure数据库,CRM 360数据导出服务(DES)需要连接到该数据库。我可以使用SSMS手动执行此操作,并使用我的Azure帐户登录。

enter image description here

然后将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'。'”。

我敢肯定我犯的错误是很基本的,但是我似乎无法弄清它的深处。因此,非常感谢您收到任何指针。

3 个答案:

答案 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不支持这种类型的登录,因此最终不得不使用该应用程序的框架版本。相同的代码可以完美地工作。谢谢大家的帮助。非常感谢。