Dela via


SqlConnectionStringBuilder Class

Definition

Provides a simple way to create and manage the contents of connection strings used by the SqlConnection class.

public ref class SqlConnectionStringBuilder sealed : System::Data::Common::DbConnectionStringBuilder
[System.ComponentModel.TypeConverter(typeof(Microsoft.Data.SqlClient.SqlConnectionStringBuilder+SqlConnectionStringBuilderConverter))]
public sealed class SqlConnectionStringBuilder : System.Data.Common.DbConnectionStringBuilder
public sealed class SqlConnectionStringBuilder : System.Data.Common.DbConnectionStringBuilder
[<System.ComponentModel.TypeConverter(typeof(Microsoft.Data.SqlClient.SqlConnectionStringBuilder+SqlConnectionStringBuilderConverter))>]
type SqlConnectionStringBuilder = class
    inherit DbConnectionStringBuilder
type SqlConnectionStringBuilder = class
    inherit DbConnectionStringBuilder
Public NotInheritable Class SqlConnectionStringBuilder
Inherits DbConnectionStringBuilder
Inheritance
SqlConnectionStringBuilder
Attributes

Examples

The following console application builds connection strings for a SQL Server database. The code uses a SqlConnectionStringBuilder class to create the connection string, and then passes the ConnectionString property of the SqlConnectionStringBuilder instance to the constructor of the connection class. The example also parses an existing connection string and demonstrates various ways of manipulating the connection string's contents.

Note

This example includes a password to demonstrate how SqlConnectionStringBuilder works with connection strings. In your applications, we recommend that you use Windows Authentication. If you must use a password, do not include a hard-coded password in your application.

using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        // Create a new SqlConnectionStringBuilder and
        // initialize it with a few name/value pairs.
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(GetConnectionString());

        // The input connection string used the 
        // Server key, but the new connection string uses
        // the well-known Data Source key instead.
        Console.WriteLine(builder.ConnectionString);

        // Pass the SqlConnectionStringBuilder an existing 
        // connection string, and you can retrieve and
        // modify any of the elements.
        builder.ConnectionString = "server=(local);user id=ab;" +
            "password= a!Pass113;initial catalog=AdventureWorks";

        // Now that the connection string has been parsed,
        // you can work with individual items.
        Console.WriteLine(builder.Password);
        builder.Password = "new@1Password";

        // You can refer to connection keys using strings, 
        // as well. When you use this technique (the default
        // Item property in Visual Basic, or the indexer in C#),
        // you can specify any synonym for the connection string key
        // name.
        builder["Server"] = ".";
        builder["Connect Timeout"] = 1000;
        builder["Trusted_Connection"] = true;
        Console.WriteLine(builder.ConnectionString);

        Console.WriteLine("Press Enter to finish.");
        Console.ReadLine();
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file. 
        return "Server=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks";
    }
}

Remarks

The connection string builder lets developers programmatically create syntactically correct connection strings, and parse and rebuild existing connection strings, using properties and methods of the class. The connection string builder provides strongly typed properties corresponding to the known key/value pairs allowed by SQL Server. Developers needing to create connection strings as part of applications can use the SqlConnectionStringBuilder class to build and modify connection strings. The class also makes it easy to manage connection strings stored in an application configuration file.

The SqlConnectionStringBuilder performs checks for valid key/value pairs. Therefore, you cannot use this class to create invalid connection strings; trying to add invalid pairs will throw an exception. The class maintains a fixed collection of synonyms and can translate from a synonym to the corresponding well-known key name.

For example, when you use the Item property to retrieve a value, you can specify a string that contains any synonym for the key you need. For example, you can specify "Network Address", "addr", or any other acceptable synonym for this key within a connection string when you use any member that requires a string that contains the key name, such as the Item property or the Remove method. See the ConnectionString property for a full list of acceptable synonyms.

