Authentication 如何在RegisteredServer中指定身份验证

Authentication 如何在RegisteredServer中指定身份验证,authentication,azure-sql-database,Authentication,Azure Sql Database,基于我关于在Microsoft.SqlServer.Management.RegisteredServer中创建RegisteredServer的问题, ,我正在从Azure SQL Server添加数据库。我可以添加数据库,但身份验证基于Windows身份验证 绝对,我无法连接到Azure: 因此,我正在寻找在C#code中指定身份验证的解决方案。这很奇怪,因为我用用户名和密码传递连接字符串: var registeredServer = new RegisteredSer

基于我关于在Microsoft.SqlServer.Management.RegisteredServer中创建RegisteredServer的问题, ,我正在从Azure SQL Server添加数据库。我可以添加数据库,但身份验证基于
Windows身份验证

绝对,我无法连接到Azure:

因此,我正在寻找在
C#code
中指定身份验证的解决方案。这很奇怪,因为我用用户名和密码传递连接字符串:

        var registeredServer = new RegisteredServer(serverName)
        {

            ConnectionString = "Server=tcp:server.database.windows.net,1433;Initial Catalog=...;Persist Security Info=true;User ID=...;Password=....;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;"
        }
首先,Azure SQL。据我所知,windows身份验证适用于本地SQL Server

而且,你需要


之后,您可以使用AAD凭据连接到Azure SQL。如果您的本地帐户通过AD Connect同步到Azure AD。然后,您也应该能够使用AD凭据连接到Azure SQL。

最后,我解决了这个问题,我们需要安装
System.Security.Cryptography.ProtectedData包以设置连接字符串:

 Install-Package System.Security.Cryptography.ProtectedData -Version 4.6.0
然后,我们需要指定CredentialPersistenceType和AuthenticationType,如下所示:

        var registeredServer = new RegisteredServer(databaseEngineServerGroup, serverName)
        {
            ConnectionString = localConnectionString,
            Description = $"This is a sample connection to {serverName}",
            CredentialPersistenceType = CredentialPersistenceType.PersistLoginNameAndPassword,
            AuthenticationType = 1,
        };