The Item property handles tries to insert malicious entries. For example, the following code, using the default Item property (the indexer, in C#) correctly escapes the nested key/value pair:

Dim builder As New Microsoft.Data.SqlClient.SqlConnectionStringBuilder  
builder("Data Source") = "(local)"  
builder("Integrated Security") = True  
builder("Initial Catalog") = "AdventureWorks;NewValue=Bad"  
Console.WriteLine(builder.ConnectionString)  
Microsoft.Data.SqlClient.SqlConnectionStringBuilder builder =  
  new Microsoft.Data.SqlClient.SqlConnectionStringBuilder();  
builder["Data Source"] = "(local)";  
builder["Integrated Security"] = true;  
builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad";  
Console.WriteLine(builder.ConnectionString);  

The result is the following connection string that handles the invalid value in a safe manner:

Source=(local);Initial Catalog="AdventureWorks;NewValue=Bad";  
Integrated Security=True  

Constructors

SqlConnectionStringBuilder()

Initializes a new instance of the SqlConnectionStringBuilder class.

SqlConnectionStringBuilder(String)

Initializes a new instance of the SqlConnectionStringBuilder class. The provided connection string provides the data for the instance's internal connection information.

Properties

ApplicationIntent

Declares the application workload type when connecting to a database in an SQL Server Availability Group. You can set the value of this property with ApplicationIntent. For more information about SqlClient support for Always On Availability Groups, see SqlClient Support for High Availability, Disaster Recovery.

ApplicationName

Gets or sets the name of the application associated with the connection string.

AsynchronousProcessing
Obsolete.

Obsolete. Gets or sets a Boolean value that indicates whether asynchronous processing is allowed by the connection created by using this connection string.

AttachDBFilename

Gets or sets a string that contains the name of the primary data file. This includes the full path name of an attachable database.

AttestationProtocol

Gets or sets the value of Attestation Protocol.

Authentication

Gets or sets the authentication method used for Connecting to SQL Database By Using Azure Active Directory Authentication.

ColumnEncryptionSetting

Gets or sets the column encryption settings for the connection string builder.

CommandTimeout

The default wait time (in seconds) before terminating the attempt to execute a command and generating an error. The default is 30 seconds.

ConnectionReset
Obsolete.
Obsolete.

Obsolete. Gets or sets a Boolean value that indicates whether the connection is reset when drawn from the connection pool.

ConnectRetryCount

The number of reconnections attempted after identifying that there was an idle connection failure. This must be an integer between 0 and 255. The default value for non Azure endpoints is 1. For Azure SQL endpoints, the default is 2. Starting in version 5.x, for Azure SQL serverless or on demand endpoints, the default is 5 to improve connection success for connections to an idle or paused instance. Set to 0 to disable reconnecting on idle connection failures. An ArgumentException will be thrown if set to a value outside of the allowed range.

ConnectRetryInterval

Amount of time (in seconds) between each reconnection attempt after identifying that there was an idle connection failure. This must be an integer between 1 and 60. The default is 10 seconds.

ConnectTimeout

Gets or sets the length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error.

ContextConnection
Obsolete.

Obsolete. Gets or sets a value that indicates whether a client/server or in-process connection to SQL Server should be made.

CurrentLanguage

Gets or sets the language used for database server warning or error messages..

DataSource

Gets or sets the name or network address of the instance of SQL Server to connect to.

EnclaveAttestationUrl

Gets or sets the enclave attestation URL to be used with enclave based Always Encrypted.

Encrypt

Gets or sets a SqlConnectionEncryptOption value since version 5.0 or a Boolean value for the earlier versions that indicates whether TLS encryption is required for all data sent between the client and server.

Enlist

Gets or sets a Boolean value that indicates whether the SQL Server connection pooler automatically enlists the connection in the creation thread's current transaction context.

FailoverPartner

Gets or sets the name or address of the partner server to connect to if the primary server is down.

FailoverPartnerSPN

Gets or sets the service principal name (SPN) of the failover partner for the connection.

HostNameInCertificate

Gets or sets the host name to use when validating the server certificate for the connection. When not specified, the server name from the Data Source is used for certificate validation. (Only available in v5.0+)

InitialCatalog

Gets or sets the name of the database associated with the connection.

IntegratedSecurity

Gets or sets a Boolean value that indicates whether User ID and Password are specified in the connection (when false) or whether the current Windows account credentials are used for authentication (when true).

IPAddressPreference

Gets or sets the IP address family preference when establishing TCP connections.

IsFixedSize

Gets a value that indicates whether the SqlConnectionStringBuilder has a fixed size.

Item[String]

Gets or sets the value associated with the specified key. In C#, this property is the indexer.

Keys

Gets an ICollection that contains the keys in the SqlConnectionStringBuilder.

LoadBalanceTimeout

Gets or sets the minimum time, in seconds, for the connection to live in the connection pool before being destroyed.

MaxPoolSize

Gets or sets the maximum number of connections allowed in the connection pool for this specific connection string.

MinPoolSize

Gets or sets the minimum number of connections allowed in the connection pool for this specific connection string.

MultipleActiveResultSets

When true, an application can maintain multiple active result sets (MARS). When false, an application must process or cancel all result sets from one batch before it can execute any other batch on that connection. For more information, see Multiple Active Result Sets (MARS).

MultiSubnetFailover

If your application is connecting to an AlwaysOn availability group (AG) on different subnets, setting MultiSubnetFailover=true provides faster detection of and connection to the (currently) active server. For more information about SqlClient support for Always On Availability Groups, see SqlClient Support for High Availability, Disaster Recovery.

NetworkLibrary

Gets or sets a string that contains the name of the network library used to establish a connection to the SQL Server.

PacketSize

Gets or sets the size in bytes of the network packets used to communicate with an instance of SQL Server.

Password

Gets or sets the password for the SQL Server account.

PersistSecurityInfo

Gets or sets a Boolean value indicating if security-sensitive information, such as the password or access token, should be returned as part of the connection string on a connection created with this SqlConnectionStringBuilder after that connection has ever been in an open state. This property should only be set to true if your application has a specific need to read the password out of an already-opened database connection. The default value of false is the more secure setting; using true for this property opens your application to security risks such as accidentally logging or tracing the database password.

PoolBlockingPeriod

The blocking period behavior for a connection pool.

Pooling

Gets or sets a Boolean value that indicates whether the connection will be pooled or explicitly opened every time that the connection is requested.

Replication

Gets or sets a Boolean value that indicates whether replication is supported using the connection.

ServerCertificate

Gets or sets the path to a certificate file to match against the SQL Server TLS/SSL certificate for the connection. The accepted certificate formats are PEM, DER, and CER. If specified, the SQL Server certificate is checked by verifying if the ServerCertificate provided is an exact match. (Only available in v5.1+)

ServerSPN

Gets or sets the service principal name (SPN) of the data source.

TransactionBinding

Gets or sets a string value that indicates how the connection maintains its association with an enlisted System.Transactions transaction.

TransparentNetworkIPResolution

When the value of this key is set to true, the application is required to retrieve all IP addresses for a particular DNS entry and attempt to connect with the first one in the list. If the connection is not established within 0.5 seconds, the application will try to connect to all others in parallel. When the first answers, the application will establish the connection with the respondent IP address.

TrustServerCertificate

Gets or sets a value that indicates whether the channel will be encrypted while bypassing walking the certificate chain to validate trust.

TypeSystemVersion

Gets or sets a string value that indicates the type system the application expects.

UserID

Gets or sets the user ID to be used when connecting to SQL Server.

UserInstance

Gets or sets a value that indicates whether to redirect the connection from the default SQL Server Express instance to a runtime-initiated instance running under the account of the caller.

Values

Gets an ICollection that contains the values in the SqlConnectionStringBuilder.

WorkstationID

Gets or sets the name of the workstation connecting to SQL Server.

Methods

Clear()

Clears the contents of the SqlConnectionStringBuilder instance.

ContainsKey(String)

Determines whether the SqlConnectionStringBuilder contains a specific key.

Remove(String)

Removes the entry with the specified key from the SqlConnectionStringBuilder instance.

ShouldSerialize(String)

Indicates whether the specified key exists in this SqlConnectionStringBuilder instance.

TryGetValue(String, Object)

Retrieves a value corresponding to the supplied key from this SqlConnectionStringBuilder.

Applies to