From 300dcc21809615040689c4e5ad3c09e0ef190038 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Fri, 7 Aug 2020 15:25:21 -0700 Subject: [PATCH 01/23] Active Directory Managed Identity support --- .../ActiveDirectoryAuthenticationProvider.xml | 1 + .../SqlAuthenticationMethod.xml | 4 + .../netcore/ref/Microsoft.Data.SqlClient.cs | 6 +- .../Data/Common/DbConnectionStringCommon.cs | 22 +- .../AzureManagedIdentityTokenProvider.cs | 243 ++++++++++++++++++ ...uthenticationProviderManager.NetCoreApp.cs | 3 + ...thenticationProviderManager.NetStandard.cs | 1 + .../SqlAuthenticationProviderManager.cs | 1 + .../Microsoft/Data/SqlClient/SqlConnection.cs | 64 +++-- .../Data/SqlClient/SqlConnectionString.cs | 7 +- .../SqlClient/SqlInternalConnectionTds.cs | 82 ++++-- .../src/Microsoft/Data/SqlClient/TdsEnums.cs | 20 +- .../src/Microsoft/Data/SqlClient/TdsParser.cs | 8 +- .../netcore/src/Resources/Strings.Designer.cs | 54 ++-- .../netfx/ref/Microsoft.Data.SqlClient.cs | 2 + .../Data/Common/DbConnectionStringCommon.cs | 35 ++- .../SqlAuthenticationProviderManager.cs | 4 + .../Microsoft/Data/SqlClient/SqlConnection.cs | 50 ++-- .../Data/SqlClient/SqlConnectionString.cs | 29 ++- .../SqlClient/SqlInternalConnectionTds.cs | 19 +- .../src/Microsoft/Data/SqlClient/TdsEnums.cs | 23 +- .../src/Microsoft/Data/SqlClient/TdsParser.cs | 8 +- .../ActiveDirectoryAuthenticationProvider.cs | 81 ++++-- .../SqlConnectionStringBuilderTest.cs | 6 + 24 files changed, 614 insertions(+), 159 deletions(-) create mode 100644 src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/AzureManagedIdentityTokenProvider.cs diff --git a/doc/snippets/Microsoft.Data.SqlClient/ActiveDirectoryAuthenticationProvider.xml b/doc/snippets/Microsoft.Data.SqlClient/ActiveDirectoryAuthenticationProvider.xml index 49a2e5616a..41eb7236dd 100644 --- a/doc/snippets/Microsoft.Data.SqlClient/ActiveDirectoryAuthenticationProvider.xml +++ b/doc/snippets/Microsoft.Data.SqlClient/ActiveDirectoryAuthenticationProvider.xml @@ -69,6 +69,7 @@ || || || +|| ## Examples The following example demonstrates providing a custom device flow callback to SqlClient for the Device Code Flow authentication method: diff --git a/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml b/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml index 2ddb84b9a1..46b9de76ee 100644 --- a/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml +++ b/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml @@ -33,5 +33,9 @@ The authentication method uses Active Directory Device Code Flow. Use Active Directory Device Code Flow to connect to a SQL Database from devices and operating systems that do not provide a Web browser, using another device to perform interactive authentication. 6 + + The authentication method uses Active Directory Managed Identity. Use System Assigned or User Assigned Managed Identity to connect to SQL Database from Azure client environments that have enabled support for Managed Identity. + 7 + diff --git a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs index c34dcddab7..e2b33302af 100644 --- a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs +++ b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs @@ -91,6 +91,8 @@ public enum SqlAuthenticationMethod ActiveDirectoryServicePrincipal = 5, /// ActiveDirectoryDeviceCodeFlow = 6, + /// + ActiveDirectoryManagedIdentity = 7, /// NotSpecified = 0, /// @@ -578,12 +580,12 @@ public sealed partial class SqlConnection : System.Data.Common.DbConnection, Sys [System.ComponentModel.DesignerSerializationVisibilityAttribute(0)] public System.Guid ClientConnectionId { get { throw null; } } - /// + /// /// for internal test only /// [System.ComponentModel.DesignerSerializationVisibilityAttribute(0)] internal string SQLDNSCachingSupportedState { get { throw null; } } - /// + /// /// for internal test only /// [System.ComponentModel.DesignerSerializationVisibilityAttribute(0)] diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index 7bd9f2c909..af259dd169 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -104,6 +104,7 @@ internal static string ConvertToString(object value) const string ActiveDirectoryInteractiveString = "Active Directory Interactive"; const string ActiveDirectoryServicePrincipalString = "Active Directory Service Principal"; const string ActiveDirectoryDeviceCodeFlowString = "Active Directory Device Code Flow"; + const string ActiveDirectoryManagedIdentityString = "Active Directory Managed Identity"; internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result) { @@ -147,6 +148,12 @@ internal static bool TryConvertToAuthenticationType(string value, out SqlAuthent result = SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; isSuccess = true; } + else if (StringComparer.InvariantCultureIgnoreCase.Equals(value, ActiveDirectoryManagedIdentityString) + || StringComparer.InvariantCultureIgnoreCase.Equals(value, Convert.ToString(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, CultureInfo.InvariantCulture))) + { + result = SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + isSuccess = true; + } else { result = DbConnectionStringDefaults.Authentication; @@ -367,7 +374,7 @@ internal static SqlConnectionAttestationProtocol ConvertToAttestationProtocol(st } catch (ArgumentException e) { - // to be consistent with the messages we send in case of wrong type usage, replace + // to be consistent with the messages we send in case of wrong type usage, replace // the error with our exception, and keep the original one as inner one for troubleshooting throw ADP.ConvertFailed(value.GetType(), typeof(SqlConnectionAttestationProtocol), e); } @@ -411,7 +418,7 @@ internal static string ApplicationIntentToString(ApplicationIntent value) /// * if the value is from type ApplicationIntent, it will be used as is /// * if the value is from integral type (SByte, Int16, Int32, Int64, Byte, UInt16, UInt32, or UInt64), it will be converted to enum /// * if the value is another enum or any other type, it will be blocked with an appropriate ArgumentException - /// + /// /// in any case above, if the converted value is out of valid range, the method raises ArgumentOutOfRangeException. /// /// application intent value in the valid range @@ -467,7 +474,7 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj } catch (ArgumentException e) { - // to be consistent with the messages we send in case of wrong type usage, replace + // to be consistent with the messages we send in case of wrong type usage, replace // the error with our exception, and keep the original one as inner one for troubleshooting throw ADP.ConvertFailed(value.GetType(), typeof(ApplicationIntent), e); } @@ -494,6 +501,7 @@ internal static bool IsValidAuthenticationTypeValue(SqlAuthenticationMethod valu || value == SqlAuthenticationMethod.ActiveDirectoryInteractive || value == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal || value == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow + || value == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity || value == SqlAuthenticationMethod.NotSpecified; } @@ -515,6 +523,8 @@ internal static string AuthenticationTypeToString(SqlAuthenticationMethod value) return ActiveDirectoryServicePrincipalString; case SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow: return ActiveDirectoryDeviceCodeFlowString; + case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + return ActiveDirectoryManagedIdentityString; default: return null; } @@ -572,7 +582,7 @@ internal static SqlAuthenticationMethod ConvertToAuthenticationType(string keywo } catch (ArgumentException e) { - // to be consistent with the messages we send in case of wrong type usage, replace + // to be consistent with the messages we send in case of wrong type usage, replace // the error with our exception, and keep the original one as inner one for troubleshooting throw ADP.ConvertFailed(value.GetType(), typeof(SqlAuthenticationMethod), e); } @@ -648,7 +658,7 @@ internal static SqlConnectionColumnEncryptionSetting ConvertToColumnEncryptionSe } catch (ArgumentException e) { - // to be consistent with the messages we send in case of wrong type usage, replace + // to be consistent with the messages we send in case of wrong type usage, replace // the error with our exception, and keep the original one as inner one for troubleshooting throw ADP.ConvertFailed(value.GetType(), typeof(SqlConnectionColumnEncryptionSetting), e); } @@ -811,7 +821,7 @@ internal static class DbConnectionStringSynonyms //internal const string MultiSubnetFailover = MULTISUBNETFAILOVER; internal const string MULTISUBNETFAILOVER = "MultiSubnetFailover"; - + //internal const string NetworkLibrary = NET+","+NETWORK; internal const string NET = "net"; internal const string NETWORK = "network"; diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/AzureManagedIdentityTokenProvider.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/AzureManagedIdentityTokenProvider.cs new file mode 100644 index 0000000000..a0f8121d25 --- /dev/null +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/AzureManagedIdentityTokenProvider.cs @@ -0,0 +1,243 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Net.Http; +using System.Text; +using System.Text.Json; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.IdentityModel.JsonWebTokens; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Data.SqlClient.Microsoft.Data.SqlClient +{ + /// + /// Implementation cloned from https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/mgmtcommon/AppAuthentication/Azure.Services.AppAuthentication/TokenProviders/MsiAccessTokenProvider.cs + /// + internal class AzureManagedIdentityTokenProvider + { + // This is for unit testing + private readonly HttpClient _httpClient; + + // This client ID can be specified in the constructor to specify a specific managed identity to use (e.g. user-assigned identity) + private readonly string _managedIdentityClientId; + + // HttpClient is intended to be instantiated once and re-used throughout the life of an application. +#if NETFRAMEWORK + private static readonly HttpClient s_defaultHttpClient = new HttpClient(); +#else + private static readonly HttpClient s_defaultHttpClient = new HttpClient(new HttpClientHandler() { CheckCertificateRevocationList = true }); +#endif + + // Timeout for Azure IMDS probe request + internal const int AzureVmImdsProbeTimeoutInSeconds = 2; + internal readonly TimeSpan _azureVmImdsProbeTimeout = TimeSpan.FromSeconds(AzureVmImdsProbeTimeoutInSeconds); + + // Configurable timeout for MSI retry logic + internal readonly int _retryTimeoutInSeconds = 0; + internal const int MaxRetries = 5; + internal const int DeltaBackOffInSeconds = 2; + internal const string RetryTimeoutError = "Reached retry timeout limit set by MsiRetryTimeout parameter in connection string."; + + // for unit test purposes + internal static bool WaitBeforeRetry = true; + + internal static bool IsRetryableStatusCode(this HttpResponseMessage response) + { + // 404 NotFound, 429 TooManyRequests, and 5XX server error status codes are retryable + return Regex.IsMatch(((int)response.StatusCode).ToString(), @"404|429|5\d{2}"); + } + + internal AzureManagedIdentityTokenProvider(int retryTimeoutInSeconds = 0, string managedIdentityClientId = default) + { + // require storeLocation if using subject name or thumbprint identifier + if (retryTimeoutInSeconds < 0) + { + throw new ArgumentException( + $"MsiRetryTimeout {retryTimeoutInSeconds} is not valid. Valid values are integers greater than or equal to 0."); + } + + _managedIdentityClientId = managedIdentityClientId; + _retryTimeoutInSeconds = retryTimeoutInSeconds; + } + + internal AzureManagedIdentityTokenProvider(HttpClient httpClient, int retryTimeoutInSeconds = 0, string managedIdentityClientId = null) : this(retryTimeoutInSeconds, managedIdentityClientId) + { + _httpClient = httpClient; + } + + public async Task AcquireTokenAsync(string resource, string authority, + CancellationToken cancellationToken = default) + { + // Use the httpClient specified in the constructor. If it was not specified in the constructor, use the default httpClient. + HttpClient httpClient = _httpClient ?? s_defaultHttpClient; + + try + { + // Check if App Services MSI is available. If both these environment variables are set, then it is. + // NOTE: IDENTITY_ENDPOINT is an alias for MSI_ENDPOINT environment variable. + // NOTE: IDENTITY_HEADER is an alias for MSI_SECRET environment variable + string idEndpoint = Environment.GetEnvironmentVariable("IDENTITY_ENDPOINT"); + string idHeader = Environment.GetEnvironmentVariable("IDENTITY_HEADER"); + var isAppServicesMsiAvailable = !string.IsNullOrWhiteSpace(idEndpoint) && !string.IsNullOrWhiteSpace(idHeader); + + // if App Service MSI is not available then Azure VM IMDS may be available, test with a probe request + if (!isAppServicesMsiAvailable) + { + using (var internalTokenSource = new CancellationTokenSource()) + using (var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(internalTokenSource.Token, cancellationToken)) + { + HttpRequestMessage imdsProbeRequest = new HttpRequestMessage(HttpMethod.Get, ActiveDirectoryAuthentication.AZURE_IMDS_REST_URL); + + try + { + internalTokenSource.CancelAfter(_azureVmImdsProbeTimeout); + await httpClient.SendAsync(imdsProbeRequest, linkedTokenSource.Token).ConfigureAwait(false); + } + catch (OperationCanceledException) + { + // request to IMDS timed out (internal cancellation token canceled), neither Azure VM IMDS nor App Services MSI are available + if (internalTokenSource.Token.IsCancellationRequested) + { + //throw new SqlException(ConnectionString, resource, authority, + // $"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.MsiEndpointNotListening}"); + throw; + } + + throw; + } + } + } + + // If managed identity is specified, include client ID parameter in request + string clientIdParameter = _managedIdentityClientId != default + ? $"&client_id={_managedIdentityClientId}" + : string.Empty; + + // Craft request as per the MSI protocol + var requestUrl = isAppServicesMsiAvailable + ? $"{idEndpoint}?resource={resource}{clientIdParameter}&api-version=2019-08-01" + : $"{ActiveDirectoryAuthentication.AZURE_IMDS_REST_URL}?resource={resource}{clientIdParameter}&api-version=2018-02-01"; + + Func getRequestMessage = () => + { + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); + + if (isAppServicesMsiAvailable) + { + request.Headers.Add("X-IDENTITY-HEADER", idHeader); + } + else + { + request.Headers.Add("Metadata", "true"); + } + + return request; + }; + + HttpResponseMessage response; + try + { + response = await SendAsyncWithRetry(httpClient, getRequestMessage, _retryTimeoutInSeconds, cancellationToken).ConfigureAwait(false); + } + catch (HttpRequestException) + { + //throw new AzureServiceTokenProviderException(ConnectionString, resource, authority, + //$"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.RetryFailure} {AzureServiceTokenProviderException.MsiEndpointNotListening}"); + throw; + } + + // If the response is successful, it should have JSON response with an access_token field + if (response.IsSuccessStatusCode) + { + string jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + + // Parse the JSON response + dynamic json = JValue.Parse(jsonResponse); + return new SqlAuthenticationToken(json.AccessToken, DateTime.FromFileTime(json.ExpiresOn)); + } + + string errorStatusDetail = IsRetryableStatusCode() + ? AzureServiceTokenProviderException.RetryFailure + : AzureServiceTokenProviderException.NonRetryableError; + + string errorText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + + throw new Exception($"{errorStatusDetail} MSI ResponseCode: {response.StatusCode}, Response: {errorText}"); + } + catch (Exception exp) + { + if (exp is SqlException) + throw; + + throw; + //throw new AzureServiceTokenProviderException(ConnectionString, resource, authority, + // $"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.GenericErrorMessage} {exp.Message}"); + } + } + + private async Task SendAsyncWithRetry(HttpClient httpClient, Func getRequestMessage, int retryTimeoutInSeconds, CancellationToken cancellationToken) + { + using (var timeoutTokenSource = new CancellationTokenSource()) + using (var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(timeoutTokenSource.Token, cancellationToken)) + { + try + { + // if retry timeout is configured, configure cancellation after timeout period elapses + if (retryTimeoutInSeconds > 0) + { + timeoutTokenSource.CancelAfter(TimeSpan.FromSeconds(retryTimeoutInSeconds)); + } + + var attempts = 0; + var backoffTimeInSecs = 0; + HttpResponseMessage response; + + while (true) + { + attempts++; + + try + { + response = await httpClient.SendAsync(getRequest(), linkedTokenSource.Token).ConfigureAwait(false); + + if (response.IsSuccessStatusCode || !response.IsRetryableStatusCode() || attempts == MaxRetries) + { + break; + } + } + catch (HttpRequestException) + { + if (attempts == MaxRetries) + throw; + } + + if (WaitBeforeRetry) + { + // use recommended exponential backoff strategy, and use linked token wait handle so caller or retry timeout is still able to cancel + backoffTimeInSecs = backoffTimeInSecs + (int)Math.Pow(DeltaBackOffInSeconds, attempts); + linkedTokenSource.Token.WaitHandle.WaitOne(TimeSpan.FromSeconds(backoffTimeInSecs)); + linkedTokenSource.Token.ThrowIfCancellationRequested(); + } + } + + return response; + } + catch (OperationCanceledException) + { + if (timeoutTokenSource.IsCancellationRequested) + { + throw new TimeoutException(RetryTimeoutError); + } + + throw; + } + + } + } + + } +} diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs index eb3e03b1e2..2c2b487c7e 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs @@ -34,6 +34,7 @@ static SqlAuthenticationProviderManager() Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); + Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, activeDirectoryAuthProvider); } /// @@ -119,6 +120,8 @@ private static SqlAuthenticationMethod AuthenticationEnumFromString(string authe return SqlAuthenticationMethod.ActiveDirectoryServicePrincipal; case ActiveDirectoryDeviceCodeFlow: return SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; + case ActiveDirectoryManagedIdentity: + return SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; default: throw SQL.UnsupportedAuthentication(authentication); } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetStandard.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetStandard.cs index e3d5fd5e11..5e46a588c9 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetStandard.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetStandard.cs @@ -15,6 +15,7 @@ static SqlAuthenticationProviderManager() Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); + Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, activeDirectoryAuthProvider); } } } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs index 8d85802486..508d016d27 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs @@ -19,6 +19,7 @@ internal partial class SqlAuthenticationProviderManager private const string ActiveDirectoryInteractive = "active directory interactive"; private const string ActiveDirectoryServicePrincipal = "active directory service principal"; private const string ActiveDirectoryDeviceCodeFlow = "active directory device code flow"; + private const string ActiveDirectoryManagedIdentity = "active directory managed identity"; private readonly string _typeName; private readonly IReadOnlyCollection _authenticationsWithAppSpecifiedProvider; diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs index a139327841..bba4279931 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs @@ -65,7 +65,7 @@ private enum CultureCheckState : uint // Transient Fault handling flag. This is needed to convey to the downstream mechanism of connection establishment, if Transient Fault handling should be used or not // The downstream handling of Connection open is the same for idle connection resiliency. Currently we want to apply transient fault handling only to the connections opened - // using SqlConnection.Open() method. + // using SqlConnection.Open() method. internal bool _applyTransientFaultHandling = false; // System column encryption key store providers are added by default @@ -152,6 +152,11 @@ public SqlConnection(string connectionString, SqlCredential credential) : this() throw SQL.SettingCredentialWithDeviceFlowArgument(); } + if (UsesActiveDirectoryManagedIdentity(connectionOptions)) + { + throw SQL.SettingCredentialWithManagedIdentityArgument(); + } + Credential = credential; } // else @@ -315,7 +320,7 @@ internal SqlConnectionAttestationProtocol AttestationProtocol } } - // This method will be called once connection string is set or changed. + // This method will be called once connection string is set or changed. private void CacheConnectionStringProperties() { SqlConnectionString connString = ConnectionOptions as SqlConnectionString; @@ -323,7 +328,7 @@ private void CacheConnectionStringProperties() { _connectRetryCount = connString.ConnectRetryCount; // For Azure SQL connection, set _connectRetryCount to 2 instead of 1 will greatly improve recovery - // success rate + // success rate if (_connectRetryCount == 1 && ADP.IsAzureSqlServerEndpoint(connString.DataSource)) { _connectRetryCount = 2; @@ -412,6 +417,11 @@ private bool UsesActiveDirectoryDeviceCodeFlow(SqlConnectionString opt) return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow : false; } + private bool UsesActiveDirectoryManagedIdentity(SqlConnectionString opt) + { + return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity : false; + } + private bool UsesAuthentication(SqlConnectionString opt) { return opt != null ? opt.Authentication != SqlAuthenticationMethod.NotSpecified : false; @@ -468,7 +478,8 @@ public override string ConnectionString SqlConnectionString connectionOptions = new SqlConnectionString(value); if (_credential != null) { - // Check for Credential being used with Authentication=ActiveDirectoryIntegrated/ActiveDirectoryInteractive/ActiveDirectoryDeviceCodeFlow. Since a different error string is used + // Check for Credential being used with Authentication=ActiveDirectoryIntegrated | ActiveDirectoryInteractive | + // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity. Since a different error string is used // for this case in ConnectionString setter vs in Credential setter, check for this error case before calling // CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential, which is common to both setters. if (UsesActiveDirectoryIntegrated(connectionOptions)) @@ -483,6 +494,10 @@ public override string ConnectionString { throw SQL.SettingDeviceFlowWithCredential(); } + else if (UsesActiveDirectoryManagedIdentity(connectionOptions)) + { + throw SQL.SettingManagedIdentityWithCredential(); + } CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential(connectionOptions); } @@ -563,9 +578,9 @@ public override string Database } } - /// + /// /// To indicate the IsSupported flag sent by the server for DNS Caching. This property is for internal testing only. - /// + /// internal string SQLDNSCachingSupportedState { get @@ -586,9 +601,9 @@ internal string SQLDNSCachingSupportedState } } - /// + /// /// To indicate the IsSupported flag sent by the server for DNS Caching before redirection. This property is for internal testing only. - /// + /// internal string SQLDNSCachingSupportedStateBeforeRedirect { get @@ -755,7 +770,8 @@ public SqlCredential Credential // check if the usage of credential has any conflict with the keys used in connection string if (value != null) { - // Check for Credential being used with Authentication=ActiveDirectoryIntegrated/ActiveDirectoryInteractive. Since a different error string is used + // Check for Credential being used with Authentication=ActiveDirectoryIntegrated | ActiveDirectoryInteractive | + // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity. Since a different error string is used // for this case in ConnectionString setter vs in Credential setter, check for this error case before calling // CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential, which is common to both setters. if (UsesActiveDirectoryIntegrated((SqlConnectionString)ConnectionOptions)) @@ -770,6 +786,10 @@ public SqlCredential Credential { throw SQL.SettingCredentialWithDeviceFlowInvalid(); } + else if (UsesActiveDirectoryManagedIdentity((SqlConnectionString)ConnectionOptions)) + { + throw SQL.SettingCredentialWithManagedIdentityInvalid(); + } CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential((SqlConnectionString)ConnectionOptions); if (_accessToken != null) @@ -905,7 +925,7 @@ override protected DbTransaction BeginDbTransaction(System.Data.IsolationLevel i { DbTransaction transaction = BeginTransaction(isolationLevel); - // InnerConnection doesn't maintain a ref on the outer connection (this) and + // InnerConnection doesn't maintain a ref on the outer connection (this) and // subsequently leaves open the possibility that the outer connection could be GC'ed before the SqlTransaction // is fully hooked up (leaving a DbTransaction with a null connection property). Ensure that this is reachable // until the completion of BeginTransaction with KeepAlive @@ -993,7 +1013,7 @@ private void CloseInnerConnection() { // CloseConnection() now handles the lock - // The SqlInternalConnectionTds is set to OpenBusy during close, once this happens the cast below will fail and + // The SqlInternalConnectionTds is set to OpenBusy during close, once this happens the cast below will fail and // the command will no longer be cancelable. It might be desirable to be able to cancel the close operation, but this is // outside of the scope of Whidbey RTM. See (SqlCommand::Cancel) for other lock. _originalConnectionId = ClientConnectionId; @@ -1011,15 +1031,15 @@ public override void Close() Guid operationId = default(Guid); Guid clientConnectionId = default(Guid); - // during the call to Dispose() there is a redundant call to - // Close(). because of this, the second time Close() is invoked the - // connection is already in a closed state. this doesn't seem to be a + // during the call to Dispose() there is a redundant call to + // Close(). because of this, the second time Close() is invoked the + // connection is already in a closed state. this doesn't seem to be a // problem except for logging, as we'll get duplicate Before/After/Error // log entries if (previousState != ConnectionState.Closed) { operationId = s_diagnosticListener.WriteConnectionCloseBefore(this); - // we want to cache the ClientConnectionId for After/Error logging, as when the connection + // we want to cache the ClientConnectionId for After/Error logging, as when the connection // is closed then we will lose this identifier // // note: caching this is only for diagnostics logging purposes @@ -1043,7 +1063,7 @@ public override void Close() } AsyncHelper.WaitForCompletion(reconnectTask, 0, null, rethrowExceptions: false); // we do not need to deal with possible exceptions in reconnection if (State != ConnectionState.Open) - {// if we cancelled before the connection was opened + {// if we cancelled before the connection was opened OnStateChange(DbConnectionInternal.StateChangeClosed); } } @@ -1065,7 +1085,7 @@ public override void Close() { SqlStatistics.StopTimer(statistics); - // we only want to log this if the previous state of the + // we only want to log this if the previous state of the // connection is open, as that's the valid use-case if (previousState != ConnectionState.Closed) { @@ -1099,7 +1119,7 @@ private void DisposeMe(bool disposing) if (!disposing) { - // For non-pooled connections we need to make sure that if the SqlConnection was not closed, + // For non-pooled connections we need to make sure that if the SqlConnection was not closed, // then we release the GCHandle on the stateObject to allow it to be GCed // For pooled connections, we will rely on the pool reclaiming the connection var innerConnection = (InnerConnection as SqlInternalConnectionTds); @@ -1176,7 +1196,7 @@ internal void RegisterWaitingForReconnect(Task waitingTask) } Interlocked.CompareExchange(ref _asyncWaitingForReconnection, waitingTask, null); if (_asyncWaitingForReconnection != waitingTask) - { // somebody else managed to register + { // somebody else managed to register throw SQL.MARSUnsupportedOnConnection(); } } @@ -1269,7 +1289,7 @@ internal Task ValidateAndReconnect(Action beforeDisconnect, int timeout) { if (tdsConn.Parser._sessionPool.ActiveSessionsCount > 0) { - // >1 MARS session + // >1 MARS session if (beforeDisconnect != null) { beforeDisconnect(); @@ -1412,7 +1432,7 @@ public override Task OpenAsync(CancellationToken cancellationToken) s_diagnosticListener.IsEnabled(SqlClientDiagnosticListenerExtensions.SqlErrorOpenConnection)) { result.Task.ContinueWith( - continuationAction: s_openAsyncComplete, + continuationAction: s_openAsyncComplete, state: operationId, // connection is passed in TaskCompletionSource async state scheduler: TaskScheduler.Default ); @@ -2013,7 +2033,7 @@ internal Task RegisterForConnectionCloseNotification(Task outerTask, ob connection.RemoveWeakReference(obj); return task; - }, + }, state: Tuple.Create(this, value), scheduler: TaskScheduler.Default ).Unwrap(); diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs index 90010dc058..1170f0d547 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs @@ -223,7 +223,7 @@ internal static class TRANSACTIONBINDING private readonly string _attachDBFileName; private readonly string _currentLanguage; private readonly string _dataSource; - private readonly string _localDBInstance; // created based on datasource, set to NULL if datasource is not LocalDB + private readonly string _localDBInstance; // created based on datasource, set to NULL if datasource is not LocalDB private readonly string _failoverPartner; private readonly string _initialCatalog; private readonly string _password; @@ -467,6 +467,11 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G { throw SQL.DeviceFlowWithUsernamePassword(); } + + if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && (HasUserIdKeyword || HasPasswordKeyword)) + { + throw SQL.ManagedIdentityWithUsernamePassword(); + } } // This c-tor is used to create SSE and user instance connection strings when user instance is set to true diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index 912596b55d..287e5ea1da 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -253,21 +253,21 @@ internal bool IsDNSCachingBeforeRedirectSupported 10928, // SQL Error Code: 10929 - // Resource ID: %d. The %s minimum guarantee is %d, maximum limit is %d and the current usage for the database is %d. + // Resource ID: %d. The %s minimum guarantee is %d, maximum limit is %d and the current usage for the database is %d. // However, the server is currently too busy to support requests greater than %d for this database. 10929, // SQL Error Code: 40197 - // You will receive this error, when the service is down due to software or hardware upgrades, hardware failures, - // or any other failover problems. The error code (%d) embedded within the message of error 40197 provides - // additional information about the kind of failure or failover that occurred. Some examples of the error codes are + // You will receive this error, when the service is down due to software or hardware upgrades, hardware failures, + // or any other failover problems. The error code (%d) embedded within the message of error 40197 provides + // additional information about the kind of failure or failover that occurred. Some examples of the error codes are // embedded within the message of error 40197 are 40020, 40143, 40166, and 40540. 40197, // The service is currently busy. Retry the request after 10 seconds. Incident ID: %ls. Code: %d. 40501, - // Database '%.*ls' on server '%.*ls' is not currently available. Please retry the connection later. + // Database '%.*ls' on server '%.*ls' is not currently available. Please retry the connection later. // If the problem persists, contact customer support, and provide them the session tracing ID of '%.*ls'. 40613 }; @@ -378,7 +378,7 @@ internal void Wait(bool canReleaseFromAnyThread, int timeout, ref bool lockTaken internal void Release() { if (_semaphore.CurrentCount == 0) - { // semaphore methods were used for locking + { // semaphore methods were used for locking _semaphore.Release(); } else @@ -396,7 +396,7 @@ internal bool CanBeReleasedFromAnyThread } } - // Necessary but not sufficient condition for thread to have lock (since semaphore may be obtained by any thread) + // Necessary but not sufficient condition for thread to have lock (since semaphore may be obtained by any thread) internal bool ThreadMayHaveLock() { return Monitor.IsEntered(_semaphore) || _semaphore.CurrentCount == 0; @@ -798,15 +798,15 @@ internal override void ValidateConnectionForExecute(SqlCommand command) /// /// /// This method must be called while holding a lock on the SqlInternalConnection instance, - /// to ensure we don't accidentally execute after the transaction has completed on a different thread, + /// to ensure we don't accidentally execute after the transaction has completed on a different thread, /// causing us to unwittingly execute in auto-commit mode. /// - /// + /// /// - /// When using Explicit transaction unbinding, + /// When using Explicit transaction unbinding, /// verify that the enlisted transaction is active and equal to the current ambient transaction. /// - /// + /// /// /// When using Implicit transaction unbinding, /// verify that the enlisted transaction is active. @@ -895,7 +895,7 @@ protected override void InternalDeactivate() DoomThisConnection(); } - // If we're deactivating with a delegated transaction, we + // If we're deactivating with a delegated transaction, we // should not be cleaning up the parser just yet, that will // cause our transaction to be rolled back and the connection // to be reset. We'll get called again once the delegated @@ -1095,17 +1095,17 @@ bool isDelegateControlRequest // SQLBUDT #20010853 - Promote, Commit and Rollback requests for // delegated transactions often happen while there is an open result - // set, so we need to handle them by using a different MARS session, + // set, so we need to handle them by using a different MARS session, // otherwise we'll write on the physical state objects while someone - // else is using it. When we don't have MARS enabled, we need to - // lock the physical state object to synchronize it's use at least - // until we increment the open results count. Once it's been + // else is using it. When we don't have MARS enabled, we need to + // lock the physical state object to synchronize it's use at least + // until we increment the open results count. Once it's been // incremented the delegated transaction requests will fail, so they // won't stomp on anything. - // + // // We need to keep this lock through the duration of the TM request // so that we won't hijack a different request's data stream and a - // different request won't hijack ours, so we have a lock here on + // different request won't hijack ours, so we have a lock here on // an object that the ExecTMReq will also lock, but since we're on // the same thread, the lock is a no-op. @@ -1272,7 +1272,7 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, } // VSTS#795621 - Ensure ServerName is Sent During TdsLogin To Enable Sql Azure Connectivity. - // Using server.UserServerName (versus ConnectionOptions.DataSource) since TdsLogin requires + // Using server.UserServerName (versus ConnectionOptions.DataSource) since TdsLogin requires // serverName to always be non-null. login.serverName = server.UserServerName; @@ -1316,6 +1316,19 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, }; } + if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity) + { + requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; + _federatedAuthenticationInfoRequested = true; + _fedAuthFeatureExtensionData = + new FederatedAuthenticationFeatureExtensionData + { + libraryType = TdsEnums.FedAuthLibrary.SecurityToken, + authentication = ConnectionOptions.Authentication, + fedAuthRequiredPreLoginResponse = _fedAuthRequired + }; + } + if (_accessTokenInBytes != null) { requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; @@ -1491,7 +1504,7 @@ private bool IsDoNotRetryConnectError(SqlException exc) if (connectionOptions.MultiSubnetFailover) { attemptNumber++; - // Set timeout for this attempt, but don't exceed original timer + // Set timeout for this attempt, but don't exceed original timer long nextTimeoutInterval = checked(timeoutUnitInterval * attemptNumber); long milliseconds = timeout.MillisecondsRemaining; if (nextTimeoutInterval > milliseconds) @@ -1514,7 +1527,7 @@ private bool IsDoNotRetryConnectError(SqlException exc) AttemptOneLogin(serverInfo, newPassword, newSecurePassword, - !connectionOptions.MultiSubnetFailover, // ignore timeout for SniOpen call unless MSF + !connectionOptions.MultiSubnetFailover, // ignore timeout for SniOpen call unless MSF connectionOptions.MultiSubnetFailover ? intervalTimer : timeout); if (connectionOptions.MultiSubnetFailover && null != ServerProvidedFailOverPartner) @@ -1609,7 +1622,7 @@ private bool IsDoNotRetryConnectError(SqlException exc) return; // LoginWithFailover successfully connected and handled entire connection setup } - // Sleep for a bit to prevent clogging the network with requests, + // Sleep for a bit to prevent clogging the network with requests, // then update sleep interval for next iteration (max 1 second interval) SqlClientEventSource.Log.AdvancedTraceEvent(" {0}, sleeping {1}[milisec]", ObjectID, sleepInterval); Thread.Sleep(sleepInterval); @@ -1620,7 +1633,7 @@ private bool IsDoNotRetryConnectError(SqlException exc) if (null != PoolGroupProviderInfo) { // We must wait for CompleteLogin to finish for to have the - // env change from the server to know its designated failover + // env change from the server to know its designated failover // partner; save this information in _currentFailoverPartner. PoolGroupProviderInfo.FailoverCheck(this, false, connectionOptions, ServerProvidedFailOverPartner); } @@ -1706,7 +1719,7 @@ TimeoutTimer timeout // 2) Parser threw exception while main timer was expired // 3) Parser threw logon failure-related exception (LOGON_FAILED, PASSWORD_EXPIRED, etc) // - // Of these methods, only #1 exits normally. This preserves the call stack on the exception + // Of these methods, only #1 exits normally. This preserves the call stack on the exception // back into the parser for the error cases. while (true) { @@ -1762,7 +1775,7 @@ TimeoutTimer timeout { // We are in login with failover scenation and server sent routing information // If it is read-only routing - we did not supply AppIntent=RO (it should be checked before) - // If it is something else, not known yet (future server) - this client is not designed to support this. + // If it is something else, not known yet (future server) - this client is not designed to support this. // In any case, server should not have sent the routing info. SqlClientEventSource.Log.TraceEvent(" Routed to {0}", RoutingInfo.ServerName); throw SQL.ROR_UnexpectedRoutingInfo(this); @@ -1861,7 +1874,7 @@ private void ResolveExtendedServerName(ServerInfo serverInfo, bool aliasLookup, bool withFailover = false) { SqlClientEventSource.Log.AdvancedTraceEvent(" {0}, timout={1}[msec], server={2}", ObjectID, timeout.MillisecondsRemaining, serverInfo.ExtendedServerName); - RoutingInfo = null; // forget routing information + RoutingInfo = null; // forget routing information _parser._physicalStateObj.SniContext = SniContext.Snix_Connect; @@ -2108,6 +2121,7 @@ internal void OnFedAuthInfo(SqlFedAuthInfo fedAuthInfo) || _credential != null || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity || (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated && _fedAuthRequired), "Credentials aren't provided for calling MSAL"); Debug.Assert(fedAuthInfo != null, "info should not be null."); @@ -2350,6 +2364,18 @@ internal SqlFedAuthToken GetFedAuthToken(SqlFedAuthInfo fedAuthInfo) _activeDirectoryAuthTimeoutRetryHelper.CachedToken = _fedAuthToken; } break; + case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + username = TdsEnums.NTAUTHORITYANONYMOUSLOGON; + if (_activeDirectoryAuthTimeoutRetryHelper.State == ActiveDirectoryAuthenticationTimeoutRetryState.Retrying) + { + _fedAuthToken = _activeDirectoryAuthTimeoutRetryHelper.CachedToken; + } + else + { + Task.Run(() => _fedAuthToken = authProvider.AcquireTokenAsync(authParamsBuilder).Result.ToSqlFedAuthToken()).Wait(); + _activeDirectoryAuthTimeoutRetryHelper.CachedToken = _fedAuthToken; + } + break; case SqlAuthenticationMethod.ActiveDirectoryPassword: case SqlAuthenticationMethod.ActiveDirectoryServicePrincipal: if (_activeDirectoryAuthTimeoutRetryHelper.State == ActiveDirectoryAuthenticationTimeoutRetryState.Retrying) @@ -2685,7 +2711,7 @@ internal void OnFeatureExtAck(int featureId, byte[] data) } // need to add more steps for phase 2 - // get IPv4 + IPv6 + Port number + // get IPv4 + IPv6 + Port number // not put them in the DNS cache at this point but need to store them somewhere // generate pendingSQLDNSObject and turn on IsSQLDNSRetryEnabled flag @@ -2694,7 +2720,7 @@ internal void OnFeatureExtAck(int featureId, byte[] data) default: { - // Unknown feature ack + // Unknown feature ack throw SQL.ParsingError(); } } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs index 83005d7a03..331993d8ec 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs @@ -5,6 +5,7 @@ using System; using System.Data; using System.Diagnostics; +using System.Net; namespace Microsoft.Data.SqlClient { @@ -134,7 +135,7 @@ internal static class TdsEnums public const byte SQLDEBUG_CMD = 0x60; public const byte SQLLOGINACK = 0xad; public const byte SQLFEATUREEXTACK = 0xae; // TDS 7.4 - feature ack - public const byte SQLSESSIONSTATE = 0xe4; // TDS 7.4 - connection resiliency session state + public const byte SQLSESSIONSTATE = 0xe4; // TDS 7.4 - connection resiliency session state public const byte SQLENVCHANGE = 0xe3; // Environment change notification public const byte SQLSECLEVEL = 0xed; // Security level token ??? public const byte SQLROWCRC = 0x39; // ROWCRC datastream??? @@ -210,8 +211,8 @@ public enum EnvChangeType : byte public const byte FEATUREEXT_FEDAUTH = 0x02; public const byte FEATUREEXT_TCE = 0x04; public const byte FEATUREEXT_GLOBALTRANSACTIONS = 0x05; - // 0x06 is for x_eFeatureExtensionId_LoginToken - // 0x07 is for x_eFeatureExtensionId_ClientSideTelemetry + // 0x06 is for x_eFeatureExtensionId_LoginToken + // 0x07 is for x_eFeatureExtensionId_ClientSideTelemetry public const byte FEATUREEXT_AZURESQLSUPPORT = 0x08; public const byte FEATUREEXT_DATACLASSIFICATION = 0x09; public const byte FEATUREEXT_UTF8SUPPORT = 0x0A; @@ -242,7 +243,7 @@ public enum FedAuthLibrary : byte { LiveId = FEDAUTHLIB_LIVEID, SecurityToken = FEDAUTHLIB_SECURITYTOKEN, - MSAL = FEDAUTHLIB_MSAL, // For later support + MSAL = FEDAUTHLIB_MSAL, Default = FEDAUTHLIB_RESERVED } @@ -251,6 +252,7 @@ public enum FedAuthLibrary : byte public const byte MSALWORKFLOW_ACTIVEDIRECTORYINTERACTIVE = 0x03; public const byte MSALWORKFLOW_ACTIVEDIRECTORYSERVICEPRINCIPAL = 0x01; // Using the Password byte as that is the closest we have public const byte MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW = 0x03; // Using the Interactive byte as that is the closest we have + public const byte MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY = 0x02; // Using the Integrated byte as that is the closest we have public enum ActiveDirectoryWorkflow : byte { @@ -259,6 +261,7 @@ public enum ActiveDirectoryWorkflow : byte Interactive = MSALWORKFLOW_ACTIVEDIRECTORYINTERACTIVE, ServicePrincipal = MSALWORKFLOW_ACTIVEDIRECTORYSERVICEPRINCIPAL, DeviceCodeFlow = MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW, + ManagedIdentity = MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY, } // The string used for username in the error message when Authentication = Active Directory Integrated with FedAuth is used, if authentication fails. @@ -272,7 +275,7 @@ public enum ActiveDirectoryWorkflow : byte public const byte MAX_NIC_SIZE = 6; // The size of a MAC or client address public const byte SQLVARIANT_SIZE = 2; // size of the fixed portion of a sql variant (type, cbPropBytes) public const byte VERSION_SIZE = 4; // size of the tds version (4 unsigned bytes) - public const int CLIENT_PROG_VER = 0x06000000; // Client interface version + public const int CLIENT_PROG_VER = 0x06000000; // Client interface version public const int YUKON_LOG_REC_FIXED_LEN = 0x5e; // misc public const int TEXT_TIME_STAMP_LEN = 8; @@ -1136,6 +1139,9 @@ public enum SqlAuthenticationMethod /// ActiveDirectoryDeviceCodeFlow, + + /// + ActiveDirectoryManagedIdentity } // This enum indicates the state of TransparentNetworkIPResolution // The first attempt when TNIR is on should be sequential. If the first attempt failes next attempts should be parallel. @@ -1149,7 +1155,11 @@ internal enum TransparentNetworkResolutionState internal class ActiveDirectoryAuthentication { internal const string AdoClientId = "2fd908ad-0664-4344-b9be-cd3e8b574c38"; + internal const string AZURE_IMDS_REST_URL = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01"; internal const string MSALGetAccessTokenFunctionName = "AcquireToken"; + + // Retry acquiring access token upto 20 times due to possible IMDS upgrade (Applies to VM only) + internal const int AZURE_IMDS_MAX_RETRY = 20; } // Fields in the first resultset of "sp_describe_parameter_encryption". diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs index 50f012d574..11488dd69b 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs @@ -397,6 +397,9 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) case SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow: SqlClientEventSource.Log.TraceEvent(" Active Directory Device Code Flow authentication", "SEC"); break; + case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + SqlClientEventSource.Log.TraceEvent(" Active Directory Managed Identity authentication", "SEC"); + break; case SqlAuthenticationMethod.SqlPassword: SqlClientEventSource.Log.TraceEvent(" SQL Password authentication", "SEC"); break; @@ -2905,7 +2908,7 @@ private bool TryProcessDone(SqlCommand cmd, SqlDataReader reader, ref RunBehavio int count; // This is added back since removing it from here introduces regressions in Managed SNI. - // It forces SqlDataReader.ReadAsync() method to run synchronously, + // It forces SqlDataReader.ReadAsync() method to run synchronously, // and will block the calling thread until data is fed from SQL Server. // TODO Investigate better solution to support non-blocking ReadAsync(). stateObj._syncOverAsync = true; @@ -7795,6 +7798,9 @@ internal int WriteSessionRecoveryFeatureRequest(SessionData reconnectData, bool case SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow: workflow = TdsEnums.MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW; break; + case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + workflow = TdsEnums.MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY; + break; default: Debug.Assert(false, "Unrecognized Authentication type for fedauth MSAL request"); break; diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs index aa3f051d37..438423fa71 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs @@ -2499,6 +2499,15 @@ internal class Strings { } } + /// + /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords.. + /// + internal static string SQL_DeviceFlowWithUsernamePassword { + get { + return ResourceManager.GetString("SQL_DeviceFlowWithUsernamePassword", resourceCulture); + } + } + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; . /// @@ -2652,15 +2661,6 @@ internal class Strings { } } - /// - /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords.. - /// - internal static string SQL_DeviceFlowWithUsernamePassword { - get { - return ResourceManager.GetString("SQL_DeviceFlowWithUsernamePassword", resourceCulture); - } - } - /// /// Looks up a localized string similar to Internal Error. /// @@ -3048,6 +3048,15 @@ internal class Strings { } } + /// + /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Device Code Flow' has been specified in the connection string.. + /// + internal static string SQL_SettingCredentialWithDeviceFlow { + get { + return ResourceManager.GetString("SQL_SettingCredentialWithDeviceFlow", resourceCulture); + } + } + /// /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Integrated' has been specified in the connection string.. /// @@ -3067,11 +3076,11 @@ internal class Strings { } /// - /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Device Code Flow' has been specified in the connection string.. + /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set.. /// - internal static string SQL_SettingCredentialWithDeviceFlow { + internal static string SQL_SettingDeviceFlowWithCredential { get { - return ResourceManager.GetString("SQL_SettingCredentialWithDeviceFlow", resourceCulture); + return ResourceManager.GetString("SQL_SettingDeviceFlowWithCredential", resourceCulture); } } @@ -3093,15 +3102,6 @@ internal class Strings { } } - /// - /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set.. - /// - internal static string SQL_SettingDeviceFlowWithCredential { - get { - return ResourceManager.GetString("SQL_SettingDeviceFlowWithCredential", resourceCulture); - } - } - /// /// Looks up a localized string similar to A severe error occurred on the current command. The results, if any, should be discarded.. /// @@ -3229,20 +3229,20 @@ internal class Strings { } /// - /// Looks up a localized string similar to Active Directory Interactive authentication timed out. The user took too long to respond to the authentication request.. + /// Looks up a localized string similar to Active Directory Device Code Flow authentication timed out. The user took too long to respond to the authentication request.. /// - internal static string SQL_Timeout_Active_Directory_Interactive_Authentication { + internal static string SQL_Timeout_Active_Directory_DeviceFlow_Authentication { get { - return ResourceManager.GetString("SQL_Timeout_Active_Directory_Interactive_Authentication", resourceCulture); + return ResourceManager.GetString("SQL_Timeout_Active_Directory_DeviceFlow_Authentication", resourceCulture); } } /// - /// Looks up a localized string similar to Active Directory Device Code Flow authentication timed out. The user took too long to respond to the authentication request.. + /// Looks up a localized string similar to Active Directory Interactive authentication timed out. The user took too long to respond to the authentication request.. /// - internal static string SQL_Timeout_Active_Directory_DeviceFlow_Authentication { + internal static string SQL_Timeout_Active_Directory_Interactive_Authentication { get { - return ResourceManager.GetString("SQL_Timeout_Active_Directory_DeviceFlow_Authentication", resourceCulture); + return ResourceManager.GetString("SQL_Timeout_Active_Directory_Interactive_Authentication", resourceCulture); } } diff --git a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs index 76d4f44fbb..2ce92a26c3 100644 --- a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs +++ b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs @@ -109,6 +109,8 @@ public enum SqlAuthenticationMethod ActiveDirectoryServicePrincipal = 5, /// ActiveDirectoryDeviceCodeFlow = 6, + /// + ActiveDirectoryManagedIdentity = 7, /// NotSpecified = 0, /// diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index 9979e9f6de..ee22024053 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -317,7 +317,7 @@ internal static string PoolBlockingPeriodToString(PoolBlockingPeriod value) /// * if the value is from type PoolBlockingPeriod, it will be used as is /// * if the value is from integral type (SByte, Int16, Int32, Int64, Byte, UInt16, UInt32, or UInt64), it will be converted to enum /// * if the value is another enum or any other type, it will be blocked with an appropriate ArgumentException - /// + /// /// in any case above, if the converted value is out of valid range, the method raises ArgumentOutOfRangeException. /// /// PoolBlockingPeriod value in the valid range @@ -373,7 +373,7 @@ internal static PoolBlockingPeriod ConvertToPoolBlockingPeriod(string keyword, o } catch (ArgumentException e) { - // to be consistent with the messages we send in case of wrong type usage, replace + // to be consistent with the messages we send in case of wrong type usage, replace // the error with our exception, and keep the original one as inner one for troubleshooting throw ADP.ConvertFailed(value.GetType(), typeof(PoolBlockingPeriod), e); } @@ -442,7 +442,7 @@ internal static string ApplicationIntentToString(ApplicationIntent value) /// * if the value is from type ApplicationIntent, it will be used as is /// * if the value is from integral type (SByte, Int16, Int32, Int64, Byte, UInt16, UInt32, or UInt64), it will be converted to enum /// * if the value is another enum or any other type, it will be blocked with an appropriate ArgumentException - /// + /// /// in any case above, if the converted value is out of valid range, the method raises ArgumentOutOfRangeException. /// /// application intent value in the valid range @@ -498,7 +498,7 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj } catch (ArgumentException e) { - // to be consistent with the messages we send in case of wrong type usage, replace + // to be consistent with the messages we send in case of wrong type usage, replace // the error with our exception, and keep the original one as inner one for troubleshooting throw ADP.ConvertFailed(value.GetType(), typeof(ApplicationIntent), e); } @@ -522,6 +522,7 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj const string ActiveDirectoryInteractiveString = "Active Directory Interactive"; const string ActiveDirectoryServicePrincipalString = "Active Directory Service Principal"; const string ActiveDirectoryDeviceCodeFlowString = "Active Directory Device Code Flow"; + const string ActiveDirectoryManagedIdentityString = "Active Directory Managed Identity"; const string SqlCertificateString = "Sql Certificate"; internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result) @@ -566,7 +567,13 @@ internal static bool TryConvertToAuthenticationType(string value, out SqlAuthent result = SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; isSuccess = true; } -#if ADONET_CERT_AUTH + else if (StringComparer.InvariantCultureIgnoreCase.Equals(value, ActiveDirectoryManagedIdentityString) + || StringComparer.InvariantCultureIgnoreCase.Equals(value, Convert.ToString(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, CultureInfo.InvariantCulture))) + { + result = SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + isSuccess = true; + } +#if ADONET_CERT_AUTH else if (StringComparer.InvariantCultureIgnoreCase.Equals(value, SqlCertificateString) || StringComparer.InvariantCultureIgnoreCase.Equals(value, Convert.ToString(SqlAuthenticationMethod.SqlCertificate, CultureInfo.InvariantCulture))) { result = SqlAuthenticationMethod.SqlCertificate; @@ -655,9 +662,10 @@ internal static bool IsValidAuthenticationTypeValue(SqlAuthenticationMethod valu || value == SqlAuthenticationMethod.ActiveDirectoryInteractive || value == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal || value == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow -#if ADONET_CERT_AUTH + || value == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity +#if ADONET_CERT_AUTH || value == SqlAuthenticationMethod.SqlCertificate -#endif +#endif || value == SqlAuthenticationMethod.NotSpecified; } @@ -679,11 +687,12 @@ internal static string AuthenticationTypeToString(SqlAuthenticationMethod value) return ActiveDirectoryServicePrincipalString; case SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow: return ActiveDirectoryDeviceCodeFlowString; + case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + return ActiveDirectoryManagedIdentityString; #if ADONET_CERT_AUTH case SqlAuthenticationMethod.SqlCertificate: return SqlCertificateString; #endif - default: return null; } @@ -741,7 +750,7 @@ internal static SqlAuthenticationMethod ConvertToAuthenticationType(string keywo } catch (ArgumentException e) { - // to be consistent with the messages we send in case of wrong type usage, replace + // to be consistent with the messages we send in case of wrong type usage, replace // the error with our exception, and keep the original one as inner one for troubleshooting throw ADP.ConvertFailed(value.GetType(), typeof(SqlAuthenticationMethod), e); } @@ -817,7 +826,7 @@ internal static SqlConnectionColumnEncryptionSetting ConvertToColumnEncryptionSe } catch (ArgumentException e) { - // to be consistent with the messages we send in case of wrong type usage, replace + // to be consistent with the messages we send in case of wrong type usage, replace // the error with our exception, and keep the original one as inner one for troubleshooting throw ADP.ConvertFailed(value.GetType(), typeof(SqlConnectionColumnEncryptionSetting), e); } @@ -960,7 +969,7 @@ internal static SqlConnectionAttestationProtocol ConvertToAttestationProtocol(st } catch (ArgumentException e) { - // to be consistent with the messages we send in case of wrong type usage, replace + // to be consistent with the messages we send in case of wrong type usage, replace // the error with our exception, and keep the original one as inner one for troubleshooting throw ADP.ConvertFailed(value.GetType(), typeof(SqlConnectionAttestationProtocol), e); } @@ -1184,14 +1193,14 @@ internal static class DbConnectionStringSynonyms //internal const string MultiSubnetFailover = MULTISUBNETFAILOVER; internal const string MULTISUBNETFAILOVER = "multisubnetfailover"; - + //internal const string NetworkLibrary = NET+","+NETWORK; internal const string NET = "net"; internal const string NETWORK = "network"; //internal const string PoolBlockingPeriod = POOLBLOCKINGPERIOD; internal const string POOLBLOCKINGPERIOD = "poolblockingperiod"; - + internal const string WorkaroundOracleBug914652 = "Workaround Oracle Bug 914652"; //internal const string Password = Pwd; diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs index 144a782acb..4695289237 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs @@ -20,6 +20,7 @@ internal class SqlAuthenticationProviderManager private const string ActiveDirectoryInteractive = "active directory interactive"; private const string ActiveDirectoryServicePrincipal = "active directory service principal"; private const string ActiveDirectoryDeviceCodeFlow = "active directory device code flow"; + private const string ActiveDirectoryManagedIdentity = "active directory managed identity"; static SqlAuthenticationProviderManager() { @@ -40,6 +41,7 @@ static SqlAuthenticationProviderManager() Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); + Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, activeDirectoryAuthProvider); } public static readonly SqlAuthenticationProviderManager Instance; @@ -178,6 +180,8 @@ private static SqlAuthenticationMethod AuthenticationEnumFromString(string authe return SqlAuthenticationMethod.ActiveDirectoryServicePrincipal; case ActiveDirectoryDeviceCodeFlow: return SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; + case ActiveDirectoryManagedIdentity: + return SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; default: throw SQL.UnsupportedAuthentication(authentication); } diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs index a0775464f4..dae88b087e 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs @@ -283,7 +283,7 @@ static internal List GetColumnEncryptionCustomKeyStoreProviders() // Transient Fault handling flag. This is needed to convey to the downstream mechanism of connection establishment, if Transient Fault handling should be used or not // The downstream handling of Connection open is the same for idle connection resiliency. Currently we want to apply transient fault handling only to the connections opened - // using SqlConnection.Open() method. + // using SqlConnection.Open() method. internal bool _applyTransientFaultHandling = false; /// @@ -331,6 +331,11 @@ public SqlConnection(string connectionString, SqlCredential credential) : this() throw SQL.SettingCredentialWithDeviceFlowArgument(); } + if (UsesActiveDirectoryManagedIdentity(connectionOptions)) + { + throw SQL.SettingCredentialWithManagedIdentityArgument(); + } + Credential = credential; } // else @@ -357,7 +362,7 @@ private SqlConnection(SqlConnection connection) CacheConnectionStringProperties(); } - // This method will be called once connection string is set or changed. + // This method will be called once connection string is set or changed. private void CacheConnectionStringProperties() { SqlConnectionString connString = ConnectionOptions as SqlConnectionString; @@ -365,7 +370,7 @@ private void CacheConnectionStringProperties() { _connectRetryCount = connString.ConnectRetryCount; // For Azure SQL connection, set _connectRetryCount to 2 instead of 1 will greatly improve recovery - // success rate + // success rate if (_connectRetryCount == 1 && ADP.IsAzureSqlServerEndpoint(connString.DataSource)) { _connectRetryCount = 2; @@ -525,6 +530,11 @@ private bool UsesActiveDirectoryDeviceCodeFlow(SqlConnectionString opt) return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow : false; } + private bool UsesActiveDirectoryManagedIdentity(SqlConnectionString opt) + { + return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity : false; + } + private bool UsesAuthentication(SqlConnectionString opt) { return opt != null ? opt.Authentication != SqlAuthenticationMethod.NotSpecified : false; @@ -668,7 +678,8 @@ override public string ConnectionString SqlConnectionString connectionOptions = new SqlConnectionString(value); if (_credential != null) { - // Check for Credential being used with Authentication=ActiveDirectoryIntegrated/ActiveDirectoryInteractive/ActiveDirectoryDeviceCodeFlow. Since a different error string is used + // Check for Credential being used with Authentication=ActiveDirectoryIntegrated | ActiveDirectoryInteractive | + // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity. Since a different error string is used // for this case in ConnectionString setter vs in Credential setter, check for this error case before calling // CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential, which is common to both setters. if (UsesActiveDirectoryIntegrated(connectionOptions)) @@ -683,6 +694,10 @@ override public string ConnectionString { throw SQL.SettingDeviceFlowWithCredential(); } + else if (UsesActiveDirectoryManagedIdentity(connectionOptions)) + { + throw SQL.SettingManagedIdentityWithCredential(); + } CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential(connectionOptions); } @@ -739,9 +754,9 @@ override public string Database } } - /// + /// /// To indicate the IsSupported flag sent by the server for DNS Caching. This property is for internal testing only. - /// + /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] internal string SQLDNSCachingSupportedState { @@ -763,9 +778,9 @@ internal string SQLDNSCachingSupportedState } } - /// + /// /// To indicate the IsSupported flag sent by the server for DNS Caching before redirection. This property is for internal testing only. - /// + /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] internal string SQLDNSCachingSupportedStateBeforeRedirect { @@ -997,7 +1012,8 @@ public SqlCredential Credential // check if the usage of credential has any conflict with the keys used in connection string if (value != null) { - // Check for Credential being used with Authentication=ActiveDirectoryIntegrated/ActiveDirectoryInteractive/ActiveDirectoryDeviceCodeFlow. Since a different error string is used + // Check for Credential being used with Authentication=ActiveDirectoryIntegrated | ActiveDirectoryInteractive | + // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity. Since a different error string is used // for this case in ConnectionString setter vs in Credential setter, check for this error case before calling // CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential, which is common to both setters. if (UsesActiveDirectoryIntegrated((SqlConnectionString)ConnectionOptions)) @@ -1012,6 +1028,10 @@ public SqlCredential Credential { throw SQL.SettingCredentialWithDeviceFlowInvalid(); } + else if (UsesActiveDirectoryManagedIdentity((SqlConnectionString)ConnectionOptions)) + { + throw SQL.SettingCredentialWithManagedIdentityInvalid(); + } CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential((SqlConnectionString)ConnectionOptions); if (_accessToken != null) @@ -1203,7 +1223,7 @@ override protected DbTransaction BeginDbTransaction(IsolationLevel isolationLeve DbTransaction transaction = BeginTransaction(isolationLevel); - // VSTFDEVDIV# 560355 - InnerConnection doesn't maintain a ref on the outer connection (this) and + // VSTFDEVDIV# 560355 - InnerConnection doesn't maintain a ref on the outer connection (this) and // subsequently leaves open the possibility that the outer connection could be GC'ed before the SqlTransaction // is fully hooked up (leaving a DbTransaction with a null connection property). Ensure that this is reachable // until the completion of BeginTransaction with KeepAlive @@ -1344,7 +1364,7 @@ void CloseInnerConnection() { // CloseConnection() now handles the lock - // The SqlInternalConnectionTds is set to OpenBusy during close, once this happens the cast below will fail and + // The SqlInternalConnectionTds is set to OpenBusy during close, once this happens the cast below will fail and // the command will no longer be cancelable. It might be desirable to be able to cancel the close opperation, but this is // outside of the scope of Whidbey RTM. See (SqlCommand::Cancel) for other lock. _originalConnectionId = ClientConnectionId; @@ -1388,7 +1408,7 @@ override public void Close() } AsyncHelper.WaitForCompletion(reconnectTask, 0, null, rethrowExceptions: false); // we do not need to deal with possible exceptions in reconnection if (State != ConnectionState.Open) - {// if we cancelled before the connection was opened + {// if we cancelled before the connection was opened OnStateChange(DbConnectionInternal.StateChangeClosed); } } @@ -1546,7 +1566,7 @@ internal void RegisterWaitingForReconnect(Task waitingTask) } Interlocked.CompareExchange(ref _asyncWaitingForReconnection, waitingTask, null); if (_asyncWaitingForReconnection != waitingTask) - { // somebody else managed to register + { // somebody else managed to register throw SQL.MARSUnsupportedOnConnection(); } } @@ -1642,7 +1662,7 @@ internal Task ValidateAndReconnect(Action beforeDisconnect, int timeout) { if (tdsConn.Parser._sessionPool.ActiveSessionsCount > 0) { - // >1 MARS session + // >1 MARS session if (beforeDisconnect != null) { beforeDisconnect(); @@ -1705,7 +1725,7 @@ internal Task ValidateAndReconnect(Action beforeDisconnect, int timeout) OnError(SQL.CR_UnrecoverableServer(ClientConnectionId), true, null); } } // ValidateSNIConnection - } // sessionRecoverySupported + } // sessionRecoverySupported } // connectRetryCount>0 } else diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs index d696512b51..f6518a96d1 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs @@ -104,7 +104,7 @@ internal static class KEY internal const string Connect_Retry_Count = "connect retry count"; internal const string Connect_Retry_Interval = "connect retry interval"; internal const string Authentication = "authentication"; -#if ADONET_CERT_AUTH +#if ADONET_CERT_AUTH internal const string Certificate = "certificate"; #endif } @@ -248,12 +248,12 @@ internal static class TRANSACIONBINDING private readonly string _attachDBFileName; private readonly string _currentLanguage; private readonly string _dataSource; - private readonly string _localDBInstance; // created based on datasource, set to NULL if datasource is not LocalDB + private readonly string _localDBInstance; // created based on datasource, set to NULL if datasource is not LocalDB private readonly string _failoverPartner; private readonly string _initialCatalog; private readonly string _password; private readonly string _userID; -#if ADONET_CERT_AUTH +#if ADONET_CERT_AUTH private readonly string _certificate; #endif private readonly string _networkLibrary; @@ -319,7 +319,7 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G _enclaveAttestationUrl = ConvertValueToString(KEY.EnclaveAttestationUrl, DEFAULT.EnclaveAttestationUrl); _attestationProtocol = ConvertValueToAttestationProtocol(); -#if ADONET_CERT_AUTH +#if ADONET_CERT_AUTH _certificate = ConvertValueToString(KEY.Certificate, DEFAULT.Certificate); #endif @@ -332,7 +332,7 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G if (_contextConnection) { - // We have to be running in the engine for you to request a + // We have to be running in the engine for you to request a // context connection. if (!runningInProc) @@ -340,7 +340,7 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G throw SQL.ContextUnavailableOutOfProc(); } - // When using a context connection, we need to ensure that no + // When using a context connection, we need to ensure that no // other connection string keywords are specified. foreach (DictionaryEntry entry in Parsetable) @@ -556,19 +556,24 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G throw SQL.DeviceFlowWithUsernamePassword(); } + if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && (HasUserIdKeyword || HasPasswordKeyword)) + { + throw SQL.ManagedIdentityWithUsernamePassword(); + } + #if ADONET_CERT_AUTH - + if (!DbConnectionStringBuilderUtil.IsValidCertificateValue(_certificate)) { throw ADP.InvalidConnectionOptionValue(KEY.Certificate); } if (!string.IsNullOrEmpty(_certificate)) { - + if (Authentication == SqlClient.SqlAuthenticationMethod.NotSpecified && !_integratedSecurity) { _authType = SqlClient.SqlAuthenticationMethod.SqlCertificate; } - if (Authentication == SqlClient.SqlAuthenticationMethod.SqlCertificate && (HasUserIdKeyword || HasPasswordKeyword || _integratedSecurity)) { + if (Authentication == SqlClient.SqlAuthenticationMethod.SqlCertificate && (HasUserIdKeyword || HasPasswordKeyword || _integratedSecurity)) { throw SQL.InvalidCertAuth(); } } @@ -631,7 +636,7 @@ internal SqlConnectionString(SqlConnectionString connectionOptions, string dataS _columnEncryptionSetting = connectionOptions._columnEncryptionSetting; _enclaveAttestationUrl = connectionOptions._enclaveAttestationUrl; _attestationProtocol = connectionOptions._attestationProtocol; -#if ADONET_CERT_AUTH +#if ADONET_CERT_AUTH _certificate = connectionOptions._certificate; #endif ValidateValueLength(_dataSource, TdsEnums.MAXLEN_SERVERNAME, KEY.Data_Source); @@ -659,7 +664,7 @@ internal SqlConnectionString(SqlConnectionString connectionOptions, string dataS internal SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting { get { return _columnEncryptionSetting; } } internal string EnclaveAttestationUrl { get { return _enclaveAttestationUrl; } } internal SqlConnectionAttestationProtocol AttestationProtocol { get { return _attestationProtocol; } } -#if ADONET_CERT_AUTH +#if ADONET_CERT_AUTH internal string Certificate { get { return _certificate; } } internal bool UsesCertificate { get { return _authType == SqlClient.SqlAuthenticationMethod.SqlCertificate; } } #else @@ -797,7 +802,7 @@ internal static Hashtable GetParseSynonyms() hash.Add(KEY.Connect_Retry_Count, KEY.Connect_Retry_Count); hash.Add(KEY.Connect_Retry_Interval, KEY.Connect_Retry_Interval); hash.Add(KEY.Authentication, KEY.Authentication); -#if ADONET_CERT_AUTH +#if ADONET_CERT_AUTH hash.Add(KEY.Certificate, KEY.Certificate); #endif hash.Add(SYNONYM.APPLICATIONINTENT, KEY.ApplicationIntent); diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index 49f947acf2..0c8201f6e7 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -1587,6 +1587,18 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, fedAuthRequiredPreLoginResponse = _fedAuthRequired }; } + if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity) + { + requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; + _federatedAuthenticationInfoRequested = true; + _fedAuthFeatureExtensionData = + new FederatedAuthenticationFeatureExtensionData + { + libraryType = TdsEnums.FedAuthLibrary.SecurityToken, + authentication = ConnectionOptions.Authentication, + fedAuthRequiredPreLoginResponse = _fedAuthRequired + }; + } if (_accessTokenInBytes != null) { requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; @@ -1966,7 +1978,8 @@ private bool ShouldDisableTnir(SqlConnectionString connectionOptions) connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated || connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive || connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal || - connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; + connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow || + connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; // Check if the user had explicitly specified the TNIR option in the connection string or the connection string builder. // If the user has specified the option in the connection string explicitly, then we shouldn't disable TNIR. @@ -2552,6 +2565,7 @@ internal void OnFedAuthInfo(SqlFedAuthInfo fedAuthInfo) Debug.Assert((ConnectionOptions.HasUserIdKeyword && ConnectionOptions.HasPasswordKeyword) || _credential != null || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow || (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated && _fedAuthRequired), "Credentials aren't provided for calling MSAL"); @@ -2761,6 +2775,7 @@ internal SqlFedAuthToken GetFedAuthToken(SqlFedAuthInfo fedAuthInfo) switch (ConnectionOptions.Authentication) { case SqlAuthenticationMethod.ActiveDirectoryIntegrated: + case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: username = TdsEnums.NTAUTHORITYANONYMOUSLOGON; if (_activeDirectoryAuthTimeoutRetryHelper.State == ActiveDirectoryAuthenticationTimeoutRetryState.Retrying) { @@ -3147,7 +3162,7 @@ internal void OnFeatureExtAck(int featureId, byte[] data) } // need to add more steps for phrase 2 - // get IPv4 + IPv6 + Port number + // get IPv4 + IPv6 + Port number // not put them in the DNS cache at this point but need to store them somewhere // generate pendingSQLDNSObject and turn on IsSQLDNSRetryEnabled flag diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs index c6ad7fea14..ded520df23 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs @@ -148,7 +148,7 @@ internal static class TdsEnums public const byte SQLDEBUG_CMD = 0x60; public const byte SQLLOGINACK = 0xad; public const byte SQLFEATUREEXTACK = 0xae; // TDS 7.4 - feature ack - public const byte SQLSESSIONSTATE = 0xe4; // TDS 7.4 - connection resiliency session state + public const byte SQLSESSIONSTATE = 0xe4; // TDS 7.4 - connection resiliency session state public const byte SQLENVCHANGE = 0xe3; // Environment change notification public const byte SQLSECLEVEL = 0xed; // Security level token ??? public const byte SQLROWCRC = 0x39; // ROWCRC datastream??? @@ -199,11 +199,11 @@ internal static class TdsEnums public const byte FEATUREEXT_TERMINATOR = 0xFF; public const byte FEATUREEXT_SRECOVERY = 0x01; public const byte FEATUREEXT_FEDAUTH = 0x02; - // 0x03 is for x_eFeatureExtensionId_Rcs + // 0x03 is for x_eFeatureExtensionId_Rcs public const byte FEATUREEXT_TCE = 0x04; public const byte FEATUREEXT_GLOBALTRANSACTIONS = 0x05; - // 0x06 is for x_eFeatureExtensionId_LoginToken - // 0x07 is for x_eFeatureExtensionId_ClientSideTelemetry + // 0x06 is for x_eFeatureExtensionId_LoginToken + // 0x07 is for x_eFeatureExtensionId_ClientSideTelemetry public const byte FEATUREEXT_AZURESQLSUPPORT = 0x08; public const byte FEATUREEXT_DATACLASSIFICATION = 0x09; public const byte FEATUREEXT_UTF8SUPPORT = 0x0A; @@ -219,7 +219,7 @@ public enum FeatureExtension : uint GlobalTransactions = 1 << (TdsEnums.FEATUREEXT_GLOBALTRANSACTIONS - 1), AzureSQLSupport = 1 << (TdsEnums.FEATUREEXT_AZURESQLSUPPORT - 1), DataClassification = 1 << (TdsEnums.FEATUREEXT_DATACLASSIFICATION - 1), - UTF8Support = 1 << (TdsEnums.FEATUREEXT_UTF8SUPPORT - 1), + UTF8Support = 1 << (TdsEnums.FEATUREEXT_UTF8SUPPORT - 1), SQLDNSCaching = 1 << (TdsEnums.FEATUREEXT_SQLDNSCACHING - 1) } @@ -243,6 +243,7 @@ public enum FedAuthLibrary : byte public const byte MSALWORKFLOW_ACTIVEDIRECTORYINTERACTIVE = 0x03; public const byte MSALWORKFLOW_ACTIVEDIRECTORYSERVICEPRINCIPAL = 0x01; // Using the Password byte as that is the closest we have public const byte MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW = 0x03; // Using the Interactive byte as that is the closest we have + public const byte MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY = 0x02; // Using the Integrated byte as that is the closest we have public enum ActiveDirectoryWorkflow : byte { @@ -251,6 +252,7 @@ public enum ActiveDirectoryWorkflow : byte Interactive = MSALWORKFLOW_ACTIVEDIRECTORYINTERACTIVE, ServicePrincipal = MSALWORKFLOW_ACTIVEDIRECTORYSERVICEPRINCIPAL, DeviceCodeFlow = MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW, + ManagedIdentity = MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY, } // The string used for username in the error message when Authentication = Active Directory Integrated with FedAuth is used, if authentication fails. @@ -264,7 +266,7 @@ public enum ActiveDirectoryWorkflow : byte public const byte MAX_NIC_SIZE = 6; // The size of a MAC or client address public const byte SQLVARIANT_SIZE = 2; // size of the fixed portion of a sql variant (type, cbPropBytes) public const byte VERSION_SIZE = 4; // size of the tds version (4 unsigned bytes) - public const int CLIENT_PROG_VER = 0x06000000; // Client interface version + public const int CLIENT_PROG_VER = 0x06000000; // Client interface version public const int YUKON_LOG_REC_FIXED_LEN = 0x5e; // misc public const int TEXT_TIME_STAMP_LEN = 8; @@ -610,8 +612,8 @@ public enum ActiveDirectoryWorkflow : byte // Login data validation Rules // internal const ushort MAXLEN_HOSTNAME = 128; // the client machine name - internal const ushort MAXLEN_CLIENTID = 128; - internal const ushort MAXLEN_CLIENTSECRET = 128; + internal const ushort MAXLEN_CLIENTID = 128; + internal const ushort MAXLEN_CLIENTSECRET = 128; internal const ushort MAXLEN_APPNAME = 128; // the client application name internal const ushort MAXLEN_SERVERNAME = 128; // the server name internal const ushort MAXLEN_CLIENTINTERFACE = 128; // the interface library name @@ -1098,9 +1100,12 @@ public enum SqlAuthenticationMethod /// ActiveDirectoryDeviceCodeFlow, + + /// + ActiveDirectoryManagedIdentity, #if ADONET_CERT_AUTH SqlCertificate -#endif +#endif } // This enum indicates the state of TransparentNetworkIPResolution // The first attempt when TNIR is on should be sequential. If the first attempt failes next attempts should be parallel. diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs index 03404784e0..4bf5d3a5a8 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs @@ -548,6 +548,9 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) case SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow: SqlClientEventSource.Log.TraceEvent(" Active Directory Device Code Flow authentication", "SEC"); break; + case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + SqlClientEventSource.Log.TraceEvent(" Active Directory Managed Identity authentication", "SEC"); + break; case SqlAuthenticationMethod.SqlPassword: SqlClientEventSource.Log.TraceEvent(" SQL Password authentication", "SEC"); break; @@ -695,7 +698,7 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) } // Retrieve the IP and port number from native SNI for TCP protocol. The IP information is stored temporarily in the - // pendingSQLDNSObject but not in the DNS Cache at this point. We only add items to the DNS Cache after we receive the + // pendingSQLDNSObject but not in the DNS Cache at this point. We only add items to the DNS Cache after we receive the // IsSupported flag as true in the feature ext ack from server. internal void AssignPendingDNSInfo(string userProtocol, string DNSCacheKey) { @@ -8563,6 +8566,9 @@ internal int WriteSessionRecoveryFeatureRequest(SessionData reconnectData, bool case SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow: workflow = TdsEnums.MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW; break; + case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + workflow = TdsEnums.MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY; + break; default: Debug.Assert(false, "Unrecognized Authentication type for fedauth MSAL request"); break; diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs index fe3317f17b..2f2d3de7dd 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs @@ -3,8 +3,11 @@ // See the LICENSE file in the project root for more information. using System; +using System.Collections; +using System.Collections.Generic; using System.Linq; using System.Security; +using System.Text; using System.Threading; using System.Threading.Tasks; using Microsoft.Identity.Client; @@ -43,7 +46,8 @@ public override bool IsSupported(SqlAuthenticationMethod authentication) || authentication == SqlAuthenticationMethod.ActiveDirectoryPassword || authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive || authentication == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal - || authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; + || authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow + || authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; } /// @@ -92,17 +96,17 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } - /* + /* * Today, MSAL.NET uses another redirect URI by default in desktop applications that run on Windows * (urn:ietf:wg:oauth:2.0:oob). In the future, we'll want to change this default, so we recommend * that you use https://login.microsoftonline.com/common/oauth2/nativeclient. - * + * * https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-desktop-app-registration#redirect-uris */ string redirectURI = "https://login.microsoftonline.com/common/oauth2/nativeclient"; #if netcoreapp - if(parameters.AuthenticationMethod != SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow) + if (parameters.AuthenticationMethod != SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow) { redirectURI = "http://localhost"; } @@ -152,14 +156,15 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) result = app.AcquireTokenByIntegratedWindowsAuth(scopes) .WithCorrelationId(parameters.ConnectionId) .WithUsername(parameters.UserId) - .ExecuteAsync().Result; + .ExecuteAsync().GetAwaiter().GetResult(); } else { result = app.AcquireTokenByIntegratedWindowsAuth(scopes) .WithCorrelationId(parameters.ConnectionId) - .ExecuteAsync().Result; + .ExecuteAsync().GetAwaiter().GetResult(); } + return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } else if (parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryPassword) { @@ -169,7 +174,8 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) password.MakeReadOnly(); result = app.AcquireTokenByUsernamePassword(scopes, parameters.UserId, password) .WithCorrelationId(parameters.ConnectionId) - .ExecuteAsync().Result; + .ExecuteAsync().GetAwaiter().GetResult(); + return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } else if (parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryInteractive || parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow) @@ -200,15 +206,60 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) { result = await AcquireTokenInteractiveDeviceFlowAsync(app, scopes, parameters.ConnectionId, parameters.UserId, parameters.AuthenticationMethod); } + return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); + + } + else if (parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity) + { + return await AcquireManagedIdentityTokenIMDSAsync(parameters); } else { throw SQL.UnsupportedAuthenticationSpecified(parameters.AuthenticationMethod); } - - return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); }); + private async Task AcquireManagedIdentityTokenIMDSAsync(SqlAuthenticationParameters parameters) + { + string accessToken = ""; + // IMDS upgrade time can take up to 70s + int imdsUpgradeTimeInMs = 70 * 1000; + string msiEndpoint = Environment.GetEnvironmentVariable("MSI_ENDPOINT"); + string msiSecret = Environment.GetEnvironmentVariable("MSI_SECRET"); + + StringBuilder urlString = new StringBuilder(); + int retry = 1, maxRetry = 1; + int[] retrySlots; + + /* + * isAzureFunction is used for identifying if the current client application is running in a Virtual Machine + * (without MSI environment variables) or App Service/Function (with MSI environment variables) as the APIs to + * be called for acquiring MSI Token are different for both cases. + */ + bool isAzureFunction = null != msiEndpoint && !string.IsNullOrEmpty(msiEndpoint) + && null != msiSecret && !string.IsNullOrEmpty(msiSecret); + + if(isAzureFunction) + { + urlString.Append(msiEndpoint).Append("?api-version=2019-08-01&resource=").Append(parameters.Resource); + } + else + { + urlString.Append(ActiveDirectoryAuthentication.AZURE_IMDS_REST_URL).Append("&resource=").Append(parameters.Resource); + // Retry acquiring access token upto 20 times due to possible IMDS upgrade (Applies to VM only) + maxRetry = ActiveDirectoryAuthentication.AZURE_IMDS_MAX_RETRY; + } + + retrySlots = new int[maxRetry]; + // Simplified variant of Exponential BackOff + for (int x = 0; x < maxRetry; x++) + { + retrySlots[x] = TdsEnums.INTERNAL_SERVER_ERROR * ((2 << 1) - 1) / 1000; + } + + DateTime expiresOn = DateTime.UtcNow; + return new SqlAuthenticationToken(accessToken, new DateTimeOffset(expiresOn)); + } private async Task AcquireTokenInteractiveDeviceFlowAsync(IPublicClientApplication app, string[] scopes, Guid connectionId, string userId, SqlAuthenticationMethod authenticationMethod) @@ -221,7 +272,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) * MSAL cannot detect if the user navigates away or simply closes the browser. Apps using this technique are encouraged * to define a timeout (via CancellationToken). We recommend a timeout of at least a few minutes, to take into account * cases where the user is prompted to change password or perform 2FA. - * + * * https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/System-Browser-on-.Net-Core#system-browser-experience */ cts.CancelAfter(180000); @@ -242,7 +293,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) { /* * We will use the MSAL Embedded or System web browser which changes by Default in MSAL according to this table: - * + * * Framework Embedded System Default * ------------------------------------------- * .NET Classic Yes Yes^ Embedded @@ -252,9 +303,9 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) * Xamarin.Android Yes Yes System * Xamarin.iOS Yes Yes System * Xamarin.Mac Yes No Embedded - * + * * ^ Requires "http://localhost" redirect URI - * + * * https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/MSAL.NET-uses-web-browser#at-a-glance */ return await app.AcquireTokenInteractive(scopes) @@ -280,11 +331,11 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) private Task DefaultDeviceFlowCallback(DeviceCodeResult result) { - // This will print the message on the console which tells the user where to go sign-in using + // This will print the message on the console which tells the user where to go sign-in using // a separate browser and the code to enter once they sign in. // The AcquireTokenWithDeviceCode() method will poll the server after firing this // device code callback to look for the successful login of the user via that browser. - // This background polling (whose interval and timeout data is also provided as fields in the + // This background polling (whose interval and timeout data is also provided as fields in the // deviceCodeCallback class) will occur until: // * The user has successfully logged in via browser and entered the proper code // * The timeout specified by the server for the lifetime of this code (typically ~15 minutes) has been reached diff --git a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs index f0b08da092..f18db36832 100644 --- a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs @@ -73,6 +73,12 @@ public void ConnectionStringTests(string connectionString) [InlineData("Authentication = ActiveDirectoryIntegrated ")] [InlineData("Authentication = Active Directory Interactive ")] [InlineData("Authentication = ActiveDirectoryInteractive ")] + [InlineData("Authentication = Active Directory Device Code Flow ")] + [InlineData("Authentication = ActiveDirectoryDeviceCodeFlow ")] + [InlineData("Authentication = Active Directory Service Principal ")] + [InlineData("Authentication = ActiveDirectoryServicePrincipal ")] + [InlineData("Authentication = Active Directory Managed Identity ")] + [InlineData("Authentication = ActiveDirectoryManagedIdentity ")] [InlineData("Context Connection = false")] [InlineData("Network Library = dbmssocn")] [InlineData("Network = dbnmpntw")] From f6cc5615fe19c73cf55bc72b90ba376dd2fb2df7 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Wed, 2 Sep 2020 23:38:59 -0700 Subject: [PATCH 02/23] Changes - Part 2 --- .../SqlAuthenticationMethod.xml | 2 +- .../SqlAuthenticationParameters.xml | 3 +- .../src/Microsoft.Data.SqlClient.csproj | 3 + .../Data/Common/DbConnectionStringCommon.cs | 19 +- ...uthenticationProviderManager.NetCoreApp.cs | 3 +- .../Data/SqlClient/SqlConnectionString.cs | 26 +- .../SqlClient/SqlConnectionStringBuilder.cs | 13 - .../src/Microsoft/Data/SqlClient/SqlUtil.cs | 16 + .../src/Microsoft/Data/SqlClient/TdsEnums.cs | 4 - .../src/Microsoft/Data/SqlClient/TdsParser.cs | 2 +- .../netcore/src/Resources/Strings.Designer.cs | 27 + .../netcore/src/Resources/Strings.resx | 9 + .../netfx/ref/Microsoft.Data.SqlClient.cs | 1 - .../netfx/src/Microsoft.Data.SqlClient.csproj | 27 +- .../Data/Common/DbConnectionStringCommon.cs | 32 +- .../SqlAuthenticationProviderManager.cs | 3 +- .../Data/SqlClient/SqlConnectionString.cs | 31 +- .../SqlClient/SqlConnectionStringBuilder.cs | 34 +- .../src/Microsoft/Data/SqlClient/SqlUtil.cs | 16 + .../src/Microsoft/Data/SqlClient/TdsParser.cs | 56 +- .../netfx/src/Resources/Strings.Designer.cs | 3051 +++++++++-------- .../netfx/src/Resources/Strings.resx | 9 + .../ActiveDirectoryAuthenticationProvider.cs | 56 +- ...eManagedIdentityAuthenticationProvider.cs} | 184 +- 24 files changed, 1845 insertions(+), 1782 deletions(-) rename src/Microsoft.Data.SqlClient/{netcore/src/Microsoft/Data/SqlClient/AzureManagedIdentityTokenProvider.cs => src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs} (56%) diff --git a/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml b/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml index 46b9de76ee..bebb2ce127 100644 --- a/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml +++ b/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml @@ -34,7 +34,7 @@ 6 - The authentication method uses Active Directory Managed Identity. Use System Assigned or User Assigned Managed Identity to connect to SQL Database from Azure client environments that have enabled support for Managed Identity. + The authentication method uses Active Directory Managed Identity. Use System Assigned or User Assigned Managed Identity to connect to SQL Database from Azure client environments that have enabled support for Managed Identity. For User Assigned Managed Identity, 'User Id' or 'UID' is required to be set to the object ID of the user identity. 7 diff --git a/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationParameters.xml b/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationParameters.xml index 32e6c6a9bf..520882eb93 100644 --- a/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationParameters.xml +++ b/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationParameters.xml @@ -12,8 +12,7 @@ The user login name/ID. The user password. The connection ID. - Initializes a new instance of the - class using the specified authentication method, server name, database name, resource URI, authority URI, user login name/ID, user password and connection ID. + Initializes a new instance of the class using the specified authentication method, server name, database name, resource URI, authority URI, user login name/ID, user password and connection ID. Gets the authentication method. diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj index ff1db9b5e6..e63a6cce77 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj @@ -78,6 +78,9 @@ Microsoft\Data\SqlClient\ActiveDirectoryAuthenticationProvider.cs + + Microsoft\Data\SqlClient\AzureManagedIdentityAuthenticationProvider.cs + Microsoft\Data\SqlClient\Server\ExtendedClrTypeCode.cs diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index af259dd169..f344200e6e 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -682,17 +682,18 @@ internal static partial class DbConnectionStringDefaults // all // internal const string NamedConnection = ""; + private const string _emptyString = ""; // SqlClient internal const ApplicationIntent ApplicationIntent = Microsoft.Data.SqlClient.ApplicationIntent.ReadWrite; internal const string ApplicationName = "Core Microsoft SqlClient Data Provider"; - internal const string AttachDBFilename = ""; + internal const string AttachDBFilename = _emptyString; internal const int ConnectTimeout = 15; - internal const string CurrentLanguage = ""; - internal const string DataSource = ""; + internal const string CurrentLanguage = _emptyString; + internal const string DataSource = _emptyString; internal const bool Encrypt = false; internal const bool Enlist = true; - internal const string FailoverPartner = ""; - internal const string InitialCatalog = ""; + internal const string FailoverPartner = _emptyString; + internal const string InitialCatalog = _emptyString; internal const bool IntegratedSecurity = false; internal const int LoadBalanceTimeout = 0; // default of 0 means don't use internal const bool MultipleActiveResultSets = false; @@ -700,21 +701,21 @@ internal static partial class DbConnectionStringDefaults internal const int MaxPoolSize = 100; internal const int MinPoolSize = 0; internal const int PacketSize = 8000; - internal const string Password = ""; + internal const string Password = _emptyString; internal const bool PersistSecurityInfo = false; internal const bool Pooling = true; internal const bool TrustServerCertificate = false; internal const string TypeSystemVersion = "Latest"; - internal const string UserID = ""; + internal const string UserID = _emptyString; internal const bool UserInstance = false; internal const bool Replication = false; - internal const string WorkstationID = ""; + internal const string WorkstationID = _emptyString; internal const string TransactionBinding = "Implicit Unbind"; internal const int ConnectRetryCount = 1; internal const int ConnectRetryInterval = 10; internal static readonly SqlAuthenticationMethod Authentication = SqlAuthenticationMethod.NotSpecified; internal const SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting = SqlConnectionColumnEncryptionSetting.Disabled; - internal const string EnclaveAttestationUrl = ""; + internal const string EnclaveAttestationUrl = _emptyString; internal const SqlConnectionAttestationProtocol AttestationProtocol = SqlConnectionAttestationProtocol.NotSpecified; } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs index 5db1ad91f9..7f3d2ac147 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs @@ -16,6 +16,7 @@ internal partial class SqlAuthenticationProviderManager static SqlAuthenticationProviderManager() { var activeDirectoryAuthProvider = new ActiveDirectoryAuthenticationProvider(); + var azureManagedIdentityAuthenticationProvider = new AzureManagedIdentityAuthenticationProvider(); SqlAuthenticationProviderConfigurationSection configurationSection = null; try @@ -40,7 +41,7 @@ static SqlAuthenticationProviderManager() Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); - Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, activeDirectoryAuthProvider); + Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, azureManagedIdentityAuthenticationProvider); } /// diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs index 1170f0d547..bd53caf61b 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs @@ -20,16 +20,17 @@ internal sealed partial class SqlConnectionString : DbConnectionOptions internal static partial class DEFAULT { + private const string _emptyString = ""; internal const ApplicationIntent ApplicationIntent = DbConnectionStringDefaults.ApplicationIntent; internal const string Application_Name = TdsEnums.SQL_PROVIDER_NAME; - internal const string AttachDBFilename = ""; + internal const string AttachDBFilename = _emptyString; internal const int Connect_Timeout = ADP.DefaultConnectionTimeout; - internal const string Current_Language = ""; - internal const string Data_Source = ""; + internal const string Current_Language = _emptyString; + internal const string Data_Source = _emptyString; internal const bool Encrypt = false; internal const bool Enlist = true; - internal const string FailoverPartner = ""; - internal const string Initial_Catalog = ""; + internal const string FailoverPartner = _emptyString; + internal const string Initial_Catalog = _emptyString; internal const bool Integrated_Security = false; internal const int Load_Balance_Timeout = 0; // default of 0 means don't use internal const bool MARS = false; @@ -37,19 +38,19 @@ internal static partial class DEFAULT internal const int Min_Pool_Size = 0; internal const bool MultiSubnetFailover = DbConnectionStringDefaults.MultiSubnetFailover; internal const int Packet_Size = 8000; - internal const string Password = ""; + internal const string Password = _emptyString; internal const bool Persist_Security_Info = false; internal const bool Pooling = true; internal const bool TrustServerCertificate = false; - internal const string Type_System_Version = ""; - internal const string User_ID = ""; + internal const string Type_System_Version = _emptyString; + internal const string User_ID = _emptyString; internal const bool User_Instance = false; internal const bool Replication = false; internal const int Connect_Retry_Count = 1; internal const int Connect_Retry_Interval = 10; internal static readonly SqlAuthenticationMethod Authentication = SqlAuthenticationMethod.NotSpecified; internal const SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting = SqlConnectionColumnEncryptionSetting.Disabled; - internal const string EnclaveAttestationUrl = ""; + internal const string EnclaveAttestationUrl = _emptyString; internal static readonly SqlConnectionAttestationProtocol AttestationProtocol = SqlConnectionAttestationProtocol.NotSpecified; } @@ -295,8 +296,6 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G _userID = ConvertValueToString(KEY.User_ID, DEFAULT.User_ID); _workstationId = ConvertValueToString(KEY.Workstation_Id, null); - - if (_loadBalanceTimeout < 0) { throw ADP.InvalidConnectionOptionValue(KEY.Load_Balance_Timeout); @@ -326,7 +325,6 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G throw SQL.InvalidPacketSizeValue(); } - ValidateValueLength(_applicationName, TdsEnums.MAXLEN_APPNAME, KEY.Application_Name); ValidateValueLength(_currentLanguage, TdsEnums.MAXLEN_LANGUAGE, KEY.Current_Language); ValidateValueLength(_dataSource, TdsEnums.MAXLEN_SERVERNAME, KEY.Data_Source); @@ -468,9 +466,9 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G throw SQL.DeviceFlowWithUsernamePassword(); } - if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && (HasUserIdKeyword || HasPasswordKeyword)) + if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && (HasPasswordKeyword)) { - throw SQL.ManagedIdentityWithUsernamePassword(); + throw SQL.ManagedIdentityWithPassword(); } } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionStringBuilder.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionStringBuilder.cs index 2353243a1a..ac12635123 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionStringBuilder.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionStringBuilder.cs @@ -29,7 +29,6 @@ private enum Keywords PersistSecurityInfo, UserID, Password, - Enlist, Pooling, MinPoolSize, @@ -37,10 +36,8 @@ private enum Keywords #if netcoreapp PoolBlockingPeriod, #endif - MultipleActiveResultSets, Replication, - ConnectTimeout, Encrypt, TrustServerCertificate, @@ -48,27 +45,18 @@ private enum Keywords PacketSize, TypeSystemVersion, Authentication, - ApplicationName, CurrentLanguage, WorkstationID, - UserInstance, - TransactionBinding, - ApplicationIntent, - MultiSubnetFailover, - ConnectRetryCount, - ConnectRetryInterval, - ColumnEncryptionSetting, EnclaveAttestationUrl, AttestationProtocol, - // keep the count value last KeywordsCount } @@ -966,7 +954,6 @@ private object GetAt(Keywords index) return EnclaveAttestationUrl; case Keywords.AttestationProtocol: return AttestationProtocol; - default: Debug.Fail("unexpected keyword"); throw UnsupportedKeyword(s_validKeywords[(int)index]); diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs index ebfe96b769..1195a90690 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs @@ -281,6 +281,10 @@ internal static Exception DeviceFlowWithUsernamePassword() { return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_DeviceFlowWithUsernamePassword)); } + internal static Exception ManagedIdentityWithPassword() + { + return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword)); + } static internal Exception SettingIntegratedWithCredential() { return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingIntegratedWithCredential)); @@ -293,6 +297,10 @@ static internal Exception SettingDeviceFlowWithCredential() { return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingDeviceFlowWithCredential)); } + static internal Exception SettingManagedIdentityWithCredential() + { + return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingManagedIdentityWithCredential)); + } static internal Exception SettingCredentialWithIntegratedArgument() { return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithIntegrated)); @@ -305,6 +313,10 @@ static internal Exception SettingCredentialWithDeviceFlowArgument() { return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithDeviceFlow)); } + static internal Exception SettingCredentialWithManagedIdentityArgument() + { + return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity)); + } static internal Exception SettingCredentialWithIntegratedInvalid() { return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithIntegrated)); @@ -317,6 +329,10 @@ static internal Exception SettingCredentialWithDeviceFlowInvalid() { return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithDeviceFlow)); } + static internal Exception SettingCredentialWithManagedIdentityInvalid() + { + return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity)); + } internal static Exception NullEmptyTransactionName() { return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_NullEmptyTransactionName)); diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs index 15b1f780d8..5269d793a7 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs @@ -1154,11 +1154,7 @@ internal enum TransparentNetworkResolutionState internal class ActiveDirectoryAuthentication { internal const string AdoClientId = "2fd908ad-0664-4344-b9be-cd3e8b574c38"; - internal const string AZURE_IMDS_REST_URL = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01"; internal const string MSALGetAccessTokenFunctionName = "AcquireToken"; - - // Retry acquiring access token upto 20 times due to possible IMDS upgrade (Applies to VM only) - internal const int AZURE_IMDS_MAX_RETRY = 20; } // Fields in the first resultset of "sp_describe_parameter_encryption". diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs index 8a8b00243b..9d7f575ea1 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs @@ -398,7 +398,7 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) SqlClientEventSource.Log.TryTraceEvent(" Active Directory Device Code Flow authentication"); break; case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: - SqlClientEventSource.Log.TraceEvent(" Active Directory Managed Identity authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Active Directory Managed Identity authentication"); break; case SqlAuthenticationMethod.SqlPassword: SqlClientEventSource.Log.TryTraceEvent(" SQL Password authentication"); diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs index 438423fa71..aade217749 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs @@ -2796,6 +2796,15 @@ internal class Strings { } } + /// + /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords.. + /// + internal static string SQL_ManagedIdentityWithPassword { + get { + return ResourceManager.GetString("SQL_ManagedIdentityWithPassword", resourceCulture); + } + } + /// /// Looks up a localized string similar to The connection does not support MultipleActiveResultSets.. /// @@ -3075,6 +3084,15 @@ internal class Strings { } } + /// + /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string.. + /// + internal static string SQL_SettingCredentialWithManagedIdentity { + get { + return ResourceManager.GetString("SQL_SettingCredentialWithManagedIdentity", resourceCulture); + } + } + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set.. /// @@ -3102,6 +3120,15 @@ internal class Strings { } } + /// + /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set.. + /// + internal static string SQL_SettingManagedIdentityWithCredential { + get { + return ResourceManager.GetString("SQL_SettingManagedIdentityWithCredential", resourceCulture); + } + } + /// /// Looks up a localized string similar to A severe error occurred on the current command. The results, if any, should be discarded.. /// diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx index b94391deac..ddaab17f57 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx +++ b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx @@ -411,6 +411,9 @@ Cannot use 'Authentication=Active Directory Device Code Flow' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords. + + Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords. + The instance of SQL Server you attempted to connect to requires encryption but this machine does not support it. @@ -1902,7 +1905,13 @@ Cannot set the Credential property if 'Authentication=Active Directory Device Code Flow' has been specified in the connection string. + + Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string. + Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set. + + Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set. + diff --git a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs index 2cdfd456ff..d6a7de84c4 100644 --- a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs +++ b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs @@ -952,7 +952,6 @@ public sealed partial class SqlConnectionStringBuilder : System.Data.Common.DbCo [System.ComponentModel.DisplayNameAttribute("Attestation Protocol")] [System.ComponentModel.RefreshPropertiesAttribute(System.ComponentModel.RefreshProperties.All)] public Microsoft.Data.SqlClient.SqlConnectionAttestationProtocol AttestationProtocol { get { throw null; } set { } } - /// [System.ComponentModel.DisplayNameAttribute("Encrypt")] [System.ComponentModel.RefreshPropertiesAttribute(System.ComponentModel.RefreshProperties.All)] diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj index a63ed87bce..22a8d07392 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj @@ -124,6 +124,9 @@ Microsoft\Data\SqlClient\ActiveDirectoryAuthenticationTimeoutRetryHelper.cs + + Microsoft\Data\SqlClient\AzureManagedIdentityAuthenticationProvider.cs + Microsoft\Data\SqlClient\ApplicationIntent.cs @@ -318,10 +321,16 @@ - - + + Component + + + Component + - + + Component + @@ -329,7 +338,9 @@ - + + Component + @@ -399,7 +410,9 @@ - + + Component + @@ -442,10 +455,10 @@ - + True True - $(ResxFileName).resx + Strings.resx diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index ee22024053..ab9350d101 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -1000,16 +1000,16 @@ internal static class DbConnectionStringDefaults { // all // internal const string NamedConnection = ""; - + private const string _emptyString = ""; // Odbc - internal const string Driver = ""; - internal const string Dsn = ""; + internal const string Driver = _emptyString; + internal const string Dsn = _emptyString; // OleDb internal const bool AdoNetPooler = false; - internal const string FileName = ""; + internal const string FileName = _emptyString; internal const int OleDbServices = ~(/*DBPROPVAL_OS_AGR_AFTERSESSION*/0x00000008 | /*DBPROPVAL_OS_CLIENTCURSOR*/0x00000004); // -13 - internal const string Provider = ""; + internal const string Provider = _emptyString; // OracleClient internal const bool Unicode = false; @@ -1019,16 +1019,16 @@ internal static class DbConnectionStringDefaults internal const ApplicationIntent ApplicationIntent = Microsoft.Data.SqlClient.ApplicationIntent.ReadWrite; internal const string ApplicationName = "Framework Microsoft SqlClient Data Provider"; internal const bool AsynchronousProcessing = false; - internal const string AttachDBFilename = ""; + internal const string AttachDBFilename = _emptyString; internal const int ConnectTimeout = 15; internal const bool ConnectionReset = true; internal const bool ContextConnection = false; - internal const string CurrentLanguage = ""; - internal const string DataSource = ""; + internal const string CurrentLanguage = _emptyString; + internal const string DataSource = _emptyString; internal const bool Encrypt = false; internal const bool Enlist = true; - internal const string FailoverPartner = ""; - internal const string InitialCatalog = ""; + internal const string FailoverPartner = _emptyString; + internal const string InitialCatalog = _emptyString; internal const bool IntegratedSecurity = false; internal const int LoadBalanceTimeout = 0; // default of 0 means don't use internal const bool MultipleActiveResultSets = false; @@ -1036,25 +1036,25 @@ internal static class DbConnectionStringDefaults internal static readonly bool TransparentNetworkIPResolution = LocalAppContextSwitches.DisableTNIRByDefault ? false : true; internal const int MaxPoolSize = 100; internal const int MinPoolSize = 0; - internal const string NetworkLibrary = ""; + internal const string NetworkLibrary = _emptyString; internal const int PacketSize = 8000; - internal const string Password = ""; + internal const string Password = _emptyString; internal const bool PersistSecurityInfo = false; internal const bool Pooling = true; internal const bool TrustServerCertificate = false; internal const string TypeSystemVersion = "Latest"; - internal const string UserID = ""; + internal const string UserID = _emptyString; internal const bool UserInstance = false; internal const bool Replication = false; - internal const string WorkstationID = ""; + internal const string WorkstationID = _emptyString; internal const string TransactionBinding = "Implicit Unbind"; internal const int ConnectRetryCount = 1; internal const int ConnectRetryInterval = 10; internal static readonly SqlAuthenticationMethod Authentication = SqlAuthenticationMethod.NotSpecified; internal static readonly SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting = SqlConnectionColumnEncryptionSetting.Disabled; - internal const string EnclaveAttestationUrl = ""; + internal const string EnclaveAttestationUrl = _emptyString; internal const SqlConnectionAttestationProtocol AttestationProtocol = SqlConnectionAttestationProtocol.NotSpecified; - internal const string Certificate = ""; + internal const string Certificate = _emptyString; internal const PoolBlockingPeriod PoolBlockingPeriod = SqlClient.PoolBlockingPeriod.Auto; } diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs index da56f9dfb3..734ffc6aff 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs @@ -25,6 +25,7 @@ internal class SqlAuthenticationProviderManager static SqlAuthenticationProviderManager() { var activeDirectoryAuthProvider = new ActiveDirectoryAuthenticationProvider(); + var azureManagedIdentityAuthenticationProvider = new AzureManagedIdentityAuthenticationProvider(); SqlAuthenticationProviderConfigurationSection configurationSection = null; try { @@ -47,7 +48,7 @@ static SqlAuthenticationProviderManager() Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); - Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, activeDirectoryAuthProvider); + Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, azureManagedIdentityAuthenticationProvider); } public static readonly SqlAuthenticationProviderManager Instance; diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs index f6518a96d1..e43187c3a1 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs @@ -19,20 +19,21 @@ internal sealed class SqlConnectionString : DbConnectionOptions internal static class DEFAULT { + private const string _emptyString = ""; internal const ApplicationIntent ApplicationIntent = DbConnectionStringDefaults.ApplicationIntent; internal const string Application_Name = TdsEnums.SQL_PROVIDER_NAME; internal const bool Asynchronous = false; - internal const string AttachDBFilename = ""; + internal const string AttachDBFilename = _emptyString; internal const PoolBlockingPeriod PoolBlockingPeriod = DbConnectionStringDefaults.PoolBlockingPeriod; internal const int Connect_Timeout = ADP.DefaultConnectionTimeout; internal const bool Connection_Reset = true; internal const bool Context_Connection = false; - internal const string Current_Language = ""; - internal const string Data_Source = ""; + internal const string Current_Language = _emptyString; + internal const string Data_Source = _emptyString; internal const bool Encrypt = false; internal const bool Enlist = true; - internal const string FailoverPartner = ""; - internal const string Initial_Catalog = ""; + internal const string FailoverPartner = _emptyString; + internal const string Initial_Catalog = _emptyString; internal const bool Integrated_Security = false; internal const int Load_Balance_Timeout = 0; // default of 0 means don't use internal const bool MARS = false; @@ -40,24 +41,25 @@ internal static class DEFAULT internal const int Min_Pool_Size = 0; internal const bool MultiSubnetFailover = DbConnectionStringDefaults.MultiSubnetFailover; internal static readonly bool TransparentNetworkIPResolution = DbConnectionStringDefaults.TransparentNetworkIPResolution; - internal const string Network_Library = ""; + internal const string Network_Library = _emptyString; internal const int Packet_Size = 8000; - internal const string Password = ""; + internal const string Password = _emptyString; internal const bool Persist_Security_Info = false; internal const bool Pooling = true; internal const bool TrustServerCertificate = false; - internal const string Type_System_Version = ""; - internal const string User_ID = ""; + internal const string Type_System_Version = _emptyString; + internal const string User_ID = _emptyString; internal const bool User_Instance = false; internal const bool Replication = false; internal const int Connect_Retry_Count = 1; internal const int Connect_Retry_Interval = 10; internal static readonly SqlAuthenticationMethod Authentication = SqlAuthenticationMethod.NotSpecified; internal static readonly SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting = SqlConnectionColumnEncryptionSetting.Disabled; - internal const string EnclaveAttestationUrl = ""; + internal const string EnclaveAttestationUrl = _emptyString; internal static readonly SqlConnectionAttestationProtocol AttestationProtocol = SqlConnectionAttestationProtocol.NotSpecified; + #if ADONET_CERT_AUTH - internal const string Certificate = ""; + internal const string Certificate = _emptyString; #endif } @@ -104,6 +106,7 @@ internal static class KEY internal const string Connect_Retry_Count = "connect retry count"; internal const string Connect_Retry_Interval = "connect retry interval"; internal const string Authentication = "authentication"; + #if ADONET_CERT_AUTH internal const string Certificate = "certificate"; #endif @@ -556,9 +559,9 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G throw SQL.DeviceFlowWithUsernamePassword(); } - if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && (HasUserIdKeyword || HasPasswordKeyword)) + if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && (HasPasswordKeyword)) { - throw SQL.ManagedIdentityWithUsernamePassword(); + throw SQL.ManagedIdentityWithPassword(); } #if ADONET_CERT_AUTH @@ -637,7 +640,7 @@ internal SqlConnectionString(SqlConnectionString connectionOptions, string dataS _enclaveAttestationUrl = connectionOptions._enclaveAttestationUrl; _attestationProtocol = connectionOptions._attestationProtocol; #if ADONET_CERT_AUTH - _certificate = connectionOptions._certificate; + _certificate = connectionOptions._certificate; #endif ValidateValueLength(_dataSource, TdsEnums.MAXLEN_SERVERNAME, KEY.Data_Source); } diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionStringBuilder.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionStringBuilder.cs index 5cf2cfdb9a..f32839a187 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionStringBuilder.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionStringBuilder.cs @@ -21,11 +21,9 @@ namespace Microsoft.Data.SqlClient [System.ComponentModel.TypeConverterAttribute(typeof(SqlConnectionStringBuilder.SqlConnectionStringBuilderConverter))] public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder { - private enum Keywords { // specific ordering for ConnectionString output construction // NamedConnection, - DataSource, FailoverPartner, AttachDBFilename, @@ -34,18 +32,15 @@ private enum Keywords PersistSecurityInfo, UserID, Password, - Enlist, Pooling, MinPoolSize, MaxPoolSize, PoolBlockingPeriod, - AsynchronousProcessing, ConnectionReset, MultipleActiveResultSets, Replication, - ConnectTimeout, Encrypt, TrustServerCertificate, @@ -53,34 +48,21 @@ private enum Keywords NetworkLibrary, PacketSize, TypeSystemVersion, - Authentication, - ApplicationName, CurrentLanguage, WorkstationID, - UserInstance, - ContextConnection, - TransactionBinding, - ApplicationIntent, - MultiSubnetFailover, - TransparentNetworkIPResolution, - ConnectRetryCount, - ConnectRetryInterval, - ColumnEncryptionSetting, - EnclaveAttestationUrl, AttestationProtocol, - #if ADONET_CERT_AUTH Certificate, #endif @@ -107,7 +89,6 @@ private enum Keywords private string _typeSystemVersion = DbConnectionStringDefaults.TypeSystemVersion; private string _userID = DbConnectionStringDefaults.UserID; private string _workstationID = DbConnectionStringDefaults.WorkstationID; - private int _connectTimeout = DbConnectionStringDefaults.ConnectTimeout; private int _loadBalanceTimeout = DbConnectionStringDefaults.LoadBalanceTimeout; private int _maxPoolSize = DbConnectionStringDefaults.MaxPoolSize; @@ -115,7 +96,6 @@ private enum Keywords private int _packetSize = DbConnectionStringDefaults.PacketSize; private int _connectRetryCount = DbConnectionStringDefaults.ConnectRetryCount; private int _connectRetryInterval = DbConnectionStringDefaults.ConnectRetryInterval; - private bool _asynchronousProcessing = DbConnectionStringDefaults.AsynchronousProcessing; private bool _connectionReset = DbConnectionStringDefaults.ConnectionReset; private bool _contextConnection = DbConnectionStringDefaults.ContextConnection; @@ -137,7 +117,7 @@ private enum Keywords private PoolBlockingPeriod _poolBlockingPeriod = DbConnectionStringDefaults.PoolBlockingPeriod; #if ADONET_CERT_AUTH - private string _certificate = DbConnectionStringDefaults.Certificate; + private string _certificate = DbConnectionStringDefaults.Certificate; #endif static SqlConnectionStringBuilder() @@ -183,8 +163,8 @@ static SqlConnectionStringBuilder() validKeywords[(int)Keywords.ColumnEncryptionSetting] = DbConnectionStringKeywords.ColumnEncryptionSetting; validKeywords[(int)Keywords.EnclaveAttestationUrl] = DbConnectionStringKeywords.EnclaveAttestationUrl; validKeywords[(int)Keywords.AttestationProtocol] = DbConnectionStringKeywords.AttestationProtocol; -#if ADONET_CERT_AUTH - validKeywords[(int)Keywords.Certificate] = DbConnectionStringKeywords.Certificate; +#if ADONET_CERT_AUTH + validKeywords[(int)Keywords.Certificate] = DbConnectionStringKeywords.Certificate; #endif _validKeywords = validKeywords; @@ -229,8 +209,8 @@ static SqlConnectionStringBuilder() hash.Add(DbConnectionStringKeywords.ColumnEncryptionSetting, Keywords.ColumnEncryptionSetting); hash.Add(DbConnectionStringKeywords.EnclaveAttestationUrl, Keywords.EnclaveAttestationUrl); hash.Add(DbConnectionStringKeywords.AttestationProtocol, Keywords.AttestationProtocol); -#if ADONET_CERT_AUTH - hash.Add(DbConnectionStringKeywords.Certificate, Keywords.Certificate); +#if ADONET_CERT_AUTH + hash.Add(DbConnectionStringKeywords.Certificate, Keywords.Certificate); #endif hash.Add(DbConnectionStringSynonyms.APP, Keywords.ApplicationName); hash.Add(DbConnectionStringSynonyms.APPLICATIONINTENT, Keywords.ApplicationIntent); @@ -369,7 +349,9 @@ public SqlConnectionStringBuilder(string connectionString) : base() AttestationProtocol = ConvertToAttestationProtocol(keyword, value); break; #if ADONET_CERT_AUTH - case Keywords.Certificate: Certificate = ConvertToString(value); break; + case Keywords.Certificate: + Certificate = ConvertToString(value); + break; #endif case Keywords.AsynchronousProcessing: AsynchronousProcessing = ConvertToBoolean(value); diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs index 6318a1491f..a552c42b51 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs @@ -333,6 +333,10 @@ static internal Exception DeviceFlowWithUsernamePassword() { return ADP.Argument(StringsHelper.GetString(Strings.SQL_DeviceFlowWithUsernamePassword)); } + static internal Exception ManagedIdentityWithPassword() + { + return ADP.Argument(StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword)); + } static internal Exception SettingIntegratedWithCredential() { return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingIntegratedWithCredential)); @@ -345,6 +349,10 @@ static internal Exception SettingDeviceFlowWithCredential() { return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingDeviceFlowWithCredential)); } + static internal Exception SettingManagedIdentityWithCredential() + { + return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingManagedIdentityWithCredential)); + } static internal Exception SettingCredentialWithIntegratedArgument() { return ADP.Argument(StringsHelper.GetString(Strings.SQL_SettingCredentialWithIntegrated)); @@ -357,6 +365,10 @@ static internal Exception SettingCredentialWithDeviceFlowArgument() { return ADP.Argument(StringsHelper.GetString(Strings.SQL_SettingCredentialWithDeviceFlow)); } + static internal Exception SettingCredentialWithManagedIdentityArgument() + { + return ADP.Argument(StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity)); + } static internal Exception SettingCredentialWithIntegratedInvalid() { return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingCredentialWithIntegrated)); @@ -369,6 +381,10 @@ static internal Exception SettingCredentialWithDeviceFlowInvalid() { return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingCredentialWithDeviceFlow)); } + static internal Exception SettingCredentialWithManagedIdentityInvalid() + { + return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity)); + } static internal Exception InvalidSQLServerVersionUnknown() { return ADP.DataAdapter(StringsHelper.GetString(Strings.SQL_InvalidSQLServerVersionUnknown)); diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs index 7d880aa2e9..ba77bb930d 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs @@ -526,7 +526,7 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) LoadSSPILibrary(); // now allocate proper length of buffer _sniSpnBuffer = new byte[SNINativeMethodWrapper.SniMaxComposedSpnLength]; - SqlClientEventSource.Log.TryTraceEvent(" SSPI or Active Directory Authentication Library for SQL Server based integrated authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" SSPI or Active Directory Authentication Library for SQL Server based integrated authentication"); } else { @@ -534,28 +534,28 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) switch (authType) { case SqlAuthenticationMethod.ActiveDirectoryPassword: - SqlClientEventSource.Log.TryTraceEvent(" Active Directory Password authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Active Directory Password authentication"); break; case SqlAuthenticationMethod.ActiveDirectoryIntegrated: - SqlClientEventSource.Log.TryTraceEvent(" Active Directory Integrated authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Active Directory Integrated authentication"); break; case SqlAuthenticationMethod.ActiveDirectoryInteractive: - SqlClientEventSource.Log.TryTraceEvent(" Active Directory Interactive authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Active Directory Interactive authentication"); break; case SqlAuthenticationMethod.ActiveDirectoryServicePrincipal: - SqlClientEventSource.Log.TryTraceEvent(" Active Directory Service Principal authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Active Directory Service Principal authentication"); break; case SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow: - SqlClientEventSource.Log.TryTraceEvent(" Active Directory Device Code Flow authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Active Directory Device Code Flow authentication"); break; case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: - SqlClientEventSource.Log.TraceEvent(" Active Directory Managed Identity authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Active Directory Managed Identity authentication"); break; case SqlAuthenticationMethod.SqlPassword: - SqlClientEventSource.Log.TryTraceEvent(" SQL Password authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" SQL Password authentication"); break; default: - SqlClientEventSource.Log.TryTraceEvent(" SQL authentication", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" SQL authentication"); break; } } @@ -601,7 +601,7 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) // don't, the memory for the connection object might not be accurate and thus // a bad error could be returned (as it was when it was freed to early for me). _physicalStateObj.Dispose(); - SqlClientEventSource.Log.TryTraceEvent(" Login failure", "ERR|SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Login failure"); ThrowExceptionAndWarning(_physicalStateObj); Debug.Fail("SNI returned status != success, but no error thrown?"); } @@ -634,21 +634,21 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) AssignPendingDNSInfo(serverInfo.UserProtocol, FQDNforDNSCahce); // UNDONE - send "" for instance now, need to fix later - SqlClientEventSource.Log.TryTraceEvent(" Sending prelogin handshake", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Sending prelogin handshake"); SendPreLoginHandshake(instanceName, encrypt, !string.IsNullOrEmpty(certificate), useOriginalAddressInfo); _connHandler.TimeoutErrorInternal.EndPhase(SqlConnectionTimeoutErrorPhase.SendPreLoginHandshake); _connHandler.TimeoutErrorInternal.SetAndBeginPhase(SqlConnectionTimeoutErrorPhase.ConsumePreLoginHandshake); _physicalStateObj.SniContext = SniContext.Snix_PreLogin; - SqlClientEventSource.Log.TryTraceEvent(" Consuming prelogin handshake", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Consuming prelogin handshake"); PreLoginHandshakeStatus status = ConsumePreLoginHandshake(authType, encrypt, trustServerCert, integratedSecurity, serverCallback, clientCallback, out marsCapable, out _connHandler._fedAuthRequired); if (status == PreLoginHandshakeStatus.InstanceFailure) { - SqlClientEventSource.Log.TryTraceEvent(" Prelogin handshake unsuccessful. Reattempting prelogin handshake", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Prelogin handshake unsuccessful. Reattempting prelogin handshake"); _physicalStateObj.Dispose(); // Close previous connection // On Instance failure re-connect and flush SNI named instance cache. @@ -658,14 +658,14 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) if (TdsEnums.SNI_SUCCESS != _physicalStateObj.Status) { _physicalStateObj.AddError(ProcessSNIError(_physicalStateObj)); - SqlClientEventSource.Log.TryTraceEvent(" Login failure", "ERR|SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Login failure"); ThrowExceptionAndWarning(_physicalStateObj); } UInt32 retCode = SNINativeMethodWrapper.SniGetConnectionId(_physicalStateObj.Handle, ref _connHandler._clientConnectionId); Debug.Assert(retCode == TdsEnums.SNI_SUCCESS, "Unexpected failure state upon calling SniGetConnectionId"); - SqlClientEventSource.Log.TryTraceEvent(" Sending prelogin handshake", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Sending prelogin handshake"); // for DNS Caching phase 1 AssignPendingDNSInfo(serverInfo.UserProtocol, FQDNforDNSCahce); @@ -678,11 +678,11 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) // one pre-login packet and know we are connecting to Shiloh. if (status == PreLoginHandshakeStatus.InstanceFailure) { - SqlClientEventSource.Log.TryTraceEvent(" Prelogin handshake unsuccessful. Login failure", "ERR|SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Prelogin handshake unsuccessful. Login failure"); throw SQL.InstanceFailure(); } } - SqlClientEventSource.Log.TryTraceEvent(" Prelogin handshake successful", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Prelogin handshake successful"); if (_fMARS && marsCapable) { @@ -2623,7 +2623,7 @@ internal bool TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataRead } case TdsEnums.SQLLOGINACK: { - SqlClientEventSource.Log.TryTraceEvent(" Received login acknowledgement token", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Received login acknowledgement token"); SqlLoginAck ack; if (!TryProcessLoginAck(stateObj, out ack)) @@ -2646,7 +2646,7 @@ internal bool TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataRead { _connHandler._federatedAuthenticationInfoReceived = true; SqlFedAuthInfo info; - SqlClientEventSource.Log.TryTraceEvent(" Received federated authentication info token", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Received federated authentication info token"); if (!TryProcessFedAuthInfo(stateObj, tokenLength, out info)) { @@ -4131,7 +4131,7 @@ private bool TryProcessFedAuthInfo(TdsParserStateObject stateObj, int tokenLen, if (!stateObj.TryReadUInt32(out optionsCount)) { - SqlClientEventSource.Log.TryTraceEvent(" Failed to read CountOfInfoIDs in FEDAUTHINFO token stream.", "ERR"); + SqlClientEventSource.Log.TryTraceEvent(" Failed to read CountOfInfoIDs in FEDAUTHINFO token stream."); throw SQL.ParsingError(ParsingErrorState.FedAuthInfoFailedToReadCountOfInfoIds); } @@ -4188,7 +4188,7 @@ private bool TryProcessFedAuthInfo(TdsParserStateObject stateObj, int tokenLen, // if dataOffset points to a region within FedAuthInfoOpt or after the end of the token, throw if (dataOffset < totalOptionsSize || dataOffset >= tokenLen) { - SqlClientEventSource.Log.TryTraceEvent(" FedAuthInfoDataOffset points to an invalid location.", "ERR"); + SqlClientEventSource.Log.TryTraceEvent(" FedAuthInfoDataOffset points to an invalid location."); throw SQL.ParsingErrorOffset(ParsingErrorState.FedAuthInfoInvalidOffset, unchecked((int)dataOffset)); } @@ -4200,12 +4200,12 @@ private bool TryProcessFedAuthInfo(TdsParserStateObject stateObj, int tokenLen, } catch (ArgumentOutOfRangeException e) { - SqlClientEventSource.Log.TryTraceEvent(" Failed to read FedAuthInfoData.", "ERR"); + SqlClientEventSource.Log.TryTraceEvent(" Failed to read FedAuthInfoData."); throw SQL.ParsingError(ParsingErrorState.FedAuthInfoFailedToReadData, e); } catch (ArgumentException e) { - SqlClientEventSource.Log.TryTraceEvent(" FedAuthInfoData is not in unicode format.", "ERR"); + SqlClientEventSource.Log.TryTraceEvent(" FedAuthInfoData is not in unicode format."); throw SQL.ParsingError(ParsingErrorState.FedAuthInfoDataNotUnicode, e); } SqlClientEventSource.Log.TryAdvancedTraceEvent(" FedAuthInfoData: {0}", data); @@ -4227,7 +4227,7 @@ private bool TryProcessFedAuthInfo(TdsParserStateObject stateObj, int tokenLen, } else { - SqlClientEventSource.Log.TryTraceEvent(" FEDAUTHINFO token stream is not long enough to contain the data it claims to.", "ERR"); + SqlClientEventSource.Log.TryTraceEvent(" FEDAUTHINFO token stream is not long enough to contain the data it claims to."); throw SQL.ParsingErrorLength(ParsingErrorState.FedAuthInfoLengthTooShortForData, tokenLen); } @@ -4235,7 +4235,7 @@ private bool TryProcessFedAuthInfo(TdsParserStateObject stateObj, int tokenLen, if (string.IsNullOrWhiteSpace(tempFedAuthInfo.stsurl) || string.IsNullOrWhiteSpace(tempFedAuthInfo.spn)) { // We should be receiving both stsurl and spn - SqlClientEventSource.Log.TryTraceEvent(" FEDAUTHINFO token stream does not contain both STSURL and SPN.", "ERR"); + SqlClientEventSource.Log.TryTraceEvent(" FEDAUTHINFO token stream does not contain both STSURL and SPN."); throw SQL.ParsingError(ParsingErrorState.FedAuthInfoDoesNotContainStsurlAndSpn); } @@ -9124,7 +9124,7 @@ internal int WriteSQLDNSCachingFeatureRequest(bool write /* if false just calcul }; if ((requestedFeatures & TdsEnums.FeatureExtension.FedAuth) != 0) { - SqlClientEventSource.Log.TryTraceEvent(" Sending federated authentication feature request", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Sending federated authentication feature request"); Debug.Assert(fedAuthFeatureExtensionData != null, "fedAuthFeatureExtensionData should not null."); WriteFedAuthFeatureRequest(fedAuthFeatureExtensionData.Value, write: true); }; @@ -9203,7 +9203,7 @@ internal void SendFedAuthToken(SqlFedAuthToken fedAuthToken) { Debug.Assert(fedAuthToken != null, "fedAuthToken cannot be null"); Debug.Assert(fedAuthToken.accessToken != null, "fedAuthToken.accessToken cannot be null"); - SqlClientEventSource.Log.TryTraceEvent(" Sending federated authentication token", "SEC"); + SqlClientEventSource.Log.TryTraceEvent(" Sending federated authentication token"); _physicalStateObj._outputMessageType = TdsEnums.MT_FEDAUTH; @@ -9627,7 +9627,7 @@ internal void FailureCleanup(TdsParserStateObject stateObj, Exception e) _connHandler.ThreadHasParserLockForClose = originalThreadHasParserLock; } } - SqlClientEventSource.Log.TryTraceEvent(" Exception rethrown.", "ERR"); + SqlClientEventSource.Log.TryTraceEvent(" Exception rethrown."); } internal Task TdsExecuteSQLBatch(string text, int timeout, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, bool sync, bool callerHasConnectionLock = false, byte[] enclavePackage = null) diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs index 0501c22c3e..ab73f53ee6 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs @@ -10,8 +10,8 @@ namespace System { using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -23,15 +23,15 @@ namespace System { [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Strings { - + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Strings() { } - + /// /// Returns the cached ResourceManager instance used by this class. /// @@ -45,7 +45,7 @@ internal class Strings { return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. @@ -59,7 +59,7 @@ internal class Strings { resourceCulture = value; } } - + /// /// Looks up a localized string similar to Data adapter mapping error.. /// @@ -68,7 +68,7 @@ internal class Strings { return ResourceManager.GetString("ADP_AdapterMappingExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Ascending. /// @@ -77,7 +77,7 @@ internal class Strings { return ResourceManager.GetString("ADP_Ascending", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified parameter name '{0}' is not valid.. /// @@ -86,7 +86,7 @@ internal class Strings { return ResourceManager.GetString("ADP_BadParameterName", resourceCulture); } } - + /// /// Looks up a localized string similar to The method '{0}' cannot be called more than once for the same execution.. /// @@ -95,7 +95,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CalledTwice", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid operation. The connection is closed.. /// @@ -104,7 +104,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ClosedConnectionError", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid index {0} for this {1} with Count={2}.. /// @@ -113,7 +113,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionIndexInt32", resourceCulture); } } - + /// /// Looks up a localized string similar to A {0} with {1} '{2}' is not contained by this {3}.. /// @@ -122,7 +122,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionIndexString", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} only accepts non-null {1} type objects, not {2} objects.. /// @@ -131,7 +131,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionInvalidType", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} is already contained by another {1}.. /// @@ -140,7 +140,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionIsNotParent", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} with is already contained by this {1}.. /// @@ -149,7 +149,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionIsParent", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} only accepts non-null {1} type objects.. /// @@ -158,7 +158,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionNullValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Attempted to remove an {0} that is not contained by this {1}.. /// @@ -167,7 +167,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionRemoveInvalidObject", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0}.{1} is required to be unique, '{2}' already exists in the collection.. /// @@ -176,7 +176,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionUniqueValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The column mapping from SourceColumn '{0}' failed because the DataColumn '{1}' is a computed column.. /// @@ -185,7 +185,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ColumnSchemaExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to Inconvertible type mismatch between SourceColumn '{0}' of {1} and the DataColumn '{2}' of {3}.. /// @@ -194,7 +194,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ColumnSchemaMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing the DataColumn '{0}' for the SourceColumn '{2}'.. /// @@ -203,7 +203,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ColumnSchemaMissing1", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing the DataColumn '{0}' in the DataTable '{1}' for the SourceColumn '{2}'.. /// @@ -212,7 +212,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ColumnSchemaMissing2", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}: CommandText property has not been initialized. /// @@ -221,7 +221,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CommandTextRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to retrieve the ComputerNameDnsFullyQualified, {0}.. /// @@ -230,7 +230,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ComputerNameEx", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a connection.. /// @@ -239,7 +239,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnecitonRequired_UpdateRows", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection was not closed. {0}. /// @@ -248,7 +248,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionAlreadyOpen", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection has been disabled.. /// @@ -257,7 +257,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionIsDisabled", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}: Connection property has not been initialized.. /// @@ -266,7 +266,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a connection object. The Connection property has not been initialized.. /// @@ -275,7 +275,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Batch", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the command clone to have a connection object. The Connection property of the command clone has not been initialized.. /// @@ -284,7 +284,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Clone", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the DeleteCommand to have a connection object. The Connection property of the DeleteCommand has not been initialized.. /// @@ -293,7 +293,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Delete", resourceCulture); } } - + /// /// Looks up a localized string similar to Fill: SelectCommand.Connection property has not been initialized.. /// @@ -302,7 +302,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Fill", resourceCulture); } } - + /// /// Looks up a localized string similar to FillPage: SelectCommand.Connection property has not been initialized.. /// @@ -311,7 +311,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_FillPage", resourceCulture); } } - + /// /// Looks up a localized string similar to FillSchema: SelectCommand.Connection property has not been initialized.. /// @@ -320,7 +320,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_FillSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the InsertCommand to have a connection object. The Connection property of the InsertCommand has not been initialized.. /// @@ -329,7 +329,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Insert", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the UpdateCommand to have a connection object. The Connection property of the UpdateCommand has not been initialized.. /// @@ -338,7 +338,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Update", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state: {0}.. /// @@ -347,7 +347,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is closed.. /// @@ -356,7 +356,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_Closed", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is connecting.. /// @@ -365,7 +365,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_Connecting", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is open.. /// @@ -374,7 +374,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_Open", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is executing.. /// @@ -383,7 +383,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_OpenExecuting", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is fetching.. /// @@ -392,7 +392,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_OpenFetching", resourceCulture); } } - + /// /// Looks up a localized string similar to Format of the initialization string does not conform to specification starting at index {0}.. /// @@ -401,7 +401,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStringSyntax", resourceCulture); } } - + /// /// Looks up a localized string similar to Data adapter error.. /// @@ -410,7 +410,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DataAdapterExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The argument is too long.. /// @@ -419,7 +419,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DatabaseNameTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when reader is closed.. /// @@ -428,7 +428,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DataReaderClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to No data exists for the row/column.. /// @@ -437,7 +437,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DataReaderNoData", resourceCulture); } } - + /// /// Looks up a localized string similar to DB concurrency violation.. /// @@ -446,7 +446,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DBConcurrencyExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' cannot be called when the DbDataRecord is read only.. /// @@ -455,7 +455,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DbDataUpdatableRecordReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' cannot be called when the record is read only.. /// @@ -464,7 +464,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DbRecordReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to No mapping exists from DbType {0} to a known {1}.. /// @@ -473,7 +473,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DbTypeNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot enlist in the transaction because the connection is the primary connection for a delegated or promoted transaction.. /// @@ -482,7 +482,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DelegatedTransactionPresent", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} DeriveParameters only supports CommandType.StoredProcedure, not CommandType.{1}.. /// @@ -491,7 +491,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DeriveParametersNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Descending. /// @@ -500,7 +500,7 @@ internal class Strings { return ResourceManager.GetString("ADP_Descending", resourceCulture); } } - + /// /// Looks up a localized string similar to The acceptable values for the property '{0}' are '{1}' or '{2}'.. /// @@ -509,7 +509,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DoubleValuedProperty", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation is not supported against multiple base tables.. /// @@ -518,7 +518,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLJoinUnsupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation not supported against table names '{0}' that contain the QuotePrefix or QuoteSuffix character '{1}'.. /// @@ -527,7 +527,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNestedQuote", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.. /// @@ -536,7 +536,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoKeyInfoDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not contain a row version column.. /// @@ -545,7 +545,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoKeyInfoRowVersionDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not contain a row version column.. /// @@ -554,7 +554,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoKeyInfoRowVersionUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.. /// @@ -563,7 +563,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoKeyInfoUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation is not supported against a SelectCommand that does not return any base table information.. /// @@ -572,7 +572,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoTableInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Expecting non-empty array for '{0}' parameter.. /// @@ -581,7 +581,7 @@ internal class Strings { return ResourceManager.GetString("ADP_EmptyArray", resourceCulture); } } - + /// /// Looks up a localized string similar to Database cannot be null, the empty string, or string of only whitespace.. /// @@ -590,7 +590,7 @@ internal class Strings { return ResourceManager.GetString("ADP_EmptyDatabaseName", resourceCulture); } } - + /// /// Looks up a localized string similar to Expecting non-empty string for '{0}' parameter.. /// @@ -599,7 +599,7 @@ internal class Strings { return ResourceManager.GetString("ADP_EmptyString", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}':The length of the literal value must be even.. /// @@ -608,7 +608,7 @@ internal class Strings { return ResourceManager.GetString("ADP_EvenLengthLiteralValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Hierarchical chapter columns must map to an AutoIncrement DataColumn.. /// @@ -617,7 +617,7 @@ internal class Strings { return ResourceManager.GetString("ADP_FillChapterAutoIncrement", resourceCulture); } } - + /// /// Looks up a localized string similar to Fill: expected a non-empty string for the SourceTable name.. /// @@ -626,7 +626,7 @@ internal class Strings { return ResourceManager.GetString("ADP_FillRequiresSourceTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to FillSchema: expected a non-empty string for the SourceTable name.. /// @@ -635,7 +635,7 @@ internal class Strings { return ResourceManager.GetString("ADP_FillSchemaRequiresSourceTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}':The literal value must be a string with hexadecimal digits. /// @@ -644,7 +644,7 @@ internal class Strings { return ResourceManager.GetString("ADP_HexDigitLiteralValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Incorrect async result.. /// @@ -653,7 +653,7 @@ internal class Strings { return ResourceManager.GetString("ADP_IncorrectAsyncResult", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal DbConnection Error: {0}. /// @@ -662,7 +662,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InternalConnectionError", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal .NET Framework Data Provider error {0}.. /// @@ -671,7 +671,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InternalProviderError", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of argument '{0}' exceeds it's limit of '{1}'.. /// @@ -680,7 +680,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidArgumentLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid argument value for method '{0}'.. /// @@ -689,7 +689,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidArgumentValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Buffer offset '{1}' plus the bytes available '{0}' is greater than the length of the passed in buffer.. /// @@ -698,7 +698,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidBufferSizeOrIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid CommandTimeout value {0}; the value must be >= 0.. /// @@ -707,7 +707,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidCommandTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid value for key '{0}'.. /// @@ -716,7 +716,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidConnectionOptionValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The value's length for key '{0}' exceeds it's limit of '{1}'.. /// @@ -725,7 +725,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidConnectionOptionValueLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 'Connect Timeout' value which must be an integer >= 0.. /// @@ -734,7 +734,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidConnectTimeoutValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataDirectory substitute is not a string.. /// @@ -743,7 +743,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDataDirectory", resourceCulture); } } - + /// /// Looks up a localized string similar to Data length '{0}' is less than 0.. /// @@ -752,7 +752,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDataLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified length '{0}' is out of range.. /// @@ -761,7 +761,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDataLength2", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter data type of {0} is invalid.. /// @@ -770,7 +770,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to Data type '{0}' can not be formatted as a literal because it has an invalid date time digits.. /// @@ -779,7 +779,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDateTimeDigits", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid destination buffer (size of {0}) offset: {1}. /// @@ -788,7 +788,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDestinationBufferIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is invalid.. /// @@ -797,7 +797,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The value can not be formatted as a literal of the requested type.. /// @@ -806,7 +806,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidFormatValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Implicit conversion of object type '{0}' to data type '{1}' is not supported.. /// @@ -815,7 +815,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidImplicitConversion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid keyword, contain one or more of 'no characters', 'control characters', 'leading or trailing whitespace' or 'leading semicolons'.. /// @@ -824,7 +824,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Data type '{0}' can not be formatted as a literal because it has an invalid maximum scale.. /// @@ -833,7 +833,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMaximumScale", resourceCulture); } } - + /// /// Looks up a localized string similar to The MaxRecords value of {0} is invalid; the value must be >= 0.. /// @@ -842,7 +842,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMaxRecords", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid value for this metadata.. /// @@ -851,7 +851,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMetaDataValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid min or max pool size values, min pool size cannot be greater than the max pool size.. /// @@ -860,7 +860,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMinMaxPoolSizeValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property if 'Authentication' has been specified in the connection string.. /// @@ -869,7 +869,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndAuthentication", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property with the 'Context Connection' keyword.. /// @@ -878,7 +878,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property if the Credential property is already set.. /// @@ -887,7 +887,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property if the 'Integrated Security' connection string keyword has been set to 'true' or 'SSPI'.. /// @@ -896,7 +896,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndIntegratedSecurity", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property if 'UserID', 'UID', 'Password', or 'PWD' has been specified in connection string.. /// @@ -905,7 +905,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndUserIDPassword", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the Credential property if the AccessToken property is already set.. /// @@ -914,7 +914,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfCredentialAndAccessToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use Credential with UserID, UID, Password, or PWD connection string keywords.. /// @@ -923,7 +923,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfSecureAndClearCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use Credential with Context Connection keyword.. /// @@ -932,7 +932,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfSecureCredentialAndContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use Credential with Integrated Security connection string keyword.. /// @@ -941,7 +941,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfSecureCredentialAndIntegratedSecurity", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} "{1}".. /// @@ -950,7 +950,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMultipartName", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} "{1}", incorrect usage of quotes.. /// @@ -959,7 +959,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMultipartNameQuoteUsage", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} "{1}", the current limit of "{2}" is insufficient.. /// @@ -968,7 +968,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMultipartNameToManyParts", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid parameter Offset value '{0}'. The value must be greater than or equal to 0.. /// @@ -977,7 +977,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidOffsetValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified QuotePrefix and QuoteSuffix values do not match.. /// @@ -986,7 +986,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidPrefixSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified SeekOrigin value is invalid.. /// @@ -995,7 +995,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSeekOrigin", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid parameter Size value '{0}'. The value must be greater than or equal to 0.. /// @@ -1004,7 +1004,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSizeValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid source buffer (size of {0}) offset: {1}. /// @@ -1013,7 +1013,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSourceBufferIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to SourceColumn is required to be a non-empty string.. /// @@ -1022,7 +1022,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSourceColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to SourceTable is required to be a non-empty string. /// @@ -1031,7 +1031,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSourceTable", resourceCulture); } } - + /// /// Looks up a localized string similar to The StartRecord value of {0} is invalid; the value must be >= 0.. /// @@ -1040,7 +1040,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidStartRecord", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid UDL file.. /// @@ -1049,7 +1049,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidUDL", resourceCulture); } } - + /// /// Looks up a localized string similar to The value contains embedded nulls (\u0000).. /// @@ -1058,7 +1058,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Xml; can only parse elements of version one.. /// @@ -1067,7 +1067,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidXMLBadVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Keyword not supported: '{0}'.. /// @@ -1076,7 +1076,7 @@ internal class Strings { return ResourceManager.GetString("ADP_KeywordNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The literal value provided is not a valid literal for the data type '{0}'.. /// @@ -1085,7 +1085,7 @@ internal class Strings { return ResourceManager.GetString("ADP_LiteralValueIsInvalid", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot enlist in the transaction because a local transaction is in progress on the connection. Finish local transaction and retry.. /// @@ -1094,7 +1094,7 @@ internal class Strings { return ResourceManager.GetString("ADP_LocalTransactionPresent", resourceCulture); } } - + /// /// Looks up a localized string similar to Mismatched end method call for asyncResult. Expected call to {0} but {1} was called instead.. /// @@ -1103,7 +1103,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MismatchedAsyncResult", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing SourceColumn mapping for '{0}'.. /// @@ -1112,7 +1112,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingColumnMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to Use of key '{0}' requires the key '{1}' to be present.. /// @@ -1121,7 +1121,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingConnectionOptionValue", resourceCulture); } } - + /// /// Looks up a localized string similar to DataReader.GetFieldType({0}) returned null.. /// @@ -1130,7 +1130,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingDataReaderFieldType", resourceCulture); } } - + /// /// Looks up a localized string similar to The SelectCommand property has not been initialized before calling '{0}'.. /// @@ -1139,7 +1139,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingSelectCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter.SelectCommand property needs to be initialized.. /// @@ -1148,7 +1148,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingSourceCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter.SelectCommand.Connection property needs to be initialized;. /// @@ -1157,7 +1157,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingSourceCommandConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing SourceTable mapping: '{0}'. /// @@ -1166,7 +1166,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingTableMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing TableMapping when TableMapping.DataSetTable='{0}'.. /// @@ -1175,7 +1175,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingTableMappingDestination", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing the '{0}' DataTable for the '{1}' SourceTable.. /// @@ -1184,7 +1184,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingTableSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Multiple return value parameters are not supported.. /// @@ -1193,7 +1193,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MultipleReturnValue", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} must be marked as read only.. /// @@ -1202,7 +1202,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MustBeReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid value for argument '{0}'. The value must be greater than or equal to 0.. /// @@ -1211,7 +1211,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NegativeParameter", resourceCulture); } } - + /// /// Looks up a localized string similar to The ConnectionString property has not been initialized.. /// @@ -1220,7 +1220,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NoConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to A Non CLS Exception was caught.. /// @@ -1229,7 +1229,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NonCLSException", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout attempting to open the connection. The time period elapsed prior to attempting to open the connection has been exceeded. This may have occurred because of too many simultaneous non-pooled connection attempts.. /// @@ -1238,7 +1238,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NonPooledOpenTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid {2} attempt at dataIndex '{0}'. With CommandBehavior.SequentialAccess, you may only read from dataIndex '{1}' or greater.. /// @@ -1247,7 +1247,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NonSeqByteAccess", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to read from column ordinal '{0}'. With CommandBehavior.SequentialAccess, you may only read from column ordinal '{1}' or greater.. /// @@ -1256,7 +1256,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NonSequentialColumnAccess", resourceCulture); } } - + /// /// Looks up a localized string similar to The QuotePrefix and QuoteSuffix properties cannot be changed once an Insert, Update, or Delete command has been generated.. /// @@ -1265,7 +1265,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NoQuoteChange", resourceCulture); } } - + /// /// Looks up a localized string similar to The stored procedure '{0}' doesn't exist.. /// @@ -1274,7 +1274,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NoStoredProcedureExists", resourceCulture); } } - + /// /// Looks up a localized string similar to Given security element is not a permission element.. /// @@ -1283,7 +1283,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NotAPermissionElement", resourceCulture); } } - + /// /// Looks up a localized string similar to Metadata must be SqlDbType.Row. /// @@ -1292,7 +1292,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NotRowType", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by the {2} method.. /// @@ -1301,7 +1301,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NotSupportedEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected null DataSet argument.. /// @@ -1310,7 +1310,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NullDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected null DataTable argument. /// @@ -1319,7 +1319,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NullDataTable", resourceCulture); } } - + /// /// Looks up a localized string similar to The numerical value is too large to fit into a 96 bit decimal.. /// @@ -1328,7 +1328,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NumericToDecimalOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' keyword is obsolete. Use '{1}' instead.. /// @@ -1337,7 +1337,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ObsoleteKeyword", resourceCulture); } } - + /// /// Looks up a localized string similar to The ODBC provider did not return results from SQLGETTYPEINFO.. /// @@ -1346,7 +1346,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OdbcNoTypesFromProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Offset must refer to a location within the value.. /// @@ -1355,7 +1355,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OffsetOutOfRangeException", resourceCulture); } } - + /// /// Looks up a localized string similar to Only specify one item in the dataTables array when using non-zero values for startRecords or maxRecords.. /// @@ -1364,7 +1364,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OnlyOneTableForStartRecordOrMaxRecords", resourceCulture); } } - + /// /// Looks up a localized string similar to Not allowed to change the '{0}' property. {1}. /// @@ -1373,7 +1373,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionPropertySet", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} requires an open and available Connection. {1}. /// @@ -1382,7 +1382,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the updating command to have an open connection object. {1}. /// @@ -1391,7 +1391,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired_Clone", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the {0}Command to have an open connection object. {1}. /// @@ -1400,7 +1400,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired_Delete", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the {0}Command to have an open connection object. {1}. /// @@ -1409,7 +1409,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired_Insert", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the {0}Command to have an open connection object. {1}. /// @@ -1418,7 +1418,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired_Update", resourceCulture); } } - + /// /// Looks up a localized string similar to There is already an open DataReader associated with this {0} which must be closed first.. /// @@ -1427,7 +1427,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenReaderExists", resourceCulture); } } - + /// /// Looks up a localized string similar to There is already an open SqlResultSet associated with this command which must be closed first.. /// @@ -1436,7 +1436,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenResultSetExists", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation aborted.. /// @@ -1445,7 +1445,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OperationAborted", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation aborted due to an exception (see InnerException for details).. /// @@ -1454,7 +1454,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OperationAbortedExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} does not support parallel transactions.. /// @@ -1463,7 +1463,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ParallelTransactionsNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to convert parameter value from a {0} to a {1}.. /// @@ -1472,7 +1472,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ParameterConversionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter value '{0}' is out of range.. /// @@ -1481,7 +1481,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ParameterValueOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not start another operation while there is an asynchronous operation pending.. /// @@ -1490,7 +1490,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PendingAsyncOperation", resourceCulture); } } - + /// /// Looks up a localized string similar to Type mismatch.. /// @@ -1499,7 +1499,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PermissionTypeMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.. /// @@ -1508,7 +1508,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PooledOpenTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}.Prepare method requires parameters of type '{1}' have an explicitly set Precision and Scale.. /// @@ -1517,7 +1517,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PrepareParameterScale", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}.Prepare method requires all variable length parameters to have an explicitly set non-zero Size.. /// @@ -1526,7 +1526,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PrepareParameterSize", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}.Prepare method requires all parameters to have an explicitly set type.. /// @@ -1535,7 +1535,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PrepareParameterType", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' property requires Microsoft WindowsNT or a WindowsNT based operating system.. /// @@ -1544,7 +1544,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PropertyNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} requires open connection when the quote prefix has not been set.. /// @@ -1553,7 +1553,7 @@ internal class Strings { return ResourceManager.GetString("ADP_QuotePrefixNotSet", resourceCulture); } } - + /// /// Looks up a localized string similar to When batching, the command's UpdatedRowSource property value of UpdateRowSource.FirstReturnedRecord or UpdateRowSource.Both is invalid.. /// @@ -1562,7 +1562,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ResultsNotAllowedDuringBatch", resourceCulture); } } - + /// /// Looks up a localized string similar to RowUpdatedEvent: Errors occurred; no additional is information available.. /// @@ -1571,7 +1571,7 @@ internal class Strings { return ResourceManager.GetString("ADP_RowUpdatedErrors", resourceCulture); } } - + /// /// Looks up a localized string similar to RowUpdatingEvent: Errors occurred; no additional is information available.. /// @@ -1580,7 +1580,7 @@ internal class Strings { return ResourceManager.GetString("ADP_RowUpdatingErrors", resourceCulture); } } - + /// /// Looks up a localized string similar to The only acceptable value for the property '{0}' is '{1}'.. /// @@ -1589,7 +1589,7 @@ internal class Strings { return ResourceManager.GetString("ADP_SingleValuedProperty", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to {0} when stream is closed.. /// @@ -1598,7 +1598,7 @@ internal class Strings { return ResourceManager.GetString("ADP_StreamClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to The transaction assigned to this command must be the most nested pending local transaction.. /// @@ -1607,7 +1607,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionCompleted", resourceCulture); } } - + /// /// Looks up a localized string similar to The transaction associated with the current connection has completed but has not been disposed. The transaction must be disposed before the connection can be used to execute SQL statements.. /// @@ -1616,7 +1616,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionCompletedButNotDisposed", resourceCulture); } } - + /// /// Looks up a localized string similar to The transaction is either not associated with the current connection or has been completed.. /// @@ -1625,7 +1625,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionConnectionMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection currently has transaction enlisted. Finish current transaction and retry.. /// @@ -1634,7 +1634,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionPresent", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} requires the command to have a transaction when the connection assigned to the command is in a pending local transaction. The Transaction property of the command has not been initialized.. /// @@ -1643,7 +1643,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to This {0} has completed; it is no longer usable.. /// @@ -1652,7 +1652,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionZombied", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to load the UDL file.. /// @@ -1661,7 +1661,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UdlFileError", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not determine the correct boolean literal values. Boolean literals can not be created.. /// @@ -1670,7 +1670,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnableToCreateBooleanLiteral", resourceCulture); } } - + /// /// Looks up a localized string similar to {1}[{0}]: the Size property has an invalid size of 0.. /// @@ -1679,7 +1679,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UninitializedParameterSize", resourceCulture); } } - + /// /// Looks up a localized string similar to No mapping exists from object type {0} to a known managed provider native type.. /// @@ -1688,7 +1688,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnknownDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to handle an unknown TypeCode {0} returned by Type {1}.. /// @@ -1697,7 +1697,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnknownDataTypeCode", resourceCulture); } } - + /// /// Looks up a localized string similar to Literals of the native data type associated with data type '{0}' are not supported.. /// @@ -1706,7 +1706,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnsupportedNativeDataTypeOleDb", resourceCulture); } } - + /// /// Looks up a localized string similar to The StatementType {0} is not expected here.. /// @@ -1715,7 +1715,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnwantedStatementType", resourceCulture); } } - + /// /// Looks up a localized string similar to Concurrency violation: the batched command affected {0} of the expected {1} records.. /// @@ -1724,7 +1724,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateConcurrencyViolation_Batch", resourceCulture); } } - + /// /// Looks up a localized string similar to Concurrency violation: the DeleteCommand affected {0} of the expected {1} records.. /// @@ -1733,7 +1733,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateConcurrencyViolation_Delete", resourceCulture); } } - + /// /// Looks up a localized string similar to Concurrency violation: the UpdateCommand affected {0} of the expected {1} records.. /// @@ -1742,7 +1742,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateConcurrencyViolation_Update", resourceCulture); } } - + /// /// Looks up a localized string similar to DataRow[{0}] is from a different DataTable than DataRow[0].. /// @@ -1751,7 +1751,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateMismatchRowTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the command clone to be valid.. /// @@ -1760,7 +1760,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandClone", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a valid DeleteCommand when passed DataRow collection with deleted rows.. /// @@ -1769,7 +1769,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a valid InsertCommand when passed DataRow collection with new rows.. /// @@ -1778,7 +1778,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandInsert", resourceCulture); } } - + /// /// Looks up a localized string similar to Auto SQL generation during Update requires a valid SelectCommand.. /// @@ -1787,7 +1787,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandSelect", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a valid UpdateCommand when passed DataRow collection with modified rows.. /// @@ -1796,7 +1796,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Update unable to find TableMapping['{0}'] or DataTable '{0}'.. /// @@ -1805,7 +1805,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresSourceTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Update: expected a non-empty SourceTable name.. /// @@ -1814,7 +1814,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresSourceTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to The version of SQL Server in use does not support datatype '{0}'.. /// @@ -1823,7 +1823,7 @@ internal class Strings { return ResourceManager.GetString("ADP_VersionDoesNotSupportDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. The token signature does not match the signature omputed using a public key retrieved from the attestation public key endpoint at '{0}'. Verify the DNS apping for the endpoint. If correct, contact Customer Support Services.. /// @@ -1832,7 +1832,7 @@ internal class Strings { return ResourceManager.GetString("AttestationTokenSignatureValidationFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to .database.chinacloudapi.cn. /// @@ -1841,7 +1841,7 @@ internal class Strings { return ResourceManager.GetString("AZURESQL_ChinaEndpoint", resourceCulture); } } - + /// /// Looks up a localized string similar to .database.windows.net. /// @@ -1850,7 +1850,7 @@ internal class Strings { return ResourceManager.GetString("AZURESQL_GenericEndpoint", resourceCulture); } } - + /// /// Looks up a localized string similar to .database.cloudapi.de. /// @@ -1859,7 +1859,7 @@ internal class Strings { return ResourceManager.GetString("AZURESQL_GermanEndpoint", resourceCulture); } } - + /// /// Looks up a localized string similar to .database.usgovcloudapi.net. /// @@ -1868,7 +1868,7 @@ internal class Strings { return ResourceManager.GetString("AZURESQL_UsGovEndpoint", resourceCulture); } } - + /// /// Looks up a localized string similar to There is more than one table with the same name '{0}' (even if namespace is different).. /// @@ -1877,7 +1877,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_DuplicateTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot generate identifier for name '{0}'.. /// @@ -1886,7 +1886,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_InvalidIdentifier", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}': Type '{1}' does not have parameterless constructor.. /// @@ -1895,7 +1895,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_NoCtor0", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}': Type '{1}' does not have constructor with string argument.. /// @@ -1904,7 +1904,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_NoCtor1", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}': Type '{1}' cannot be null.. /// @@ -1913,7 +1913,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_TypeCantBeNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs whenever this collection's membership changes.. /// @@ -1922,7 +1922,7 @@ internal class Strings { return ResourceManager.GetString("collectionChangedEventDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Only elements allowed.. /// @@ -1931,7 +1931,7 @@ internal class Strings { return ResourceManager.GetString("ConfigBaseElementsOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Child nodes not allowed.. /// @@ -1940,7 +1940,7 @@ internal class Strings { return ResourceManager.GetString("ConfigBaseNoChildNodes", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested .NET Framework Data Provider's implementation does not have an Instance field of a System.Data.Common.DbProviderFactory derived type.. /// @@ -1949,7 +1949,7 @@ internal class Strings { return ResourceManager.GetString("ConfigProviderInvalid", resourceCulture); } } - + /// /// Looks up a localized string similar to The missing .NET Framework Data Provider's assembly qualified name is required.. /// @@ -1958,7 +1958,7 @@ internal class Strings { return ResourceManager.GetString("ConfigProviderMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find the requested .NET Framework Data Provider. It may not be installed.. /// @@ -1967,7 +1967,7 @@ internal class Strings { return ResourceManager.GetString("ConfigProviderNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to find or load the registered .NET Framework Data Provider.. /// @@ -1976,7 +1976,7 @@ internal class Strings { return ResourceManager.GetString("ConfigProviderNotInstalled", resourceCulture); } } - + /// /// Looks up a localized string similar to Required attribute '{0}' cannot be empty.. /// @@ -1985,7 +1985,7 @@ internal class Strings { return ResourceManager.GetString("ConfigRequiredAttributeEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to Required attribute '{0}' not found.. /// @@ -1994,7 +1994,7 @@ internal class Strings { return ResourceManager.GetString("ConfigRequiredAttributeMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' section can only appear once per config file.. /// @@ -2003,7 +2003,7 @@ internal class Strings { return ResourceManager.GetString("ConfigSectionsUnique", resourceCulture); } } - + /// /// Looks up a localized string similar to Unrecognized attribute '{0}'.. /// @@ -2012,7 +2012,7 @@ internal class Strings { return ResourceManager.GetString("ConfigUnrecognizedAttributes", resourceCulture); } } - + /// /// Looks up a localized string similar to Unrecognized element.. /// @@ -2021,7 +2021,7 @@ internal class Strings { return ResourceManager.GetString("ConfigUnrecognizedElement", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the name of this constraint.. /// @@ -2030,7 +2030,7 @@ internal class Strings { return ResourceManager.GetString("ConstraintNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the table of this constraint.. /// @@ -2039,7 +2039,7 @@ internal class Strings { return ResourceManager.GetString("ConstraintTableDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' argument contains null value.. /// @@ -2048,7 +2048,7 @@ internal class Strings { return ResourceManager.GetString("Data_ArgumentContainsNull", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' argument cannot be null.. /// @@ -2057,7 +2057,7 @@ internal class Strings { return ResourceManager.GetString("Data_ArgumentNull", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' argument is out of range.. /// @@ -2066,7 +2066,7 @@ internal class Strings { return ResourceManager.GetString("Data_ArgumentOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Collection itself is not modifiable.. /// @@ -2075,7 +2075,7 @@ internal class Strings { return ResourceManager.GetString("Data_CannotModifyCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to The given name '{0}' matches at least two names in the collection object with different cases, but does not match either of them with the same case.. /// @@ -2084,7 +2084,7 @@ internal class Strings { return ResourceManager.GetString("Data_CaseInsensitiveNameConflict", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.. /// @@ -2093,7 +2093,7 @@ internal class Strings { return ResourceManager.GetString("Data_EnforceConstraints", resourceCulture); } } - + /// /// Looks up a localized string similar to Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.. /// @@ -2102,7 +2102,7 @@ internal class Strings { return ResourceManager.GetString("Data_InvalidOffsetLength", resourceCulture); } } - + /// /// Looks up a localized string similar to The given name '{0}' matches at least two names in the collection object with different namespaces.. /// @@ -2111,7 +2111,7 @@ internal class Strings { return ResourceManager.GetString("Data_NamespaceNameConflict", resourceCulture); } } - + /// /// Looks up a localized string similar to Whether or not Fill will call DataRow.AcceptChanges.. /// @@ -2120,7 +2120,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_AcceptChangesDuringFill", resourceCulture); } } - + /// /// Looks up a localized string similar to Whether or not Update will call DataRow.AcceptChanges.. /// @@ -2129,7 +2129,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_AcceptChangesDuringUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Whether or not to continue to the next DataRow when the Update events, RowUpdating and RowUpdated, Status is UpdateStatus.ErrorsOccurred.. /// @@ -2138,7 +2138,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_ContinueUpdateOnError", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered when a recoverable error occurs during Fill.. /// @@ -2147,7 +2147,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_FillError", resourceCulture); } } - + /// /// Looks up a localized string similar to How the adapter fills the DataTable from the DataReader.. /// @@ -2156,7 +2156,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_FillLoadOption", resourceCulture); } } - + /// /// Looks up a localized string similar to The action taken when a table or column in the TableMappings is missing.. /// @@ -2165,7 +2165,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_MissingMappingAction", resourceCulture); } } - + /// /// Looks up a localized string similar to The action taken when a table or column in the DataSet is missing.. /// @@ -2174,7 +2174,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_MissingSchemaAction", resourceCulture); } } - + /// /// Looks up a localized string similar to Should Fill return provider specific values or common CLSCompliant values.. /// @@ -2183,7 +2183,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_ReturnProviderSpecificTypes", resourceCulture); } } - + /// /// Looks up a localized string similar to How to map source table to DataSet table.. /// @@ -2192,7 +2192,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_TableMappings", resourceCulture); } } - + /// /// Looks up a localized string similar to Action. /// @@ -2201,7 +2201,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Action", resourceCulture); } } - + /// /// Looks up a localized string similar to Advanced. /// @@ -2210,7 +2210,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Advanced", resourceCulture); } } - + /// /// Looks up a localized string similar to Behavior. /// @@ -2219,7 +2219,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Behavior", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Resiliency. /// @@ -2228,7 +2228,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_ConnectionResilency", resourceCulture); } } - + /// /// Looks up a localized string similar to Context. /// @@ -2237,7 +2237,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Context", resourceCulture); } } - + /// /// Looks up a localized string similar to Data. /// @@ -2246,7 +2246,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Data", resourceCulture); } } - + /// /// Looks up a localized string similar to Fill. /// @@ -2255,7 +2255,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Fill", resourceCulture); } } - + /// /// Looks up a localized string similar to InfoMessage. /// @@ -2264,7 +2264,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_InfoMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Initialization. /// @@ -2273,7 +2273,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Initialization", resourceCulture); } } - + /// /// Looks up a localized string similar to Mapping. /// @@ -2282,7 +2282,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Mapping", resourceCulture); } } - + /// /// Looks up a localized string similar to Named ConnectionString. /// @@ -2291,7 +2291,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_NamedConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Notification. /// @@ -2300,7 +2300,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Notification", resourceCulture); } } - + /// /// Looks up a localized string similar to Pooling. /// @@ -2309,7 +2309,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Pooling", resourceCulture); } } - + /// /// Looks up a localized string similar to Replication. /// @@ -2318,7 +2318,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Replication", resourceCulture); } } - + /// /// Looks up a localized string similar to Schema. /// @@ -2327,7 +2327,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Schema", resourceCulture); } } - + /// /// Looks up a localized string similar to Security. /// @@ -2336,7 +2336,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Security", resourceCulture); } } - + /// /// Looks up a localized string similar to Source. /// @@ -2345,7 +2345,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Source", resourceCulture); } } - + /// /// Looks up a localized string similar to StateChange. /// @@ -2354,7 +2354,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_StateChange", resourceCulture); } } - + /// /// Looks up a localized string similar to StatementCompleted. /// @@ -2363,7 +2363,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_StatementCompleted", resourceCulture); } } - + /// /// Looks up a localized string similar to UDT. /// @@ -2372,7 +2372,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Udt", resourceCulture); } } - + /// /// Looks up a localized string similar to Update. /// @@ -2381,7 +2381,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Update", resourceCulture); } } - + /// /// Looks up a localized string similar to XML. /// @@ -2390,7 +2390,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Xml", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set AutoIncrement property for a column with DefaultValue set.. /// @@ -2399,7 +2399,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_AutoIncrementAndDefaultValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set AutoIncrement property for a computed column.. /// @@ -2408,7 +2408,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_AutoIncrementAndExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change AutoIncrement of a DataColumn with type '{0}' once it has data.. /// @@ -2417,7 +2417,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_AutoIncrementCannotSetIfHasData", resourceCulture); } } - + /// /// Looks up a localized string similar to AutoIncrementStep must be a non-zero value.. /// @@ -2426,7 +2426,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_AutoIncrementSeed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the Column '{0}' property Namespace. The Column is SimpleContent.. /// @@ -2435,7 +2435,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotChangeNamespace", resourceCulture); } } - + /// /// Looks up a localized string similar to The DateTimeMode can be set only on DataColumns of type DateTime.. /// @@ -2444,7 +2444,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSetDateTimeModeForNonDateTimeColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' property MaxLength to '{1}'. There is at least one string in the table longer than the new limit.. /// @@ -2453,7 +2453,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSetMaxLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' property MaxLength. The Column is SimpleContent.. /// @@ -2462,7 +2462,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSetMaxLength2", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' to be null. Please use DBNull instead.. /// @@ -2471,7 +2471,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSetToNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' property MappingType to SimpleContent. The Column DataType is {1}.. /// @@ -2480,7 +2480,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSimpleContent", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' property DataType to {1}. The Column is SimpleContent.. /// @@ -2489,7 +2489,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSimpleContentType", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change DataType of a column once it has data.. /// @@ -2498,7 +2498,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ChangeDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change DateTimeMode from '{0}' to '{1}' once the table has data.. /// @@ -2507,7 +2507,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DateTimeMode", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set a DefaultValue on an AutoIncrement column.. /// @@ -2516,7 +2516,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DefaultValueAndAutoIncrement", resourceCulture); } } - + /// /// Looks up a localized string similar to The DefaultValue for column {0} is of type {1}, but the column is of type {2}.. /// @@ -2525,7 +2525,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DefaultValueColumnDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to The DefaultValue for column {0} is of type {1} and cannot be converted to {2}.. /// @@ -2534,7 +2534,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DefaultValueDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to The DefaultValue for the column is of type {0} and cannot be converted to {1}.. /// @@ -2543,7 +2543,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DefaultValueDataType1", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' exceeds the MaxLength limit.. /// @@ -2552,7 +2552,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExceedMaxLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Expression property on column {0}, because it is a part of a constraint.. /// @@ -2561,7 +2561,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionAndConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set expression because column cannot be made ReadOnly.. /// @@ -2570,7 +2570,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionAndReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create an expression on a column that has AutoIncrement or Unique.. /// @@ -2579,7 +2579,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionAndUnique", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Expression property due to circular reference in the expression.. /// @@ -2588,7 +2588,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionCircular", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a constraint based on Expression column {0}.. /// @@ -2597,7 +2597,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionInConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to MaxLength applies to string data type only. You cannot set Column '{0}' property MaxLength to be non-negative number.. /// @@ -2606,7 +2606,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_HasToBeStringType", resourceCulture); } } - + /// /// Looks up a localized string similar to Type '{0}' does not contain static Null property or field.. /// @@ -2615,7 +2615,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_INullableUDTwithoutStaticNull", resourceCulture); } } - + /// /// Looks up a localized string similar to DataColumn with type '{0}' is a complexType. Can not serialize value of a complex type as Attribute. /// @@ -2624,7 +2624,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_InvalidDataColumnMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' is Invalid DataSetDateTime value.. /// @@ -2633,7 +2633,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_InvalidDateTimeMode", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set column '{0}'. The value violates the MaxLength limit of this column.. /// @@ -2642,7 +2642,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_LongerThanMaxLength", resourceCulture); } } - + /// /// Looks up a localized string similar to ColumnName is required when it is part of a DataTable.. /// @@ -2651,7 +2651,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NameRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' contains non-unique values.. /// @@ -2660,7 +2660,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NonUniqueValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not allow DBNull.Value.. /// @@ -2669,7 +2669,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NotAllowDBNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Column must belong to a table.. /// @@ -2678,7 +2678,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NotInAnyTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not belong to table {1}.. /// @@ -2687,7 +2687,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NotInTheTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not belong to underlying table '{1}'.. /// @@ -2696,7 +2696,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NotInTheUnderlyingTable", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet does not support System.Nullable<>.. /// @@ -2705,7 +2705,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NullableTypesNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Column requires a valid DataType.. /// @@ -2714,7 +2714,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NullDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' has null values in it.. /// @@ -2723,7 +2723,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NullKeyValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not allow nulls.. /// @@ -2732,7 +2732,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NullValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Ordinal '{0}' exceeds the maximum number.. /// @@ -2741,7 +2741,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_OrdinalExceedMaximun", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' is read only.. /// @@ -2750,7 +2750,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change ReadOnly property for the expression column.. /// @@ -2759,7 +2759,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ReadOnlyAndExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to SetAdded and SetModified can only be called on DataRows with Unchanged DataRowState.. /// @@ -2768,7 +2768,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_SetAddedAndModifiedCalledOnNonUnchanged", resourceCulture); } } - + /// /// Looks up a localized string similar to Couldn't store <{0}> in {1} Column. Expected type is {2}.. /// @@ -2777,7 +2777,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_SetFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Type '{0}' does not implement IRevertibleChangeTracking; therefore can not proceed with RejectChanges().. /// @@ -2786,7 +2786,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_UDTImplementsIChangeTrackingButnotIRevertible", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change Unique property for the expression column.. /// @@ -2795,7 +2795,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_UniqueAndExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether null values are allowed in this column.. /// @@ -2804,7 +2804,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnAllowNullDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether the column automatically increments itself for new rows added to the table. The type of this column must be Int16, Int32, or Int64.. /// @@ -2813,7 +2813,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnAutoIncrementDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the starting value for an AutoIncrement column.. /// @@ -2822,7 +2822,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnAutoIncrementSeedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the increment used by an AutoIncrement column.. /// @@ -2831,7 +2831,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnAutoIncrementStepDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the default user-interface caption for this column.. /// @@ -2840,7 +2840,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnCaptionDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the name used to look up this column in the Columns collection of a DataTable.. /// @@ -2849,7 +2849,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnColumnNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns the DataTable to which this column belongs.. /// @@ -2858,7 +2858,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnDataTableDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the type of data stored in this column.. /// @@ -2867,7 +2867,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnDataTypeDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates DateTimeMode of this DataColumn.. /// @@ -2876,7 +2876,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnDateTimeModeDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the default column value used when adding new rows to the table.. /// @@ -2885,7 +2885,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnDefaultValueDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the value that this column computes for each row based on other columns instead of taking user input.. /// @@ -2894,7 +2894,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnExpressionDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to DataColumn.ColumnName. /// @@ -2903,7 +2903,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMapping_DataSetColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Source column name - case sensitive.. /// @@ -2912,7 +2912,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMapping_SourceColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates how this column persists in XML: as an attribute, element, simple content node, or nothing.. /// @@ -2921,7 +2921,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMappingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The number of items in the collection. /// @@ -2930,7 +2930,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMappings_Count", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified DataColumnMapping object.. /// @@ -2939,7 +2939,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMappings_Item", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the maximum length of the value this column allows.. /// @@ -2948,7 +2948,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMaxLengthDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the XML uri for elements or attributes stored in this column.. /// @@ -2957,7 +2957,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnNamespaceDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the index of this column in the Columns collection.. /// @@ -2966,7 +2966,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnOrdinalDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the Prefix used for this DataColumn in xml representation.. /// @@ -2975,7 +2975,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnPrefixDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this column allows changes once a row has been added to the table.. /// @@ -2984,7 +2984,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnReadOnlyDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' already belongs to this DataTable.. /// @@ -2993,7 +2993,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Add1", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' already belongs to another DataTable.. /// @@ -3002,7 +3002,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Add2", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have more than one SimpleContent columns in a DataTable.. /// @@ -3011,7 +3011,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Add3", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a SimpleContent column to a table containing element columns or nested relations.. /// @@ -3020,7 +3020,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Add4", resourceCulture); } } - + /// /// Looks up a localized string similar to A column named '{0}' already belongs to this DataTable.. /// @@ -3029,7 +3029,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_AddDuplicate", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a column named '{0}': a nested table with the same name already belongs to this DataTable.. /// @@ -3038,7 +3038,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_AddDuplicate2", resourceCulture); } } - + /// /// Looks up a localized string similar to A column named '{0}' already belongs to this DataTable: cannot set a nested table name to the same name.. /// @@ -3047,7 +3047,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_AddDuplicate3", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find column {0}.. /// @@ -3056,7 +3056,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove a column that doesn't belong to this table.. /// @@ -3065,7 +3065,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Remove", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this column, because it is part of the parent key for relationship {0}.. /// @@ -3074,7 +3074,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_RemoveChildKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this column, because it is a part of the constraint {0} on the table {1}.. /// @@ -3083,7 +3083,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_RemoveConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this column, because it is part of an expression: {0} = {1}.. /// @@ -3092,7 +3092,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_RemoveExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this column, because it's part of the primary key.. /// @@ -3101,7 +3101,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_RemovePrimaryKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this column should restrict its values in the rows of the table to be unique.. /// @@ -3110,7 +3110,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnUniqueDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to This constraint cannot be added since ForeignKey doesn't belong to table {0}.. /// @@ -3119,7 +3119,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_AddFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add primary key constraint since primary key is already set for the table.. /// @@ -3128,7 +3128,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_AddPrimaryKeyConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Property not accessible because '{0}'.. /// @@ -3137,7 +3137,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_BadObjectPropertyAccess", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add constraint to DataTable '{0}' which is a child table in two nested relations.. /// @@ -3146,7 +3146,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_CantAddConstraintToMultipleNestedTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot delete this row because constraints are enforced on relation {0}, and deleting this row will strand child rows.. /// @@ -3155,7 +3155,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_CascadeDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot make this change because constraints are enforced on relation {0}, and changing this value will strand child rows.. /// @@ -3164,7 +3164,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_CascadeUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot clear table {0} because ForeignKeyConstraint {1} enforces constraints and there are child rows in {2}.. /// @@ -3173,7 +3173,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ClearParentTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Constraint matches constraint named {0} already in collection.. /// @@ -3182,7 +3182,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_Duplicate", resourceCulture); } } - + /// /// Looks up a localized string similar to A Constraint named '{0}' already belongs to this DataTable.. /// @@ -3191,7 +3191,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_DuplicateName", resourceCulture); } } - + /// /// Looks up a localized string similar to ForeignKeyConstraint {0} requires the child key values ({1}) to exist in the parent table.. /// @@ -3200,7 +3200,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ForeignKeyViolation", resourceCulture); } } - + /// /// Looks up a localized string similar to These columns don't point to this table.. /// @@ -3209,7 +3209,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ForeignTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove unique constraint '{0}'. Remove foreign key constraint '{1}' first.. /// @@ -3218,7 +3218,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_NeededForForeignKeyConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the name of a constraint to empty string when it is in the ConstraintCollection.. /// @@ -3227,7 +3227,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_NoName", resourceCulture); } } - + /// /// Looks up a localized string similar to Constraint '{0}' does not belong to this DataTable.. /// @@ -3236,7 +3236,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_NotInTheTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find constraint {0}.. /// @@ -3245,7 +3245,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to This constraint cannot be enabled as not all values have corresponding parent values.. /// @@ -3254,7 +3254,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ParentValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove a constraint that doesn't belong to this table.. /// @@ -3263,7 +3263,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_RemoveFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this row because it has child rows, and constraints on relation {0} are enforced.. /// @@ -3272,7 +3272,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_RemoveParentRow", resourceCulture); } } - + /// /// Looks up a localized string similar to These columns don't currently have unique values.. /// @@ -3281,7 +3281,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_UniqueViolation", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot enforce constraints on constraint {0}.. /// @@ -3290,7 +3290,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_Violation", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' is constrained to be unique. Value '{1}' is already present.. /// @@ -3299,7 +3299,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ViolationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to This type of node cannot be cloned: {0}.. /// @@ -3308,7 +3308,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_CloneNode", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the ColumnMapping property once the associated DataSet is mapped to a loaded XML document.. /// @@ -3317,7 +3317,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_ColumnMappingChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the column name once the associated DataSet is mapped to a loaded XML document.. /// @@ -3326,7 +3326,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_ColumnNameChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the column namespace once the associated DataSet is mapped to a loaded XML document.. /// @@ -3335,7 +3335,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_ColumnNamespaceChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the DataSet name once the DataSet is mapped to a loaded XML document.. /// @@ -3344,7 +3344,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_DataSetNameChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add, remove, or change Nested relations from the DataSet once the DataSet is mapped to a loaded XML document.. /// @@ -3353,7 +3353,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_DataSetNestedRelationsChange", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataSet parameter is invalid. It cannot be null.. /// @@ -3362,7 +3362,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_DataSetNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add or remove tables from the DataSet once the DataSet is mapped to a loaded XML document.. /// @@ -3371,7 +3371,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_DataSetTablesChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Please set DataSet.EnforceConstraints == false before trying to edit XmlDataDocument using XML operations.. /// @@ -3380,7 +3380,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_EnforceConstraintsShouldBeOff", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid foliation.. /// @@ -3389,7 +3389,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_Foliation", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet can be associated with at most one XmlDataDocument. Cannot associate the DataSet with the current XmlDataDocument because the DataSet is already associated with another XmlDataDocument.. /// @@ -3398,7 +3398,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_MultipleDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot load XmlDataDocument if it already contains data. Please use a new XmlDataDocument.. /// @@ -3407,7 +3407,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_MultipleLoad", resourceCulture); } } - + /// /// Looks up a localized string similar to Clear function on DateSet and DataTable is not supported on XmlDataDocument.. /// @@ -3416,7 +3416,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_NotSupport_Clear", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create entity references on DataDocument.. /// @@ -3425,7 +3425,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_NotSupport_EntRef", resourceCulture); } } - + /// /// Looks up a localized string similar to GetElementById() is not supported on DataDocument.. /// @@ -3434,7 +3434,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_NotSupport_GetElementById", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add or remove columns from the table once the DataSet is mapped to a loaded XML document.. /// @@ -3443,7 +3443,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_TableColumnsChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the table name once the associated DataSet is mapped to a loaded XML document.. /// @@ -3452,7 +3452,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_TableNameChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the table namespace once the associated DataSet is mapped to a loaded XML document.. /// @@ -3461,7 +3461,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_TableNamespaceChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Find finds a row based on a Sort order, and no Sort order is specified.. /// @@ -3470,7 +3470,7 @@ internal class Strings { return ResourceManager.GetString("DataIndex_FindWithoutSortOrder", resourceCulture); } } - + /// /// Looks up a localized string similar to Expecting {0} value(s) for the key being indexed, but received {1} value(s).. /// @@ -3479,7 +3479,7 @@ internal class Strings { return ResourceManager.GetString("DataIndex_KeyLength", resourceCulture); } } - + /// /// Looks up a localized string similar to The RowStates parameter must be set to a valid combination of values from the DataViewRowState enumeration.. /// @@ -3488,7 +3488,7 @@ internal class Strings { return ResourceManager.GetString("DataIndex_RecordStateRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a Key when the same column is listed more than once: '{0}'. /// @@ -3497,7 +3497,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_DuplicateColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have 0 columns.. /// @@ -3506,7 +3506,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_NoColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove unique constraint since it's the primary key of a table.. /// @@ -3515,7 +3515,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_RemovePrimaryKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove unique constraint since it's the primary key of table {0}.. /// @@ -3524,7 +3524,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_RemovePrimaryKey1", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a Key from Columns that belong to different tables.. /// @@ -3533,7 +3533,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_TableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have more than {0} columns.. /// @@ -3542,7 +3542,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_TooManyColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to <target>.{0} and <source>.{0} have conflicting properties: DataType property mismatch.. /// @@ -3551,7 +3551,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_DataTypeMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Target table {0} missing definition for column {1}.. /// @@ -3560,7 +3560,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_MissingColumnDefinition", resourceCulture); } } - + /// /// Looks up a localized string similar to Target DataSet missing {0} {1}.. /// @@ -3569,7 +3569,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_MissingConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Target DataSet missing definition for {0}.. /// @@ -3578,7 +3578,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_MissingDefinition", resourceCulture); } } - + /// /// Looks up a localized string similar to PrimaryKey column {0} does not exist in source Table.. /// @@ -3587,7 +3587,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_MissingPrimaryKeyColumnInSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Mismatch columns in the PrimaryKey : <target>.{0} versus <source>.{1}.. /// @@ -3596,7 +3596,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_PrimaryKeyColumnsMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to <target>.PrimaryKey and <source>.PrimaryKey have different Length.. /// @@ -3605,7 +3605,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_PrimaryKeyMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Relation {0} cannot be merged, because keys have mismatch columns.. /// @@ -3614,7 +3614,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_ReltionKeyColumnsMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to A relation already exists for these child columns.. /// @@ -3623,7 +3623,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_AlreadyExists", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation already belongs to another DataSet.. /// @@ -3632,7 +3632,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_AlreadyInOtherDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation already belongs to this DataSet.. /// @@ -3641,7 +3641,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_AlreadyInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a DataRelation or Constraint that has different Locale or CaseSensitive settings between its parent and child tables.. /// @@ -3650,7 +3650,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_CaseLocaleMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a relation to this table's ParentRelation collection where this table isn't the child table.. /// @@ -3659,7 +3659,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ChildTableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Parent Columns and Child Columns don't have type-matching columns.. /// @@ -3668,7 +3668,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ColumnsTypeMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have a relationship between tables in different DataSets.. /// @@ -3677,7 +3677,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_DataSetMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation doesn't belong to this relation collection.. /// @@ -3686,7 +3686,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_DoesNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to A Relation named '{0}' already belongs to this DataSet.. /// @@ -3695,7 +3695,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_DuplicateName", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation should connect two tables in this DataSet to be added to this DataSet.. /// @@ -3704,7 +3704,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ForeignDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to The row doesn't belong to the same DataSet as this relation.. /// @@ -3713,7 +3713,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ForeignRow", resourceCulture); } } - + /// /// Looks up a localized string similar to GetChildRows requires a row whose Table is {0}, but the specified row's Table is {1}.. /// @@ -3722,7 +3722,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ForeignTable", resourceCulture); } } - + /// /// Looks up a localized string similar to GetParentRow requires a row whose Table is {0}, but the specified row's Table is {1}.. /// @@ -3731,7 +3731,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_GetParentRowTableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Nested table '{0}' with empty namespace cannot have multiple parent tables in different namespaces.. /// @@ -3740,7 +3740,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_InValidNamespaceInNestedRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to Nested table '{0}' which inherits its namespace cannot have multiple parent tables in different namespaces.. /// @@ -3749,7 +3749,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_InValidNestedRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to ParentKey and ChildKey are identical.. /// @@ -3758,7 +3758,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_KeyColumnsIdentical", resourceCulture); } } - + /// /// Looks up a localized string similar to ParentColumns and ChildColumns should be the same length.. /// @@ -3767,7 +3767,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_KeyLengthMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to ParentColumns and ChildColumns must not be zero length.. /// @@ -3776,7 +3776,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_KeyZeroLength", resourceCulture); } } - + /// /// Looks up a localized string similar to The table ({0}) cannot be the child table to itself in nested relations.. /// @@ -3785,7 +3785,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_LoopInNestedRelations", resourceCulture); } } - + /// /// Looks up a localized string similar to RelationName is required when it is part of a DataSet.. /// @@ -3794,7 +3794,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_NoName", resourceCulture); } } - + /// /// Looks up a localized string similar to Relation {0} does not belong to this DataSet.. /// @@ -3803,7 +3803,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_NotInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find relation {0}.. /// @@ -3812,7 +3812,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a DataRelation if Parent or Child Columns are not in a DataSet.. /// @@ -3821,7 +3821,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ParentOrChildColumnsDoNotHaveDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a relation to this table's ChildRelation collection where this table isn't the parent table.. /// @@ -3830,7 +3830,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ParentTableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the 'Nested' property to false for this relation.. /// @@ -3839,7 +3839,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_RelationNestedReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to SetParentRow requires a child row whose Table is {0}, but the specified row's Table is {1}.. /// @@ -3848,7 +3848,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_SetParentRowTableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to The same table '{0}' cannot be the child table in two nested relations.. /// @@ -3857,7 +3857,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_TableCantBeNestedInTwoTables", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a collection on a null table.. /// @@ -3866,7 +3866,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_TableNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a relation between tables in different DataSets.. /// @@ -3875,7 +3875,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_TablesInDifferentSets", resourceCulture); } } - + /// /// Looks up a localized string similar to The table this collection displays relations for has been removed from its DataSet.. /// @@ -3884,7 +3884,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_TableWasRemoved", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the child columns of this relation.. /// @@ -3893,7 +3893,7 @@ internal class Strings { return ResourceManager.GetString("DataRelationChildColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether relations are nested.. /// @@ -3902,7 +3902,7 @@ internal class Strings { return ResourceManager.GetString("DataRelationNested", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the parent columns of this relation.. /// @@ -3911,7 +3911,7 @@ internal class Strings { return ResourceManager.GetString("DataRelationParentColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The name used to look up this relation in the Relations collection of a DataSet.. /// @@ -3920,7 +3920,7 @@ internal class Strings { return ResourceManager.GetString("DataRelationRelationNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot delete this row since it's already deleted.. /// @@ -3929,7 +3929,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_AlreadyDeleted", resourceCulture); } } - + /// /// Looks up a localized string similar to This row already belongs to another table.. /// @@ -3938,7 +3938,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_AlreadyInOtherCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to This row already belongs to this table.. /// @@ -3947,7 +3947,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_AlreadyInTheCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove a row that's already been removed.. /// @@ -3956,7 +3956,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_AlreadyRemoved", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call BeginEdit() inside the RowChanging event.. /// @@ -3965,7 +3965,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_BeginEditInRowChanging", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call CancelEdit() inside an OnRowChanging event. Throw an exception to cancel this update.. /// @@ -3974,7 +3974,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_CancelEditInRowChanging", resourceCulture); } } - + /// /// Looks up a localized string similar to Deleted row information cannot be accessed through the row.. /// @@ -3983,7 +3983,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_DeletedRowInaccessible", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call Delete inside an OnRowDeleting event. Throw an exception to cancel this delete.. /// @@ -3992,7 +3992,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_DeleteInRowDeleting", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change a proposed value in the RowChanging event.. /// @@ -4001,7 +4001,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_EditInRowChanging", resourceCulture); } } - + /// /// Looks up a localized string similar to This row is empty.. /// @@ -4010,7 +4010,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_Empty", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call EndEdit() inside an OnRowChanging event.. /// @@ -4019,7 +4019,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_EndEditInRowChanging", resourceCulture); } } - + /// /// Looks up a localized string similar to Unrecognized row state bit pattern.. /// @@ -4028,7 +4028,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_InvalidRowBitPattern", resourceCulture); } } - + /// /// Looks up a localized string similar to Version must be Original, Current, or Proposed.. /// @@ -4037,7 +4037,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_InvalidVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to A child row has multiple parents.. /// @@ -4046,7 +4046,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_MultipleParents", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no Current data to access.. /// @@ -4055,7 +4055,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NoCurrentData", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no Original data to access.. /// @@ -4064,7 +4064,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NoOriginalData", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no Proposed data to access.. /// @@ -4073,7 +4073,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NoProposedData", resourceCulture); } } - + /// /// Looks up a localized string similar to The row doesn't belong to the same DataSet as this relation.. /// @@ -4082,7 +4082,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NotInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot perform this operation on a row not in the table.. /// @@ -4091,7 +4091,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NotInTheTable", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no row at position {0}.. /// @@ -4100,7 +4100,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation and child row don't belong to same DataSet.. /// @@ -4109,7 +4109,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_ParentRowNotInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to This row has been removed from a table and does not have any data. BeginEdit() will allow creation of new data in this row.. /// @@ -4118,7 +4118,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RemovedFromTheTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Values are missing in the rowOrder sequence for table '{0}'.. /// @@ -4127,7 +4127,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RowInsertMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to The row insert position {0} is invalid.. /// @@ -4136,7 +4136,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RowInsertOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to The rowOrder value={0} has been found twice for table named '{1}'.. /// @@ -4145,7 +4145,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RowInsertTwice", resourceCulture); } } - + /// /// Looks up a localized string similar to The given DataRow is not in the current DataRowCollection.. /// @@ -4154,7 +4154,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RowOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Input array is longer than the number of columns in this table.. /// @@ -4163,7 +4163,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_ValuesArrayLength", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} is neither a DataColumn nor a DataRelation for table {1}.. /// @@ -4172,7 +4172,7 @@ internal class Strings { return ResourceManager.GetString("DataROWView_PropertyNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change CaseSensitive or Locale property. This change would lead to at least one DataRelation or Constraint to have different Locale or CaseSensitive settings between its related tables.. /// @@ -4181,7 +4181,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_CannotChangeCaseLocale", resourceCulture); } } - + /// /// Looks up a localized string similar to SchemaSerializationMode property can be set only if it is overridden by derived DataSet.. /// @@ -4190,7 +4190,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_CannotChangeSchemaSerializationMode", resourceCulture); } } - + /// /// Looks up a localized string similar to Constraint Exception.. /// @@ -4199,7 +4199,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultConstraintException", resourceCulture); } } - + /// /// Looks up a localized string similar to Data Exception.. /// @@ -4208,7 +4208,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultDataException", resourceCulture); } } - + /// /// Looks up a localized string similar to Deleted rows inaccessible.. /// @@ -4217,7 +4217,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultDeletedRowInaccessibleException", resourceCulture); } } - + /// /// Looks up a localized string similar to Duplicate name not allowed.. /// @@ -4226,7 +4226,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultDuplicateNameException", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation not supported in the RowChanging event.. /// @@ -4235,7 +4235,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultInRowChangingEventException", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid constraint.. /// @@ -4244,7 +4244,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultInvalidConstraintException", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing primary key.. /// @@ -4253,7 +4253,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultMissingPrimaryKeyException", resourceCulture); } } - + /// /// Looks up a localized string similar to Null not allowed.. /// @@ -4262,7 +4262,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultNoNullAllowedException", resourceCulture); } } - + /// /// Looks up a localized string similar to Column is marked read only.. /// @@ -4271,7 +4271,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultReadOnlyException", resourceCulture); } } - + /// /// Looks up a localized string similar to Row not found in table.. /// @@ -4280,7 +4280,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultRowNotInTableException", resourceCulture); } } - + /// /// Looks up a localized string similar to Version not found.. /// @@ -4289,7 +4289,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultVersionNotFoundException", resourceCulture); } } - + /// /// Looks up a localized string similar to The name '{0}' is invalid. A DataSet cannot have the same name of the DataTable.. /// @@ -4298,7 +4298,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_SetDataSetNameConflicting", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the name of the DataSet to an empty string.. /// @@ -4307,7 +4307,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_SetNameToEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to The schema namespace is invalid. Please use this one instead: {0}.. /// @@ -4316,7 +4316,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_UnsupportedSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether comparing strings within the DataSet is case sensitive.. /// @@ -4325,7 +4325,7 @@ internal class Strings { return ResourceManager.GetString("DataSetCaseSensitiveDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of this DataSet.. /// @@ -4334,7 +4334,7 @@ internal class Strings { return ResourceManager.GetString("DataSetDataSetNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates a custom "view" of the data contained by the DataSet. This view allows filtering, searching, and navigating through the custom data view.. /// @@ -4343,7 +4343,7 @@ internal class Strings { return ResourceManager.GetString("DataSetDefaultViewDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Represents an in-memory cache of data.. /// @@ -4352,7 +4352,7 @@ internal class Strings { return ResourceManager.GetString("DataSetDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether constraint rules are to be followed.. /// @@ -4361,7 +4361,7 @@ internal class Strings { return ResourceManager.GetString("DataSetEnforceConstraintsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates that the DataSet has errors.. /// @@ -4370,7 +4370,7 @@ internal class Strings { return ResourceManager.GetString("DataSetHasErrorsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after Initialization is finished.. /// @@ -4379,7 +4379,7 @@ internal class Strings { return ResourceManager.GetString("DataSetInitializedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates a locale under which to compare strings within the DataSet.. /// @@ -4388,7 +4388,7 @@ internal class Strings { return ResourceManager.GetString("DataSetLocaleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when it is not possible to merge schemas for two tables with the same name.. /// @@ -4397,7 +4397,7 @@ internal class Strings { return ResourceManager.GetString("DataSetMergeFailedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the XML uri namespace for the root element pointed at by this DataSet.. /// @@ -4406,7 +4406,7 @@ internal class Strings { return ResourceManager.GetString("DataSetNamespaceDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the prefix of the namespace used for this DataSet.. /// @@ -4415,7 +4415,7 @@ internal class Strings { return ResourceManager.GetString("DataSetPrefixDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds the relations for this DataSet.. /// @@ -4424,7 +4424,7 @@ internal class Strings { return ResourceManager.GetString("DataSetRelationsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds the tables for this DataSet.. /// @@ -4433,7 +4433,7 @@ internal class Strings { return ResourceManager.GetString("DataSetTablesDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid usage of aggregate function {0}() and Type: {1}.. /// @@ -4442,7 +4442,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_AggregateException", resourceCulture); } } - + /// /// Looks up a localized string similar to Type '{0}' does not implement IComparable interface. Comparison cannot be done.. /// @@ -4451,7 +4451,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_IComparableNotDefined", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid storage type: {0}.. /// @@ -4460,7 +4460,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_InvalidStorageType", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataSet Xml persistency does not support the value '{0}' as Char value, please use Byte storage instead.. /// @@ -4469,7 +4469,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_ProblematicChars", resourceCulture); } } - + /// /// Looks up a localized string similar to Type of value has a mismatch with column type. /// @@ -4478,7 +4478,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_SetInvalidDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable already belongs to another DataSet.. /// @@ -4487,7 +4487,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_AlreadyInOtherDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable already belongs to this DataSet.. /// @@ -4496,7 +4496,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_AlreadyInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a nested relation or an element column to a table containing a SimpleContent column.. /// @@ -4505,7 +4505,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CannotAddToSimpleContent", resourceCulture); } } - + /// /// Looks up a localized string similar to This DataTable can only be remoted as part of DataSet. One or more Expression Columns has reference to other DataTable(s).. /// @@ -4514,7 +4514,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CanNotRemoteDataTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot serialize the DataTable. A DataTable being used in one or more DataColumn expressions is not a descendant of current DataTable.. /// @@ -4523,7 +4523,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CanNotSerializeDataTableHierarchy", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot serialize the DataTable. DataTable name is not set.. /// @@ -4532,7 +4532,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CanNotSerializeDataTableWithEmptyName", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have different remoting format property value for DataSet and DataTable.. /// @@ -4541,7 +4541,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CanNotSetRemotingFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to The name '{0}' is invalid. A DataTable cannot have the same name of the DataSet.. /// @@ -4550,7 +4550,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_DatasetConflictingName", resourceCulture); } } - + /// /// Looks up a localized string similar to A DataTable named '{0}' already belongs to this DataSet.. /// @@ -4559,7 +4559,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_DuplicateName", resourceCulture); } } - + /// /// Looks up a localized string similar to A DataTable named '{0}' with the same Namespace '{1}' already belongs to this DataSet.. /// @@ -4568,7 +4568,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_DuplicateName2", resourceCulture); } } - + /// /// Looks up a localized string similar to PrimaryKey columns do not belong to this table.. /// @@ -4577,7 +4577,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_ForeignPrimaryKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove table {0}, because it referenced in ForeignKeyConstraint {1}. Remove the constraint first.. /// @@ -4586,7 +4586,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_InConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove a table that has existing relations. Remove relations first.. /// @@ -4595,7 +4595,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_InRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} isn't a valid Sort string entry.. /// @@ -4604,7 +4604,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_InvalidSortString", resourceCulture); } } - + /// /// Looks up a localized string similar to Table doesn't have a primary key.. /// @@ -4613,7 +4613,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_MissingPrimaryKey", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable already has a simple content column.. /// @@ -4622,7 +4622,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_MultipleSimpleContentColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to TableName is required when it is part of a DataSet.. /// @@ -4631,7 +4631,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_NoName", resourceCulture); } } - + /// /// Looks up a localized string similar to Table {0} does not belong to this DataSet.. /// @@ -4640,7 +4640,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_NotInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find table {0}.. /// @@ -4649,7 +4649,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to The table ({0}) cannot be the child table to itself in a nested relation: the DataSet name conflicts with the table name.. /// @@ -4658,7 +4658,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_SelfnestedDatasetConflictingName", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable '{0}' does not match to any DataTable in source.. /// @@ -4667,7 +4667,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_TableNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether comparing strings within the table is case sensitive.. /// @@ -4676,7 +4676,7 @@ internal class Strings { return ResourceManager.GetString("DataTableCaseSensitiveDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns the child relations for this table.. /// @@ -4685,7 +4685,7 @@ internal class Strings { return ResourceManager.GetString("DataTableChildRelationsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when a value has been changed for this column.. /// @@ -4694,7 +4694,7 @@ internal class Strings { return ResourceManager.GetString("DataTableColumnChangedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when a value has been submitted for this column. The user can modify the proposed value and should throw an exception to cancel the edit.. /// @@ -4703,7 +4703,7 @@ internal class Strings { return ResourceManager.GetString("DataTableColumnChangingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds the columns for this table.. /// @@ -4712,7 +4712,7 @@ internal class Strings { return ResourceManager.GetString("DataTableColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds the constraints for this table.. /// @@ -4721,7 +4721,7 @@ internal class Strings { return ResourceManager.GetString("DataTableConstraintsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the DataSet to which this table belongs.. /// @@ -4730,7 +4730,7 @@ internal class Strings { return ResourceManager.GetString("DataTableDataSetDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to This is the default DataView for the table.. /// @@ -4739,7 +4739,7 @@ internal class Strings { return ResourceManager.GetString("DataTableDefaultViewDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression used to compute the data-bound value of this row.. /// @@ -4748,7 +4748,7 @@ internal class Strings { return ResourceManager.GetString("DataTableDisplayExpressionDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns whether the table has errors.. /// @@ -4757,7 +4757,7 @@ internal class Strings { return ResourceManager.GetString("DataTableHasErrorsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates a locale under which to compare strings within the table.. /// @@ -4766,7 +4766,7 @@ internal class Strings { return ResourceManager.GetString("DataTableLocaleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Individual columns mappings when this table mapping is matched.. /// @@ -4775,7 +4775,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMapping_ColumnMappings", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable.TableName. /// @@ -4784,7 +4784,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMapping_DataSetTable", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataTableMapping source table name. This name is case sensitive.. /// @@ -4793,7 +4793,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMapping_SourceTable", resourceCulture); } } - + /// /// Looks up a localized string similar to The number of items in the collection. /// @@ -4802,7 +4802,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMappings_Count", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified DataTableMapping object. /// @@ -4811,7 +4811,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMappings_Item", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates an initial starting size for this table.. /// @@ -4820,7 +4820,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMinimumCapacityDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the XML uri namespace for the elements contained in this table.. /// @@ -4829,7 +4829,7 @@ internal class Strings { return ResourceManager.GetString("DataTableNamespaceDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns the parent relations for this table.. /// @@ -4838,7 +4838,7 @@ internal class Strings { return ResourceManager.GetString("DataTableParentRelationsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the Prefix of the namespace used for this table in XML representation.. /// @@ -4847,7 +4847,7 @@ internal class Strings { return ResourceManager.GetString("DataTablePrefixDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the column(s) that represent the primary key for this table.. /// @@ -4856,7 +4856,7 @@ internal class Strings { return ResourceManager.GetString("DataTablePrimaryKeyDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create DataTableReader. Arguments contain null value.. /// @@ -4865,7 +4865,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_ArgumentContainsNullValue", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTableReader Cannot be created. There is no DataTable in DataSet.. /// @@ -4874,7 +4874,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_CannotCreateDataReaderOnEmptyDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Current DataTable '{0}' is empty. There is no DataRow in DataTable.. /// @@ -4883,7 +4883,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_DataTableCleared", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create DataTableReader. Argument is Empty.. /// @@ -4892,7 +4892,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_DataTableReaderArgumentIsEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTableReader is invalid for current DataTable '{0}'.. /// @@ -4901,7 +4901,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_InvalidDataTableReader", resourceCulture); } } - + /// /// Looks up a localized string similar to Current DataRow is either in Deleted or Detached state.. /// @@ -4910,7 +4910,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_InvalidRowInDataTableReader", resourceCulture); } } - + /// /// Looks up a localized string similar to Schema of current DataTable '{0}' in DataTableReader has changed, DataTableReader is invalid.. /// @@ -4919,7 +4919,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_SchemaInvalidDataTableReader", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after a row in the table has been successfully edited.. /// @@ -4928,7 +4928,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowChangedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when the row is being changed so that the event handler can modify or cancel the change. The user can modify values in the row and should throw an exception to cancel the edit.. /// @@ -4937,7 +4937,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowChangingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after a row in the table has been successfully deleted.. /// @@ -4946,7 +4946,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowDeletedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when a row in the table marked for deletion. Throw an exception to cancel the deletion.. /// @@ -4955,7 +4955,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowDeletingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after all rows in the table has been successfully cleared.. /// @@ -4964,7 +4964,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowsClearedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs prior to clearing all rows from the table.. /// @@ -4973,7 +4973,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowsClearingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the collection that holds the rows of data for this table.. /// @@ -4982,7 +4982,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after a new DataRow has been instantiated.. /// @@ -4991,7 +4991,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowsNewRowDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the name used to look up this table in the Tables collection of a DataSet.. /// @@ -5000,7 +5000,7 @@ internal class Strings { return ResourceManager.GetString("DataTableTableNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add external objects to this list.. /// @@ -5009,7 +5009,7 @@ internal class Strings { return ResourceManager.GetString("DataView_AddExternalObject", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call AddNew on a DataView where AllowNew is false.. /// @@ -5018,7 +5018,7 @@ internal class Strings { return ResourceManager.GetString("DataView_AddNewNotAllowNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot bind to DataTable with no name.. /// @@ -5027,7 +5027,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotBindTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot clear this list.. /// @@ -5036,7 +5036,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotClear", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot delete on a DataSource where AllowDelete is false.. /// @@ -5045,7 +5045,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot edit on a DataSource where AllowEdit is false.. /// @@ -5054,7 +5054,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotEdit", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change DataSet property once it is set.. /// @@ -5063,7 +5063,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotSetDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change Table property once it is set.. /// @@ -5072,7 +5072,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotSetTable", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable must be set prior to using DataView.. /// @@ -5081,7 +5081,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotUse", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet must be set prior to using DataViewManager.. /// @@ -5090,7 +5090,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotUseDataViewManager", resourceCulture); } } - + /// /// Looks up a localized string similar to The relation is not parented to the table to which this DataView points.. /// @@ -5099,7 +5099,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CreateChildView", resourceCulture); } } - + /// /// Looks up a localized string similar to Index {0} is either negative or above rows count.. /// @@ -5108,7 +5108,7 @@ internal class Strings { return ResourceManager.GetString("DataView_GetElementIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot insert external objects to this list.. /// @@ -5117,7 +5117,7 @@ internal class Strings { return ResourceManager.GetString("DataView_InsertExternalObject", resourceCulture); } } - + /// /// Looks up a localized string similar to DataView is not open.. /// @@ -5126,7 +5126,7 @@ internal class Strings { return ResourceManager.GetString("DataView_NotOpen", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove objects not in the list.. /// @@ -5135,7 +5135,7 @@ internal class Strings { return ResourceManager.GetString("DataView_RemoveExternalObject", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change DataSet on a DataViewManager that's already the default view for a DataSet.. /// @@ -5144,7 +5144,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetDataSetFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set {0}.. /// @@ -5153,7 +5153,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set an object into this list.. /// @@ -5162,7 +5162,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetIListObject", resourceCulture); } } - + /// /// Looks up a localized string similar to RowStateFilter cannot show ModifiedOriginals and ModifiedCurrents at the same time.. /// @@ -5171,7 +5171,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetRowStateFilter", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change Table property on a DefaultView or a DataView coming from a DataViewManager.. /// @@ -5180,7 +5180,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this DataView and the user interface associated with it allows deletes.. /// @@ -5189,7 +5189,7 @@ internal class Strings { return ResourceManager.GetString("DataViewAllowDeleteDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this DataView and the user interface associated with it allows edits.. /// @@ -5198,7 +5198,7 @@ internal class Strings { return ResourceManager.GetString("DataViewAllowEditDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this DataView and the user interface associated with it allows new rows to be added.. /// @@ -5207,7 +5207,7 @@ internal class Strings { return ResourceManager.GetString("DataViewAllowNewDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether to use the default sort if the Sort property is not set.. /// @@ -5216,7 +5216,7 @@ internal class Strings { return ResourceManager.GetString("DataViewApplyDefaultSortDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns the number of items currently in this view.. /// @@ -5225,7 +5225,7 @@ internal class Strings { return ResourceManager.GetString("DataViewCountDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to This returns a pointer to back to the DataViewManager that owns this DataSet (if any).. /// @@ -5234,7 +5234,7 @@ internal class Strings { return ResourceManager.GetString("DataViewDataViewManagerDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether the view is open.. /// @@ -5243,7 +5243,7 @@ internal class Strings { return ResourceManager.GetString("DataViewIsOpenDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates that the data returned by this DataView has somehow changed.. /// @@ -5252,7 +5252,7 @@ internal class Strings { return ResourceManager.GetString("DataViewListChangedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the source of data for this DataViewManager.. /// @@ -5261,7 +5261,7 @@ internal class Strings { return ResourceManager.GetString("DataViewManagerDataSetDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the sorting/filtering/state settings for any table in the corresponding DataSet.. /// @@ -5270,7 +5270,7 @@ internal class Strings { return ResourceManager.GetString("DataViewManagerTableSettingsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates an expression used to filter the data returned by this DataView.. /// @@ -5279,7 +5279,7 @@ internal class Strings { return ResourceManager.GetString("DataViewRowFilterDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the versions of data returned by this DataView.. /// @@ -5288,7 +5288,7 @@ internal class Strings { return ResourceManager.GetString("DataViewRowStateFilterDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the names of the column and the order in which data is returned by this DataView.. /// @@ -5297,7 +5297,7 @@ internal class Strings { return ResourceManager.GetString("DataViewSortDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the table this DataView uses to get data.. /// @@ -5306,7 +5306,7 @@ internal class Strings { return ResourceManager.GetString("DataViewTableDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Command text to execute.. /// @@ -5315,7 +5315,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_CommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to Time to wait for command to execute.. /// @@ -5324,7 +5324,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_CommandTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to How to interpret the CommandText.. /// @@ -5333,7 +5333,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_CommandType", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection used by the command.. /// @@ -5342,7 +5342,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_Connection", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameters collection.. /// @@ -5351,7 +5351,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_Parameters", resourceCulture); } } - + /// /// Looks up a localized string similar to When records are affected by a given statement by the execution of the command.. /// @@ -5360,7 +5360,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_StatementCompleted", resourceCulture); } } - + /// /// Looks up a localized string similar to The transaction used by the command.. /// @@ -5369,7 +5369,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_Transaction", resourceCulture); } } - + /// /// Looks up a localized string similar to When used by a DataAdapter.Update, how command results are applied to the current DataRow.. /// @@ -5378,7 +5378,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_UpdatedRowSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the position of the catalog name in a qualified table name in a text command.. /// @@ -5387,7 +5387,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_CatalogLocation", resourceCulture); } } - + /// /// Looks up a localized string similar to The character that separates the catalog name from the rest of the identifier in a text command.. /// @@ -5396,7 +5396,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_CatalogSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to How the where clause is auto-generated for the Update and Delete commands when not specified by the user.. /// @@ -5405,7 +5405,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_ConflictOption", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter for which to automatically generate Commands.. /// @@ -5414,7 +5414,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_DataAdapter", resourceCulture); } } - + /// /// Looks up a localized string similar to The prefix string wrapped around sql objects.. /// @@ -5423,7 +5423,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_QuotePrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to The suffix string wrapped around sql objects.. /// @@ -5432,7 +5432,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_QuoteSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Use schema from DataTable or the SelectCommand.. /// @@ -5441,7 +5441,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_SchemaLocation", resourceCulture); } } - + /// /// Looks up a localized string similar to The character that separates the schema name from the rest of the identifier in a text command.. /// @@ -5450,7 +5450,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_SchemaSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to How the set clause is auto-generated for the Update command when not specified by the user.. /// @@ -5459,7 +5459,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_SetAllValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered when messages arrive from the DataSource.. /// @@ -5468,7 +5468,7 @@ internal class Strings { return ResourceManager.GetString("DbConnection_InfoMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The ConnectionState indicating whether the connection is open or closed.. /// @@ -5477,7 +5477,7 @@ internal class Strings { return ResourceManager.GetString("DbConnection_State", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered when the connection changes state.. /// @@ -5486,7 +5486,7 @@ internal class Strings { return ResourceManager.GetString("DbConnection_StateChange", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, indicates that managed connection pooling should be used.. /// @@ -5495,7 +5495,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_AdoNetPooler", resourceCulture); } } - + /// /// Looks up a localized string similar to Declares the application workload type when connecting to a server.. /// @@ -5504,7 +5504,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ApplicationIntent", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the application.. /// @@ -5513,7 +5513,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ApplicationName", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, enables usage of the Asynchronous functionality in the .NET Framework Data Provider.. /// @@ -5522,7 +5522,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_AsynchronousProcessing", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the primary file, including the full path name, of an attachable database.. /// @@ -5531,7 +5531,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_AttachDBFilename", resourceCulture); } } - + /// /// Looks up a localized string similar to Specifies the method of authenticating with SQL Server.. /// @@ -5540,7 +5540,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Authentication", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified client certificate for authenticating with SQL Server. . /// @@ -5549,7 +5549,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Certificate", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, indicates the connection state is reset when removed from the pool.. /// @@ -5558,7 +5558,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectionReset", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection string used to connect to the Data Source.. /// @@ -5567,7 +5567,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Number of attempts to restore connection.. /// @@ -5576,7 +5576,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectRetryCount", resourceCulture); } } - + /// /// Looks up a localized string similar to Delay between attempts to restore connection.. /// @@ -5585,7 +5585,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectRetryInterval", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error.. /// @@ -5594,7 +5594,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, indicates the connection should be from the Sql Server context. Available only when running in the Sql Server process.. /// @@ -5603,7 +5603,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to The SQL Server Language record name.. /// @@ -5612,7 +5612,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_CurrentLanguage", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the name of the data source to connect to.. /// @@ -5621,7 +5621,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_DataSource", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the ODBC Driver to use when connecting to the Data Source.. /// @@ -5630,7 +5630,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Driver", resourceCulture); } } - + /// /// Looks up a localized string similar to The DSN to use when connecting to the Data Source.. /// @@ -5639,7 +5639,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_DSN", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed.. /// @@ -5648,7 +5648,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Encrypt", resourceCulture); } } - + /// /// Looks up a localized string similar to Sessions in a Component Services (or MTS, if you are using Microsoft Windows NT) environment should automatically be enlisted in a global transaction where required.. /// @@ -5657,7 +5657,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Enlist", resourceCulture); } } - + /// /// Looks up a localized string similar to The name or network address of the instance of SQL Server that acts as a failover partner.. /// @@ -5666,7 +5666,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_FailoverPartner", resourceCulture); } } - + /// /// Looks up a localized string similar to The UDL file to use when connecting to the Data Source.. /// @@ -5675,7 +5675,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_FileName", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the initial catalog or database in the data source.. /// @@ -5684,7 +5684,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_InitialCatalog", resourceCulture); } } - + /// /// Looks up a localized string similar to Whether the connection is to be a secure connection or not.. /// @@ -5693,7 +5693,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_IntegratedSecurity", resourceCulture); } } - + /// /// Looks up a localized string similar to The minimum amount of time (in seconds) for this connection to live in the pool before being destroyed.. /// @@ -5702,7 +5702,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_LoadBalanceTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to The maximum number of connections allowed in the pool.. /// @@ -5711,7 +5711,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_MaxPoolSize", resourceCulture); } } - + /// /// Looks up a localized string similar to The minimum number of connections allowed in the pool.. /// @@ -5720,7 +5720,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_MinPoolSize", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, multiple result sets can be returned and read from one connection.. /// @@ -5729,7 +5729,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_MultipleActiveResultSets", resourceCulture); } } - + /// /// Looks up a localized string similar to If your application is connecting to a high-availability, disaster recovery (AlwaysOn) availability group (AG) on different subnets, MultiSubnetFailover=Yes configures SqlConnection to provide faster detection of and connection to the (currently) active server.. /// @@ -5738,7 +5738,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_MultiSubnetFailover", resourceCulture); } } - + /// /// Looks up a localized string similar to The network library used to establish a connection to an instance of SQL Server.. /// @@ -5747,7 +5747,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_NetworkLibrary", resourceCulture); } } - + /// /// Looks up a localized string similar to Specifies which OLE DB Services to enable or disable with the OleDb Provider.. /// @@ -5756,7 +5756,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_OleDbServices", resourceCulture); } } - + /// /// Looks up a localized string similar to Size in bytes of the network packets used to communicate with an instance of SQL Server.. /// @@ -5765,7 +5765,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_PacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the password to be used when connecting to the data source.. /// @@ -5774,7 +5774,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Password", resourceCulture); } } - + /// /// Looks up a localized string similar to When false, security-sensitive information, such as the password, is not returned as part of the connection if the connection is open or has ever been in an open state.. /// @@ -5783,7 +5783,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_PersistSecurityInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Defines the blocking period behavior for a connection pool.. /// @@ -5792,7 +5792,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_PoolBlockingPeriod", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, the connection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool.. /// @@ -5801,7 +5801,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Pooling", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the OLE DB Provider to use when connecting to the Data Source.. /// @@ -5810,7 +5810,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Provider", resourceCulture); } } - + /// /// Looks up a localized string similar to Used by SQL Server in Replication.. /// @@ -5819,7 +5819,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Replication", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates binding behavior of connection to a System.Transactions Transaction when enlisted.. /// @@ -5828,7 +5828,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_TransactionBinding", resourceCulture); } } - + /// /// Looks up a localized string similar to If your application connects to different networks, TransparentNetworkIPResolution=Yes configures SqlConnection to provide transparent connection resolution to the currently active server, independently of the network IP topology.. /// @@ -5837,7 +5837,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_TransparentNetworkIPResolution", resourceCulture); } } - + /// /// Looks up a localized string similar to When true (and encrypt=true), SQL Server uses SSL encryption for all data sent between the client and server without validating the server certificate.. /// @@ -5846,7 +5846,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_TrustServerCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates which server type system the provider will expose through the DataReader.. /// @@ -5855,7 +5855,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_TypeSystemVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the user ID to be used when connecting to the data source.. /// @@ -5864,7 +5864,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_UserID", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether the connection will be re-directed to connect to an instance of SQL Server running under the user's account.. /// @@ -5873,7 +5873,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_UserInstance", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the workstation connecting to SQL Server.. /// @@ -5882,7 +5882,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_WorkstationID", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for deleted rows in DataSet.. /// @@ -5891,7 +5891,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_DeleteCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for new rows in DataSet.. /// @@ -5900,7 +5900,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_InsertCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered before every DataRow during Update.. /// @@ -5909,7 +5909,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_RowUpdated", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered after every DataRow during Update.. /// @@ -5918,7 +5918,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_RowUpdating", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Fill/FillSchema.. /// @@ -5927,7 +5927,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_SelectCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Number of rows to batch together before executing against the data source.. /// @@ -5936,7 +5936,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_UpdateBatchSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for modified rows in DataSet.. /// @@ -5945,7 +5945,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_UpdateCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Only necessary to set for decimal and numeric parameters when using with Prepare, FillSchema and CommandBuilder scenarios.. /// @@ -5954,7 +5954,7 @@ internal class Strings { return ResourceManager.GetString("DbDataParameter_Precision", resourceCulture); } } - + /// /// Looks up a localized string similar to Only necessary to set for decimal and numeric parameters when using with Prepare, FillSchema and CommandBuilder scenarios.. /// @@ -5963,7 +5963,7 @@ internal class Strings { return ResourceManager.GetString("DbDataParameter_Scale", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter generic type.. /// @@ -5972,7 +5972,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_DbType", resourceCulture); } } - + /// /// Looks up a localized string similar to Input, output, or bidirectional parameter.. /// @@ -5981,7 +5981,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_Direction", resourceCulture); } } - + /// /// Looks up a localized string similar to a design-time property used for strongly typed code-generation.. /// @@ -5990,7 +5990,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_IsNullable", resourceCulture); } } - + /// /// Looks up a localized string similar to Offset in variable length data types.. /// @@ -5999,7 +5999,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_Offset", resourceCulture); } } - + /// /// Looks up a localized string similar to Name of the parameter.. /// @@ -6008,7 +6008,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_ParameterName", resourceCulture); } } - + /// /// Looks up a localized string similar to Size of variable length data types (string & arrays).. /// @@ -6017,7 +6017,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_Size", resourceCulture); } } - + /// /// Looks up a localized string similar to When used by a DataAdapter.Update, the source column name that is used to find the DataSetColumn name in the ColumnMappings. This is to copy a value between the parameter and a data row.. /// @@ -6026,7 +6026,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_SourceColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to When used by DataAdapter.Update, the parameter value is changed from DBNull.Value into (Int32)1 or (Int32)0 if non-null.. /// @@ -6035,7 +6035,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_SourceColumnNullMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to When used by a DataAdapter.Update (UpdateCommand only), the version of the DataRow value that is used to update the data source.. /// @@ -6044,7 +6044,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_SourceVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Value of the parameter.. /// @@ -6053,7 +6053,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_Value", resourceCulture); } } - + /// /// Looks up a localized string similar to How are the Insert/Update/DeleteCommands generated when not set by the user.. /// @@ -6062,7 +6062,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_ConflictDetection", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection used if the the Select/Insert/Update/DeleteCommands do not already have a connection.. /// @@ -6071,7 +6071,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_Connection", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for deleted rows in the DataTable.. /// @@ -6080,7 +6080,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_DeleteCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for new rows in the DataTable.. /// @@ -6089,7 +6089,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_InsertCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Should Fill return provider specific values or common CLSCompliant values.. /// @@ -6098,7 +6098,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_ReturnProviderSpecificTypes", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Fill.. /// @@ -6107,7 +6107,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_SelectCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to How to map source table to DataTable.. /// @@ -6116,7 +6116,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_TableMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to Number of rows to batch together before executing against the data source.. /// @@ -6125,7 +6125,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_UpdateBatchSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for modified rows in the DataTable.. /// @@ -6134,7 +6134,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_UpdateCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error occurred when retrying the download of the HGS root certificate after the initial request failed. Contact Customer Support Services.. /// @@ -6143,7 +6143,7 @@ internal class Strings { return ResourceManager.GetString("EnclaveRetrySleepInSecondsValueException", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Unable to invalidate the requested enclave session, because it does not exist in the cache. Contact Customer Support Services.. /// @@ -6152,7 +6152,7 @@ internal class Strings { return ResourceManager.GetString("EnclaveSessionInvalidationFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. The token received from SQL Server is expired. Contact Customer Support Services.. /// @@ -6161,7 +6161,7 @@ internal class Strings { return ResourceManager.GetString("ExpiredAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error in aggregate argument: Expecting a single column argument with possible 'Child' qualifier.. /// @@ -6170,7 +6170,7 @@ internal class Strings { return ResourceManager.GetString("Expr_AggregateArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to Unbound reference in the aggregate expression '{0}'.. /// @@ -6179,7 +6179,7 @@ internal class Strings { return ResourceManager.GetString("Expr_AggregateUnbound", resourceCulture); } } - + /// /// Looks up a localized string similar to Operator '{0}' is ambiguous on operands of type '{1}' and '{2}'. Cannot mix signed and unsigned types. Please use explicit Convert() function.. /// @@ -6188,7 +6188,7 @@ internal class Strings { return ResourceManager.GetString("Expr_AmbiguousBinop", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}() argument is out of range.. /// @@ -6197,7 +6197,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ArgumentOutofRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Type mismatch in function argument: {0}(), argument {1}, expected {2}.. /// @@ -6206,7 +6206,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ArgumentType", resourceCulture); } } - + /// /// Looks up a localized string similar to Type mismatch in function argument: {0}(), argument {1}, expected one of the Integer types.. /// @@ -6215,7 +6215,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ArgumentTypeInteger", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find the parent relation '{0}'.. /// @@ -6224,7 +6224,7 @@ internal class Strings { return ResourceManager.GetString("Expr_BindFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot evaluate. Expression '{0}' is not an aggregate.. /// @@ -6233,7 +6233,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ComputeNotAggregate", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot convert from {0} to {1}.. /// @@ -6242,7 +6242,7 @@ internal class Strings { return ResourceManager.GetString("Expr_DatatypeConvertion", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot convert value '{0}' to Type: {1}.. /// @@ -6251,7 +6251,7 @@ internal class Strings { return ResourceManager.GetString("Expr_DatavalueConvertion", resourceCulture); } } - + /// /// Looks up a localized string similar to Divide by zero error encountered.. /// @@ -6260,7 +6260,7 @@ internal class Strings { return ResourceManager.GetString("Expr_DivideByZero", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot evaluate non-constant expression without current row.. /// @@ -6269,7 +6269,7 @@ internal class Strings { return ResourceManager.GetString("Expr_EvalNoContext", resourceCulture); } } - + /// /// Looks up a localized string similar to Expression is too complex.. /// @@ -6278,7 +6278,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ExpressionTooComplex", resourceCulture); } } - + /// /// Looks up a localized string similar to Unbound reference in the expression '{0}'.. /// @@ -6287,7 +6287,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ExpressionUnbound", resourceCulture); } } - + /// /// Looks up a localized string similar to Filter expression '{0}' does not evaluate to a Boolean term.. /// @@ -6296,7 +6296,7 @@ internal class Strings { return ResourceManager.GetString("Expr_FilterConvertion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid number of arguments: function {0}().. /// @@ -6305,7 +6305,7 @@ internal class Strings { return ResourceManager.GetString("Expr_FunctionArgumentCount", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains invalid date constant '{0}'.. /// @@ -6314,7 +6314,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidDate", resourceCulture); } } - + /// /// Looks up a localized string similar to 'hours' argument is out of range. Value must be between -14 and +14.. /// @@ -6323,7 +6323,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidHoursArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to 'minutes' argument is out of range. Value must be between -59 and +59.. /// @@ -6332,7 +6332,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidMinutesArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid column name [{0}].. /// @@ -6341,7 +6341,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidName", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains invalid name: '{0}'.. /// @@ -6350,7 +6350,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidNameBracketing", resourceCulture); } } - + /// /// Looks up a localized string similar to Error in Like operator: the string pattern '{0}' is invalid.. /// @@ -6359,7 +6359,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidPattern", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains an invalid string constant: {0}.. /// @@ -6368,7 +6368,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidString", resourceCulture); } } - + /// /// Looks up a localized string similar to Provided range for time one exceeds total of 14 hours.. /// @@ -6377,7 +6377,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidTimeZoneRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid type name '{0}'.. /// @@ -6386,7 +6386,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidType", resourceCulture); } } - + /// /// Looks up a localized string similar to Need a row or a table to Invoke DataFilter.. /// @@ -6395,7 +6395,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvokeArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: The IN keyword must be followed by a non-empty list of expressions separated by commas, and also must be enclosed in parentheses.. /// @@ -6404,7 +6404,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InWithoutList", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: The items following the IN keyword must be separated by commas and be enclosed in parentheses.. /// @@ -6413,7 +6413,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InWithoutParentheses", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: Invalid usage of 'Is' operator. Correct syntax: <expression> Is [Not] Null.. /// @@ -6422,7 +6422,7 @@ internal class Strings { return ResourceManager.GetString("Expr_IsSyntax", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error in Lookup expression: Expecting keyword 'Parent' followed by a single column argument with possible relation qualifier: Parent[(<relation_name>)].<column_name>.. /// @@ -6431,7 +6431,7 @@ internal class Strings { return ResourceManager.GetString("Expr_LookupArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to Kind property of provided DateTime argument, does not match 'hours' and 'minutes' arguments.. /// @@ -6440,7 +6440,7 @@ internal class Strings { return ResourceManager.GetString("Expr_MismatchKindandTimeSpan", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: Missing operand after '{0}' operator.. /// @@ -6449,7 +6449,7 @@ internal class Strings { return ResourceManager.GetString("Expr_MissingOperand", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: Missing operand before '{0}' operator.. /// @@ -6458,7 +6458,7 @@ internal class Strings { return ResourceManager.GetString("Expr_MissingOperandBefore", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression is missing the closing parenthesis.. /// @@ -6467,7 +6467,7 @@ internal class Strings { return ResourceManager.GetString("Expr_MissingRightParen", resourceCulture); } } - + /// /// Looks up a localized string similar to Only constant expressions are allowed in the expression list for the IN operator.. /// @@ -6476,7 +6476,7 @@ internal class Strings { return ResourceManager.GetString("Expr_NonConstantArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to The feature not implemented. {0}.. /// @@ -6485,7 +6485,7 @@ internal class Strings { return ResourceManager.GetString("Expr_NYI", resourceCulture); } } - + /// /// Looks up a localized string similar to Value is either too large or too small for Type '{0}'.. /// @@ -6494,7 +6494,7 @@ internal class Strings { return ResourceManager.GetString("Expr_Overflow", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error in the expression.. /// @@ -6503,7 +6503,7 @@ internal class Strings { return ResourceManager.GetString("Expr_Syntax", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression has too many closing parentheses.. /// @@ -6512,7 +6512,7 @@ internal class Strings { return ResourceManager.GetString("Expr_TooManyRightParentheses", resourceCulture); } } - + /// /// Looks up a localized string similar to Type mismatch in expression '{0}'.. /// @@ -6521,7 +6521,7 @@ internal class Strings { return ResourceManager.GetString("Expr_TypeMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot perform '{0}' operation on {1} and {2}.. /// @@ -6530,7 +6530,7 @@ internal class Strings { return ResourceManager.GetString("Expr_TypeMismatchInBinop", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find column [{0}].. /// @@ -6539,7 +6539,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnboundName", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains undefined function call {0}().. /// @@ -6548,7 +6548,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UndefinedFunction", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot interpret token '{0}' at position {1}.. /// @@ -6557,7 +6557,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnknownToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Expected {0}, but actual token at the position {2} is {1}.. /// @@ -6566,7 +6566,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnknownToken1", resourceCulture); } } - + /// /// Looks up a localized string similar to The table [{0}] involved in more than one relation. You must explicitly mention a relation name in the expression '{1}'.. /// @@ -6575,7 +6575,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnresolvedRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains unsupported operator '{0}'.. /// @@ -6584,7 +6584,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnsupportedOperator", resourceCulture); } } - + /// /// Looks up a localized string similar to A DataColumn of type '{0}' does not support expression.. /// @@ -6593,7 +6593,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnsupportedType", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds custom user information.. /// @@ -6602,7 +6602,7 @@ internal class Strings { return ResourceManager.GetString("ExtendedPropertiesDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to create enclave session as attestation server is busy.. /// @@ -6611,7 +6611,7 @@ internal class Strings { return ResourceManager.GetString("FailToCreateEnclaveSession", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation information failed. The attestation information has an invalid format. Contact Customer Support Services. Error details: '{0}'.. /// @@ -6620,7 +6620,7 @@ internal class Strings { return ResourceManager.GetString("FailToParseAttestationInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. The token has an invalid format. Contact Customer Support Services. Error details: '{0}'.. /// @@ -6629,7 +6629,7 @@ internal class Strings { return ResourceManager.GetString("FailToParseAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to For accept and reject changes, indicates what kind of cascading should take place across this relation.. /// @@ -6638,7 +6638,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintAcceptRejectRuleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the child columns of this constraint.. /// @@ -6647,7 +6647,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintChildColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to For deletions, indicates what kind of cascading should take place across this relation.. /// @@ -6656,7 +6656,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintDeleteRuleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the parent columns of this constraint.. /// @@ -6665,7 +6665,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintParentColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to For updates, indicates what kind of cascading should take place across this relation.. /// @@ -6674,7 +6674,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintUpdateRuleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the child table of this constraint.. /// @@ -6683,7 +6683,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyRelatedTableDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The attestation service returned an expired HGS root certificate for attestation URL '{0}'. Check the HGS root certificate configured for your HGS instance.. /// @@ -6692,7 +6692,7 @@ internal class Strings { return ResourceManager.GetString("GetAttestationSigningCertificateFailedInvalidCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to The obtained HGS root certificate for attestation URL '{0}' has an invalid format. Verify the attestation URL is correct and the HGS server is online and fully initialized. For more information contact Customer Support Services. Error details: '{1}'.. /// @@ -6701,7 +6701,7 @@ internal class Strings { return ResourceManager.GetString("GetAttestationSigningCertificateRequestFailedFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. Cannot retrieve a public key from the attestation public key endpoint, or the retrieved key has an invalid format. Error details: '{0}'.. /// @@ -6710,7 +6710,7 @@ internal class Strings { return ResourceManager.GetString("GetAttestationTokenSigningKeysFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Signature verification of the enclave's Diffie-Hellman key failed. Contact Customer Support Services.. /// @@ -6719,7 +6719,7 @@ internal class Strings { return ResourceManager.GetString("GetSharedSecretFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Global Transactions are not enabled for this Azure SQL Database. Please contact Azure SQL Database support for assistance.. /// @@ -6728,7 +6728,7 @@ internal class Strings { return ResourceManager.GetString("GT_Disabled", resourceCulture); } } - + /// /// Looks up a localized string similar to The currently loaded System.Transactions.dll does not support Global Transactions. Please upgrade to .NET Framework 4.6.1 or later.. /// @@ -6737,7 +6737,7 @@ internal class Strings { return ResourceManager.GetString("GT_UnsupportedSysTxVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to There are no records in the SqlDataRecord enumeration. To send a table-valued parameter with no rows, use a null reference for the value instead.. /// @@ -6746,7 +6746,7 @@ internal class Strings { return ResourceManager.GetString("IEnumerableOfSqlDataRecordHasNoRows", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed due to an error while decoding the enclave public key obtained from SQL Server. Contact Customer Support Services.. /// @@ -6755,7 +6755,7 @@ internal class Strings { return ResourceManager.GetString("InvalidArgumentToBase64UrlDecoder", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed due to an error while computing a hash of the enclave public key obtained from SQL Server. Contact Customer Support Services.. /// @@ -6764,7 +6764,7 @@ internal class Strings { return ResourceManager.GetString("InvalidArgumentToSHA256", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of the attestation token has failed during signature validation. Exception: '{0}'.. /// @@ -6773,7 +6773,7 @@ internal class Strings { return ResourceManager.GetString("InvalidAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. Claim '{0}' in the token has an invalid value of '{1}'. Verify the attestation policy. If the policy is correct, contact Customer Support Services.. /// @@ -6782,7 +6782,7 @@ internal class Strings { return ResourceManager.GetString("InvalidClaimInAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid column ordinals in schema table. ColumnOrdinals, if present, must not have duplicates or gaps.. /// @@ -6791,7 +6791,7 @@ internal class Strings { return ResourceManager.GetString("InvalidSchemaTableOrdinals", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the columns of this constraint.. /// @@ -6800,7 +6800,7 @@ internal class Strings { return ResourceManager.GetString("KeyConstraintColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates if this constraint is a primary key.. /// @@ -6809,7 +6809,7 @@ internal class Strings { return ResourceManager.GetString("KeyConstraintIsPrimaryKeyDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to ReadOnly Data is Modified.. /// @@ -6818,7 +6818,7 @@ internal class Strings { return ResourceManager.GetString("Load_ReadOnlyDataModified", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime: system.data.localdb configuration file section is of unknown type.. /// @@ -6827,7 +6827,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_BadConfigSectionType", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime: Cannot create named instance.. /// @@ -6836,7 +6836,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_CreateFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime: Cannot load SQLUserInstance.dll.. /// @@ -6845,7 +6845,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_FailedGetDLLHandle", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime: Invalid instance version specification found in the configuration file.. /// @@ -6854,7 +6854,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_InvalidVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid SQLUserInstance.dll found at the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -6863,7 +6863,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_MethodNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot obtain Local Database Runtime error message. /// @@ -6872,7 +6872,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_UnobtainableMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection name '{0}' matches at least two collections with the same name but with different case, but does not match any of them exactly.. /// @@ -6881,7 +6881,7 @@ internal class Strings { return ResourceManager.GetString("MDF_AmbiguousCollectionName", resourceCulture); } } - + /// /// Looks up a localized string similar to There are multiple collections named '{0}'.. /// @@ -6890,7 +6890,7 @@ internal class Strings { return ResourceManager.GetString("MDF_CollectionNameISNotUnique", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection '{0}' is missing from the metadata XML.. /// @@ -6899,7 +6899,7 @@ internal class Strings { return ResourceManager.GetString("MDF_DataTableDoesNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataSourceInformation table must contain exactly one row.. /// @@ -6908,7 +6908,7 @@ internal class Strings { return ResourceManager.GetString("MDF_IncorrectNumberOfDataSourceInformationRows", resourceCulture); } } - + /// /// Looks up a localized string similar to '{2}' is not a valid value for the '{1}' restriction of the '{0}' schema collection.. /// @@ -6917,7 +6917,7 @@ internal class Strings { return ResourceManager.GetString("MDF_InvalidRestrictionValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The metadata XML is invalid.. /// @@ -6926,7 +6926,7 @@ internal class Strings { return ResourceManager.GetString("MDF_InvalidXml", resourceCulture); } } - + /// /// Looks up a localized string similar to The metadata XML is invalid. The {1} column of the {0} collection must contain a non-empty string.. /// @@ -6935,7 +6935,7 @@ internal class Strings { return ResourceManager.GetString("MDF_InvalidXmlInvalidValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The metadata XML is invalid. The {0} collection must contain a {1} column and it must be a string column.. /// @@ -6944,7 +6944,7 @@ internal class Strings { return ResourceManager.GetString("MDF_InvalidXmlMissingColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to One of the required DataSourceInformation tables columns is missing.. /// @@ -6953,7 +6953,7 @@ internal class Strings { return ResourceManager.GetString("MDF_MissingDataSourceInformationColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to One or more of the required columns of the restrictions collection is missing.. /// @@ -6962,7 +6962,7 @@ internal class Strings { return ResourceManager.GetString("MDF_MissingRestrictionColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to A restriction exists for which there is no matching row in the restrictions collection.. /// @@ -6971,7 +6971,7 @@ internal class Strings { return ResourceManager.GetString("MDF_MissingRestrictionRow", resourceCulture); } } - + /// /// Looks up a localized string similar to The schema table contains no columns.. /// @@ -6980,7 +6980,7 @@ internal class Strings { return ResourceManager.GetString("MDF_NoColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to build the '{0}' collection because execution of the SQL query failed. See the inner exception for details.. /// @@ -6989,7 +6989,7 @@ internal class Strings { return ResourceManager.GetString("MDF_QueryFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to More restrictions were provided than the requested schema ('{0}') supports.. /// @@ -6998,7 +6998,7 @@ internal class Strings { return ResourceManager.GetString("MDF_TooManyRestrictions", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to build schema collection '{0}';. /// @@ -7007,7 +7007,7 @@ internal class Strings { return ResourceManager.GetString("MDF_UnableToBuildCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested collection ({0}) is not defined.. /// @@ -7016,7 +7016,7 @@ internal class Strings { return ResourceManager.GetString("MDF_UndefinedCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to The population mechanism '{0}' is not defined.. /// @@ -7025,7 +7025,7 @@ internal class Strings { return ResourceManager.GetString("MDF_UndefinedPopulationMechanism", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested collection ({0}) is not supported by this version of the provider.. /// @@ -7034,7 +7034,7 @@ internal class Strings { return ResourceManager.GetString("MDF_UnsupportedVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDbType.Structured type is only supported for multiple valued types.. /// @@ -7043,7 +7043,7 @@ internal class Strings { return ResourceManager.GetString("MetaType_SingleValuedStructNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of the attestation token failed. Claim '{0}' is missing in the token. Verify the attestation policy. If the policy is correct, contact Customer Support Services.. /// @@ -7052,7 +7052,7 @@ internal class Strings { return ResourceManager.GetString("MissingClaimInAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Simple type '{0}' has already be declared with different '{1}'.. /// @@ -7061,7 +7061,7 @@ internal class Strings { return ResourceManager.GetString("NamedSimpleType_InvalidDuplicateNamedSimpleTypeDelaration", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified value is not valid in the '{0}' enumeration.. /// @@ -7070,7 +7070,7 @@ internal class Strings { return ResourceManager.GetString("net_invalid_enum", resourceCulture); } } - + /// /// Looks up a localized string similar to DateType column for field '{0}' in schema table is null. DataType must be non-null.. /// @@ -7079,7 +7079,7 @@ internal class Strings { return ResourceManager.GetString("NullSchemaTableDataTypeNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - unable to allocate an environment handle.. /// @@ -7088,7 +7088,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_CantAllocateEnvironmentHandle", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - unable to enable connection pooling.... /// @@ -7097,7 +7097,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_CantEnableConnectionpooling", resourceCulture); } } - + /// /// Looks up a localized string similar to Can't set property on an open connection.. /// @@ -7106,7 +7106,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_CantSetPropertyOnOpenConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection is closed.. /// @@ -7115,7 +7115,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_ConnectionClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} [{1}] {2}. /// @@ -7124,7 +7124,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_ExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - no error information available. /// @@ -7133,7 +7133,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_ExceptionNoInfoMsg", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - unable to get descriptor handle.. /// @@ -7142,7 +7142,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_FailedToGetDescriptorHandle", resourceCulture); } } - + /// /// Looks up a localized string similar to "The ODBC managed provider requires that the TABLE_NAME restriction be specified and non-null for the GetSchema indexes collection.. /// @@ -7151,7 +7151,7 @@ internal class Strings { return ResourceManager.GetString("ODBC_GetSchemaRestrictionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - unable to map type.. /// @@ -7160,7 +7160,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_GetTypeMapping_UnknownType", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework Odbc Data Provider requires Microsoft Data Access Components(MDAC) version 2.6 or later. Version {0} was found currently installed.. /// @@ -7169,7 +7169,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_MDACWrongVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid negative argument!. /// @@ -7178,7 +7178,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_NegativeArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to No valid mapping for a SQL_TRANSACTION '{0}' to a System.Data.IsolationLevel enumeration value.. /// @@ -7187,7 +7187,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_NoMappingForSqlTransactionLevel", resourceCulture); } } - + /// /// Looks up a localized string similar to Not in a transaction. /// @@ -7196,7 +7196,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_NotInTransaction", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by the .NET Framework Odbc Data Provider.. /// @@ -7205,7 +7205,7 @@ internal class Strings { return ResourceManager.GetString("ODBC_NotSupportedEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Use IsDBNull when DBNull.Value data is expected.. /// @@ -7214,7 +7214,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_NullData", resourceCulture); } } - + /// /// Looks up a localized string similar to OdbcCommandBuilder.DeriveParameters failed because the OdbcCommand.CommandText property value is an invalid multipart name. /// @@ -7223,7 +7223,7 @@ internal class Strings { return ResourceManager.GetString("ODBC_ODBCCommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to An internal connection does not have an owner.. /// @@ -7232,7 +7232,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_OpenConnectionNoOwner", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid OdbcType enumeration value={0}.. /// @@ -7241,7 +7241,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_UnknownOdbcType", resourceCulture); } } - + /// /// Looks up a localized string similar to Unknown SQL type - {0}.. /// @@ -7250,7 +7250,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_UnknownSQLType", resourceCulture); } } - + /// /// Looks up a localized string similar to Unknown URT type - {0}.. /// @@ -7259,7 +7259,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_UnknownURTType", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter for which to automatically generate OdbcCommands. /// @@ -7268,7 +7268,7 @@ internal class Strings { return ResourceManager.GetString("OdbcCommandBuilder_DataAdapter", resourceCulture); } } - + /// /// Looks up a localized string similar to The character used in a text command as the opening quote for quoting identifiers that contain special characters.. /// @@ -7277,7 +7277,7 @@ internal class Strings { return ResourceManager.GetString("OdbcCommandBuilder_QuotePrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to The character used in a text command as the closing quote for quoting identifiers that contain special characters.. /// @@ -7286,7 +7286,7 @@ internal class Strings { return ResourceManager.GetString("OdbcCommandBuilder_QuoteSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Information used to connect to a Data Source.. /// @@ -7295,7 +7295,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_ConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection string exceeds maximum allowed length of {0}.. /// @@ -7304,7 +7304,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_ConnectionStringTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to Current connection timeout value, not settable in the ConnectionString.. /// @@ -7313,7 +7313,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_ConnectionTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Current data source catalog value, 'Database=X' in the connection string.. /// @@ -7322,7 +7322,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_Database", resourceCulture); } } - + /// /// Looks up a localized string similar to Current data source, 'Server=X' in the connection string.. /// @@ -7331,7 +7331,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_DataSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Current ODBC driver.. /// @@ -7340,7 +7340,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_Driver", resourceCulture); } } - + /// /// Looks up a localized string similar to Version of the product accessed by the ODBC Driver.. /// @@ -7349,7 +7349,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_ServerVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter native type.. /// @@ -7358,7 +7358,7 @@ internal class Strings { return ResourceManager.GetString("OdbcParameter_OdbcType", resourceCulture); } } - + /// /// Looks up a localized string similar to 'Asynchronous Processing' is not a supported feature of the .NET Framework Data OLE DB Provider(Microsoft.Data.OleDb).. /// @@ -7367,7 +7367,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_AsynchronousNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Accessor validation was deferred and was performed while the method returned data. The binding was invalid for this column or parameter.. /// @@ -7376,7 +7376,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_BadAccessor", resourceCulture); } } - + /// /// Looks up a localized string similar to Microsoft.Data.OleDb.OleDbDataAdapter internal error: invalid parameter accessor: {0} {1}.. /// @@ -7385,7 +7385,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_BadStatus_ParamAcc", resourceCulture); } } - + /// /// Looks up a localized string similar to OleDbDataAdapter internal error: invalid row set accessor: Ordinal={0} Status={1}.. /// @@ -7394,7 +7394,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_BadStatusRowAccessor", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not determine the server's decimal separator. Non-integer numeric literals can not be created.. /// @@ -7403,7 +7403,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CanNotDetermineDecimalSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to The data value could not be converted for reasons other than sign mismatch or data overflow. For example, the data was corrupted in the data store but the row was still retrievable.. /// @@ -7412,7 +7412,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CantConvertValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider could not allocate memory in which to return {0} data.. /// @@ -7421,7 +7421,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CantCreate", resourceCulture); } } - + /// /// Looks up a localized string similar to Command parameter[{0}] '{1}' is invalid.. /// @@ -7430,7 +7430,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterBadAccessor", resourceCulture); } } - + /// /// Looks up a localized string similar to Command parameter[{0}] '{1}' data value could not be converted for reasons other than sign mismatch or data overflow.. /// @@ -7439,7 +7439,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterCantConvertValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion failed for command parameter[{0}] '{1}' because the data value overflowed the type used by the provider.. /// @@ -7448,7 +7448,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterDataOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter[{0}] '{1}' has no default value.. /// @@ -7457,7 +7457,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterDefault", resourceCulture); } } - + /// /// Looks up a localized string similar to Error occurred with parameter[{0}]: {1}.. /// @@ -7466,7 +7466,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterError", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion failed for command parameter[{0}] '{1}' because the data value was signed and the type used by the provider was unsigned.. /// @@ -7475,7 +7475,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterSignMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Provider encountered an error while sending command parameter[{0}] '{1}' value and stopped processing.. /// @@ -7484,7 +7484,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterUnavailable", resourceCulture); } } - + /// /// Looks up a localized string similar to The ICommandText interface is not supported by the '{0}' provider. Use CommandType.TableDirect instead.. /// @@ -7493,7 +7493,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandTextNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to load the XML file specified in configuration setting '{0}'.. /// @@ -7502,7 +7502,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ConfigUnableToLoadXmlMetaDataFile", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' configuration setting has the wrong number of values.. /// @@ -7511,7 +7511,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ConfigWrongNumberOfValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Format of the initialization string does not conform to the OLE DB specification. Starting around char[{0}] in the connection string.. /// @@ -7520,7 +7520,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ConnectionStringSyntax", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion failed because the {0} data value overflowed the type specified for the {0} value part in the consumer's buffer.. /// @@ -7529,7 +7529,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_DataOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to DBTYPE_VECTOR data is not supported by the .NET Framework Data OLE DB Provider(Microsoft.Data.OleDb).. /// @@ -7538,7 +7538,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_DBBindingGetVector", resourceCulture); } } - + /// /// Looks up a localized string similar to IErrorInfo.GetDescription failed with {0}.. /// @@ -7547,7 +7547,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_FailedGetDescription", resourceCulture); } } - + /// /// Looks up a localized string similar to IErrorInfo.GetSource failed with {0}.. /// @@ -7556,7 +7556,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_FailedGetSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to retrieve the IRow interface from the ADODB.Record object.. /// @@ -7565,7 +7565,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_Fill_EmptyRecord", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to retrieve the '{0}' interface from the ADODB.RecordSet object.. /// @@ -7574,7 +7574,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_Fill_EmptyRecordSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Object is not an ADODB.RecordSet or an ADODB.Record.. /// @@ -7583,7 +7583,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_Fill_NotADODB", resourceCulture); } } - + /// /// Looks up a localized string similar to OleDbDataAdapter internal error: [get] Unknown OLE DB data type: 0x{0} ({1}).. /// @@ -7592,7 +7592,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_GVtUnknown", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot construct the ReservedWords schema collection because the provider does not support IDBInfo.. /// @@ -7601,7 +7601,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_IDBInfoNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The OLE DB Provider specified in the ConnectionString is too long.. /// @@ -7610,7 +7610,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_InvalidProviderSpecified", resourceCulture); } } - + /// /// Looks up a localized string similar to No restrictions are expected for the DbInfoKeywords OleDbSchemaGuid.. /// @@ -7619,7 +7619,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_InvalidRestrictionsDbInfoKeywords", resourceCulture); } } - + /// /// Looks up a localized string similar to No restrictions are expected for the DbInfoLiterals OleDbSchemaGuid.. /// @@ -7628,7 +7628,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_InvalidRestrictionsDbInfoLiteral", resourceCulture); } } - + /// /// Looks up a localized string similar to No restrictions are expected for the schema guid OleDbSchemaGuid.. /// @@ -7637,7 +7637,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_InvalidRestrictionsSchemaGuids", resourceCulture); } } - + /// /// Looks up a localized string similar to Type does not support the OLE DB interface ISourcesRowset. /// @@ -7646,7 +7646,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ISourcesRowsetNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework Data Providers require Microsoft Data Access Components(MDAC). Please install Microsoft Data Access Components(MDAC) version 2.6 or later.. /// @@ -7655,7 +7655,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_MDACNotAvailable", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework OleDb Data Provider requires Microsoft Data Access Components(MDAC) version 2.6 or later. Version {0} was found currently installed.. /// @@ -7664,7 +7664,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_MDACWrongVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework Data Provider for OLEDB (Microsoft.Data.OleDb) does not support the Microsoft OLE DB Provider for ODBC Drivers (MSDASQL). Use the .NET Framework Data Provider for ODBC (System.Data.Odbc).. /// @@ -7673,7 +7673,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_MSDASQLNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to No error message available, result code: {0}.. /// @@ -7682,7 +7682,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoErrorInformation", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' failed with no error message available, result code: {1}.. /// @@ -7691,7 +7691,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoErrorInformation2", resourceCulture); } } - + /// /// Looks up a localized string similar to Unspecified error: {0}. /// @@ -7700,7 +7700,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoErrorMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to An OLE DB Provider was not specified in the ConnectionString. An example would be, 'Provider=SQLOLEDB;'.. /// @@ -7709,7 +7709,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoProviderSpecified", resourceCulture); } } - + /// /// Looks up a localized string similar to The ICommandWithParameters interface is not supported by the '{0}' provider. Command parameters are unsupported with the current provider.. /// @@ -7718,7 +7718,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoProviderSupportForParameters", resourceCulture); } } - + /// /// Looks up a localized string similar to Retrieving procedure parameter information is not supported by the '{0}' provider.. /// @@ -7727,7 +7727,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoProviderSupportForSProcResetParameters", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by the .NET Framework OleDb Data Provider.. /// @@ -7736,7 +7736,7 @@ internal class Strings { return ResourceManager.GetString("OLEDB_NotSupportedEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} OleDbSchemaGuid is not a supported schema by the '{1}' provider.. /// @@ -7745,7 +7745,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NotSupportedSchemaTable", resourceCulture); } } - + /// /// Looks up a localized string similar to OleDbCommandBuilder.DeriveParameters failed because the OleDbCommandBuilder.CommandText property value is an invalid multipart name. /// @@ -7754,7 +7754,7 @@ internal class Strings { return ResourceManager.GetString("OLEDB_OLEDBCommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework Data Provider for OLEDB will not allow the OLE DB Provider to prompt the user in a non-interactive environment.. /// @@ -7763,7 +7763,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PossiblePromptNotUserInteractive", resourceCulture); } } - + /// /// Looks up a localized string similar to The ColumnID element was invalid.. /// @@ -7772,7 +7772,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyBadColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to The value of Options was invalid.. /// @@ -7781,7 +7781,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyBadOption", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to initialize the '{0}' property for one of the following reasons: /// The value data type was not the data type of the property or was not null. For example, the property was DBPROP_MEMORYUSAGE, which has a data type of Int32, and the data type was Int64. @@ -7793,7 +7793,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyBadValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}'property's value was not set because doing so would have conflicted with an existing property.. /// @@ -7802,7 +7802,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyConflicting", resourceCulture); } } - + /// /// Looks up a localized string similar to A '{0}' property was specified to be applied to all columns but could not be applied to one or more of them.. /// @@ -7811,7 +7811,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotAllSettable", resourceCulture); } } - + /// /// Looks up a localized string similar to (Reserved).. /// @@ -7820,7 +7820,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotAvailable", resourceCulture); } } - + /// /// Looks up a localized string similar to The optional '{0}' property's value was not set to the specified value and setting the property to the specified value was not possible.. /// @@ -7829,7 +7829,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotSet", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' property was read-only, or the consumer attempted to set values of properties in the Initialization property group after the data source object was initialized. Consumers can set the value of a read-only property to its current value. This status is also returned if a settable column property could not be set for the particular column.. /// @@ -7838,7 +7838,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotSettable", resourceCulture); } } - + /// /// Looks up a localized string similar to The property's value was not set because the provider did not support the '{0}' property, or the consumer attempted to get or set values of properties not in the Initialization property group and the data source object is uninitialized.. /// @@ -7847,7 +7847,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider returned an unknown DBPROPSTATUS_ value '{0}'.. /// @@ -7856,7 +7856,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyStatusUnknown", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' provider is not registered on the local machine.. /// @@ -7865,7 +7865,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ProviderUnavailable", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' interface is not supported by the '{1}' provider. GetOleDbSchemaTable is unavailable with the current provider.. /// @@ -7874,7 +7874,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_SchemaRowsetsNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion failed because the {0} data value was signed and the type specified for the {0} value part in the consumer's buffer was unsigned.. /// @@ -7883,7 +7883,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_SignMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to OleDbDataAdapter internal error: [set] Unknown OLE DB data type: 0x{0} ({1}).. /// @@ -7892,7 +7892,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_SVtUnknown", resourceCulture); } } - + /// /// Looks up a localized string similar to The OleDbDataReader.Read must be used from the same thread on which is was created if that thread's ApartmentState was not ApartmentState.MTA.. /// @@ -7901,7 +7901,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ThreadApartmentState", resourceCulture); } } - + /// /// Looks up a localized string similar to The ITransactionLocal interface is not supported by the '{0}' provider. Local transactions are unavailable with the current provider.. /// @@ -7910,7 +7910,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_TransactionsNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider could not determine the {0} value. For example, the row was just created, the default for the {0} column was not available, and the consumer had not yet set a new {0} value.. /// @@ -7919,7 +7919,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_Unavailable", resourceCulture); } } - + /// /// Looks up a localized string similar to OLE DB Provider returned an unexpected status value of {0}.. /// @@ -7928,7 +7928,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_UnexpectedStatusValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter[{0}]: the OleDbType property is uninitialized: OleDbType.{1}.. /// @@ -7937,7 +7937,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_UninitializedParameters", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter for which to automatically generate OleDbCommands. /// @@ -7946,7 +7946,7 @@ internal class Strings { return ResourceManager.GetString("OleDbCommandBuilder_DataAdapter", resourceCulture); } } - + /// /// Looks up a localized string similar to The decimal separator used in numeric literals.. /// @@ -7955,7 +7955,7 @@ internal class Strings { return ResourceManager.GetString("OleDbCommandBuilder_DecimalSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to The prefix string wrapped around sql objects. /// @@ -7964,7 +7964,7 @@ internal class Strings { return ResourceManager.GetString("OleDbCommandBuilder_QuotePrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to The suffix string wrapped around sql objects. /// @@ -7973,7 +7973,7 @@ internal class Strings { return ResourceManager.GetString("OleDbCommandBuilder_QuoteSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Information used to connect to a Data Source.. /// @@ -7982,7 +7982,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_ConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Current connection timeout value, 'Connect Timeout=X' in the ConnectionString.. /// @@ -7991,7 +7991,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_ConnectionTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Current data source catalog value, 'Initial Catalog=X' in the connection string.. /// @@ -8000,7 +8000,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_Database", resourceCulture); } } - + /// /// Looks up a localized string similar to Current data source, 'Data Source=X' in the connection string.. /// @@ -8009,7 +8009,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_DataSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Current OLE DB provider ProgID, 'Provider=X' in the connection string.. /// @@ -8018,7 +8018,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_Provider", resourceCulture); } } - + /// /// Looks up a localized string similar to Version of the product accessed by the OLE DB Provider.. /// @@ -8027,7 +8027,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_ServerVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter native type.. /// @@ -8036,7 +8036,7 @@ internal class Strings { return ResourceManager.GetString("OleDbParameter_OleDbType", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs whenever a property for this control changes.. /// @@ -8045,7 +8045,7 @@ internal class Strings { return ResourceManager.GetString("propertyChangedEventDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Min ({0}) must be less than or equal to max ({1}) in a Range object.. /// @@ -8054,7 +8054,7 @@ internal class Strings { return ResourceManager.GetString("Range_Argument", resourceCulture); } } - + /// /// Looks up a localized string similar to This is a null range.. /// @@ -8063,7 +8063,7 @@ internal class Strings { return ResourceManager.GetString("Range_NullRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Collection was modified; enumeration operation might not execute.. /// @@ -8072,7 +8072,7 @@ internal class Strings { return ResourceManager.GetString("RbTree_EnumerationBroken", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable internal index is corrupted: '{0}'.. /// @@ -8081,7 +8081,7 @@ internal class Strings { return ResourceManager.GetString("RbTree_InvalidState", resourceCulture); } } - + /// /// Looks up a localized string similar to MinimumCapacity must be non-negative.. /// @@ -8090,7 +8090,7 @@ internal class Strings { return ResourceManager.GetString("RecordManager_MinimumCapacity", resourceCulture); } } - + /// /// Looks up a localized string similar to Security Warning: The negotiated {0} is an insecure protocol and is supported for backward compatibility only. The recommended protocol version is TLS 1.2 and later.. /// @@ -8099,7 +8099,7 @@ internal class Strings { return ResourceManager.GetString("SEC_ProtocolWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to I/O Error detected in read/write operation. /// @@ -8108,7 +8108,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_1", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// @@ -8117,7 +8117,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_10", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout error. /// @@ -8126,7 +8126,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_11", resourceCulture); } } - + /// /// Looks up a localized string similar to No server name supplied. /// @@ -8135,7 +8135,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_12", resourceCulture); } } - + /// /// Looks up a localized string similar to TerminateListener() has been called. /// @@ -8144,7 +8144,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_13", resourceCulture); } } - + /// /// Looks up a localized string similar to Win9x not supported. /// @@ -8153,7 +8153,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_14", resourceCulture); } } - + /// /// Looks up a localized string similar to Function not supported. /// @@ -8162,7 +8162,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_15", resourceCulture); } } - + /// /// Looks up a localized string similar to Shared-Memory heap error. /// @@ -8171,7 +8171,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_16", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find an ip/ipv6 type address to connect. /// @@ -8180,7 +8180,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_17", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection has been closed by peer. /// @@ -8189,7 +8189,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_18", resourceCulture); } } - + /// /// Looks up a localized string similar to Physical connection is not usable. /// @@ -8198,7 +8198,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_19", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection was terminated. /// @@ -8207,7 +8207,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_2", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection has been closed. /// @@ -8216,7 +8216,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_20", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption is enforced but there is no valid certificate. /// @@ -8225,7 +8225,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_21", resourceCulture); } } - + /// /// Looks up a localized string similar to Couldn't load library. /// @@ -8234,7 +8234,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_22", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot open a new thread in server process. /// @@ -8243,7 +8243,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_23", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot post event to completion port. /// @@ -8252,7 +8252,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_24", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection string is not valid. /// @@ -8261,7 +8261,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_25", resourceCulture); } } - + /// /// Looks up a localized string similar to Error Locating Server/Instance Specified. /// @@ -8270,7 +8270,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_26", resourceCulture); } } - + /// /// Looks up a localized string similar to Error getting enabled protocols list from registry. /// @@ -8279,7 +8279,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_27", resourceCulture); } } - + /// /// Looks up a localized string similar to Server doesn't support requested protocol. /// @@ -8288,7 +8288,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_28", resourceCulture); } } - + /// /// Looks up a localized string similar to Shared Memory is not supported for clustered server connectivity. /// @@ -8297,7 +8297,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_29", resourceCulture); } } - + /// /// Looks up a localized string similar to Asynchronous operations not supported. /// @@ -8306,7 +8306,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_3", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt bind to shared memory segment. /// @@ -8315,7 +8315,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_30", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption(ssl/tls) handshake failed. /// @@ -8324,7 +8324,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_31", resourceCulture); } } - + /// /// Looks up a localized string similar to Packet size too large for SSL Encrypt/Decrypt operations. /// @@ -8333,7 +8333,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_32", resourceCulture); } } - + /// /// Looks up a localized string similar to SSRP error. /// @@ -8342,7 +8342,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_33", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not connect to the Shared Memory pipe. /// @@ -8351,7 +8351,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_34", resourceCulture); } } - + /// /// Looks up a localized string similar to An internal exception was caught. /// @@ -8360,7 +8360,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_35", resourceCulture); } } - + /// /// Looks up a localized string similar to The Shared Memory dll used to connect to SQL Server 2000 was not found. /// @@ -8369,7 +8369,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_36", resourceCulture); } } - + /// /// Looks up a localized string similar to The SQL Server 2000 Shared Memory client dll appears to be invalid/corrupted. /// @@ -8378,7 +8378,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_37", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot open a Shared Memory connection to SQL Server 2000. /// @@ -8387,7 +8387,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_38", resourceCulture); } } - + /// /// Looks up a localized string similar to Shared memory connectivity to SQL Server 2000 is either disabled or not available on this machine. /// @@ -8396,7 +8396,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_39", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// @@ -8405,7 +8405,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_4", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not open a connection to SQL Server. /// @@ -8414,7 +8414,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_40", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot open a Shared Memory connection to a remote SQL server. /// @@ -8423,7 +8423,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_41", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not establish dedicated administrator connection (DAC) on default port. Make sure that DAC is enabled. /// @@ -8432,7 +8432,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_42", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred while obtaining the dedicated administrator connection (DAC) port. Make sure that SQL Browser is running, or check the error log for the port number. /// @@ -8441,7 +8441,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_43", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not compose Service Principal Name (SPN) for Windows Integrated Authentication. Possible causes are server(s) incorrectly specified to connection API calls, Domain Name System (DNS) lookup failure or memory shortage. /// @@ -8450,7 +8450,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_44", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting with the MultiSubnetFailover connection option to a SQL Server instance configured with more than 64 IP addresses is not supported.. /// @@ -8459,7 +8459,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_47", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting to a named SQL Server instance using the MultiSubnetFailover connection option is not supported.. /// @@ -8468,7 +8468,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_48", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting to a SQL Server instance using the MultiSubnetFailover connection option is only supported when using the TCP protocol.. /// @@ -8477,7 +8477,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_49", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid parameter(s) found. /// @@ -8486,7 +8486,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_5", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime error occurred. . /// @@ -8495,7 +8495,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_50", resourceCulture); } } - + /// /// Looks up a localized string similar to An instance name was not specified while connecting to a Local Database Runtime. Specify an instance name in the format (localdb)\instance_name.. /// @@ -8504,7 +8504,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_51", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.. /// @@ -8513,7 +8513,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_52", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Local Database Runtime registry configuration found. Verify that SQL Server Express is properly installed.. /// @@ -8522,7 +8522,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_53", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to locate the registry entry for SQLUserInstance.dll file path. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -8531,7 +8531,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_54", resourceCulture); } } - + /// /// Looks up a localized string similar to Registry value contains an invalid SQLUserInstance.dll file path. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -8540,7 +8540,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_55", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to load the SQLUserInstance.dll from the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -8549,7 +8549,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_56", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid SQLUserInstance.dll found at the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -8558,7 +8558,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_57", resourceCulture); } } - + /// /// Looks up a localized string similar to Unsupported protocol specified. /// @@ -8567,7 +8567,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_6", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid connection found when setting up new session protocol. /// @@ -8576,7 +8576,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_7", resourceCulture); } } - + /// /// Looks up a localized string similar to Protocol not supported. /// @@ -8585,7 +8585,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_8", resourceCulture); } } - + /// /// Looks up a localized string similar to Associating port with I/O completion mechanism failed. /// @@ -8594,7 +8594,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_9", resourceCulture); } } - + /// /// Looks up a localized string similar to HTTP Provider. /// @@ -8603,7 +8603,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN0", resourceCulture); } } - + /// /// Looks up a localized string similar to Named Pipes Provider. /// @@ -8612,7 +8612,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN1", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// @@ -8621,7 +8621,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN10", resourceCulture); } } - + /// /// Looks up a localized string similar to SQL Network Interfaces. /// @@ -8630,7 +8630,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN11", resourceCulture); } } - + /// /// Looks up a localized string similar to Session Provider. /// @@ -8639,7 +8639,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN2", resourceCulture); } } - + /// /// Looks up a localized string similar to Sign Provider. /// @@ -8648,7 +8648,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN3", resourceCulture); } } - + /// /// Looks up a localized string similar to Shared Memory Provider. /// @@ -8657,7 +8657,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN4", resourceCulture); } } - + /// /// Looks up a localized string similar to SMux Provider. /// @@ -8666,7 +8666,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN5", resourceCulture); } } - + /// /// Looks up a localized string similar to SSL Provider. /// @@ -8675,7 +8675,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN6", resourceCulture); } } - + /// /// Looks up a localized string similar to TCP Provider. /// @@ -8684,7 +8684,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN7", resourceCulture); } } - + /// /// Looks up a localized string similar to VIA Provider. /// @@ -8693,7 +8693,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN8", resourceCulture); } } - + /// /// Looks up a localized string similar to CTAIP Provider. /// @@ -8702,7 +8702,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN9", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection open and login was successful, but then an error occurred while enlisting the connection into the current distributed transaction.. /// @@ -8711,7 +8711,7 @@ internal class Strings { return ResourceManager.GetString("Snix_AutoEnlist", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred during connection clean-up.. /// @@ -8720,7 +8720,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Close", resourceCulture); } } - + /// /// Looks up a localized string similar to A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.. /// @@ -8729,7 +8729,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Connect", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection open and login was successful, but then an error occurred while enabling MARS for this connection.. /// @@ -8738,7 +8738,7 @@ internal class Strings { return ResourceManager.GetString("Snix_EnableMars", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred when sending the request to the server.. /// @@ -8747,7 +8747,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Execute", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to establish a MARS session in preparation to send the request to the server.. /// @@ -8756,7 +8756,7 @@ internal class Strings { return ResourceManager.GetString("Snix_GetMarsSession", resourceCulture); } } - + /// /// Looks up a localized string similar to A connection was successfully established with the server, but then an error occurred during the login process.. /// @@ -8765,7 +8765,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Login", resourceCulture); } } - + /// /// Looks up a localized string similar to A connection was successfully established with the server, but then an error occurred when obtaining the security/SSPI context information for integrated security login.. /// @@ -8774,7 +8774,7 @@ internal class Strings { return ResourceManager.GetString("Snix_LoginSspi", resourceCulture); } } - + /// /// Looks up a localized string similar to A connection was successfully established with the server, but then an error occurred during the pre-login handshake.. /// @@ -8783,7 +8783,7 @@ internal class Strings { return ResourceManager.GetString("Snix_PreLogin", resourceCulture); } } - + /// /// Looks up a localized string similar to The client was unable to establish a connection because of an error during connection initialization process before login. Possible causes include the following: the client tried to connect to an unsupported version of SQL Server; the server was too busy to accept new connections; or there was a resource limitation (insufficient memory or maximum allowed connections) on the server.. /// @@ -8792,7 +8792,7 @@ internal class Strings { return ResourceManager.GetString("Snix_PreLoginBeforeSuccessfullWrite", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred during SSPI handshake.. /// @@ -8801,7 +8801,7 @@ internal class Strings { return ResourceManager.GetString("Snix_ProcessSspi", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred when receiving results from the server.. /// @@ -8810,7 +8810,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Read", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred while sending information to the server.. /// @@ -8819,7 +8819,7 @@ internal class Strings { return ResourceManager.GetString("Snix_SendRows", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of '{0}' must match the length of '{1}'.. /// @@ -8828,7 +8828,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ArgumentLengthMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to This command requires an asynchronous connection. Set "Asynchronous Processing=true" in the connection string.. /// @@ -8837,7 +8837,7 @@ internal class Strings { return ResourceManager.GetString("SQL_AsyncConnectionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to The asynchronous operation has already completed.. /// @@ -8846,7 +8846,7 @@ internal class Strings { return ResourceManager.GetString("SQL_AsyncOperationCompleted", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication' with 'Integrated Security'.. /// @@ -8855,7 +8855,7 @@ internal class Strings { return ResourceManager.GetString("SQL_AuthenticationAndIntegratedSecurity", resourceCulture); } } - + /// /// Looks up a localized string similar to Batching updates is not supported on the context connection.. /// @@ -8864,7 +8864,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BatchedUpdatesNotAvailableOnContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlBulkCopy.WriteToServer failed because the SqlBulkCopy.DestinationTableName is an invalid multipart name. /// @@ -8873,7 +8873,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkCopyDestinationTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to The given value{0} of type {1} from the data source cannot be converted to type {2} for Column {3} [{4}] Row {5}.. /// @@ -8882,7 +8882,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadCannotConvertValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The given value{0} of type {1} from the data source cannot be converted to type {2} for Column {3} [{4}].. /// @@ -8891,7 +8891,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadCannotConvertValueWithoutRowNo", resourceCulture); } } - + /// /// Looks up a localized string similar to Must not specify SqlBulkCopyOption.UseInternalTransaction and pass an external Transaction at the same time.. /// @@ -8900,7 +8900,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadConflictingTransactionOption", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected existing transaction.. /// @@ -8909,7 +8909,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadExistingTransaction", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot access destination table '{0}'.. /// @@ -8918,7 +8918,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidDestinationTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Function must not be called during event.. /// @@ -8927,7 +8927,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidOperationInsideEvent", resourceCulture); } } - + /// /// Looks up a localized string similar to The given column order hint is not valid.. /// @@ -8936,7 +8936,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidOrderHint", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout Value '{0}' is less than 0.. /// @@ -8945,7 +8945,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Value cannot be converted to SqlVariant.. /// @@ -8954,7 +8954,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidVariantValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The locale id '{0}' of the source column '{1}' and the locale id '{2}' of the destination column '{3}' do not match.. /// @@ -8963,7 +8963,7 @@ internal class Strings { return ResourceManager.GetString("Sql_BulkLoadLcidMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to The mapped collection is in use and cannot be accessed at this time;. /// @@ -8972,7 +8972,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadMappingInaccessible", resourceCulture); } } - + /// /// Looks up a localized string similar to Mappings must be either all name or all ordinal based.. /// @@ -8981,7 +8981,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadMappingsNamesOrOrdinalsOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to The DestinationTableName property must be set before calling this method.. /// @@ -8990,7 +8990,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadMissingDestinationTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to obtain column collation information for the destination table. If the table is not in the current database the name must be qualified using the database name (e.g. [mydb]..[mytable](e.g. [mydb]..[mytable]); this also applies to temporary-tables (e.g. #mytable would be specified as tempdb..#mytable).. /// @@ -8999,7 +8999,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadNoCollation", resourceCulture); } } - + /// /// Looks up a localized string similar to The given ColumnMapping does not match up with any column in the source or destination.. /// @@ -9008,7 +9008,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadNonMatchingColumnMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to The given ColumnName '{0}' does not match up with any column in data source.. /// @@ -9017,7 +9017,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadNonMatchingColumnName", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not allow DBNull.Value.. /// @@ -9026,7 +9026,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadNotAllowDBNull", resourceCulture); } } - + /// /// Looks up a localized string similar to The column '{0}' was specified more than once.. /// @@ -9035,7 +9035,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadOrderHintDuplicateColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to The sorted column '{0}' is not valid in the destination table.. /// @@ -9044,7 +9044,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadOrderHintInvalidColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Attempt to invoke bulk copy on an object that has a pending operation.. /// @@ -9053,7 +9053,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadPendingOperation", resourceCulture); } } - + /// /// Looks up a localized string similar to String or binary data would be truncated in table '{0}', column '{1}'. Truncated value: '{2}'.. /// @@ -9062,7 +9062,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadStringTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to A column order hint cannot have an unspecified sort order.. /// @@ -9071,7 +9071,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadUnspecifiedSortOrder", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to instantiate a SqlAuthenticationInitializer with type '{0}'.. /// @@ -9080,7 +9080,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotCreateAuthInitializer", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to instantiate an authentication provider with type '{1}' for '{0}'.. /// @@ -9089,7 +9089,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotCreateAuthProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find an authentication provider for '{0}'.. /// @@ -9098,7 +9098,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotFindAuthProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to read the config section for authentication providers.. /// @@ -9107,7 +9107,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotGetAuthProviderConfig", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to get the address of the distributed transaction coordinator for the server, from the server. Is DTC enabled on the server?. /// @@ -9116,7 +9116,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotGetDTCAddress", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider '{0}' threw an exception while initializing.. /// @@ -9125,7 +9125,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotInitializeAuthProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} cannot be changed while async operation is in progress.. /// @@ -9134,7 +9134,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotModifyPropertyAsyncOperationInProgress", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create normalizer for '{0}'.. /// @@ -9143,7 +9143,7 @@ internal class Strings { return ResourceManager.GetString("Sql_CanotCreateNormalizer", resourceCulture); } } - + /// /// Looks up a localized string similar to Incorrect authentication parameters specified with certificate authentication.. /// @@ -9152,7 +9152,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Certificate", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' argument must not be null or empty.. /// @@ -9161,7 +9161,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ChangePasswordArgumentMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to ChangePassword can only be used with SQL authentication, not with integrated security.. /// @@ -9170,7 +9170,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ChangePasswordConflictsWithSSPI", resourceCulture); } } - + /// /// Looks up a localized string similar to ChangePassword requires SQL Server 9.0 or later.. /// @@ -9179,7 +9179,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ChangePasswordRequiresYukon", resourceCulture); } } - + /// /// Looks up a localized string similar to The keyword '{0}' must not be specified in the connectionString argument to ChangePassword.. /// @@ -9188,7 +9188,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ChangePasswordUseOfUnallowedKey", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested operation cannot be completed because the connection has been broken.. /// @@ -9197,7 +9197,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ConnectionDoomed", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection cannot be used because there is an ongoing operation that must be finished.. /// @@ -9206,7 +9206,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ConnectionLockedForBcpEvent", resourceCulture); } } - + /// /// Looks up a localized string similar to The only additional connection string keyword that may be used when requesting the context connection is the Type System Version keyword.. /// @@ -9215,7 +9215,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextAllowsLimitedKeywords", resourceCulture); } } - + /// /// Looks up a localized string similar to The context connection does not support Type System Version=SQL Server 2000.. /// @@ -9224,7 +9224,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextAllowsOnlyTypeSystem2005", resourceCulture); } } - + /// /// Looks up a localized string similar to The context connection is already in use.. /// @@ -9233,7 +9233,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextConnectionIsInUse", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested operation requires a SqlClr context, which is only available when running in the Sql Server process.. /// @@ -9242,7 +9242,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextUnavailableOutOfProc", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested operation requires a Sql Server execution thread. The current thread was started by user code or other non-Sql Server engine code.. /// @@ -9251,7 +9251,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextUnavailableWhileInProc", resourceCulture); } } - + /// /// Looks up a localized string similar to Either Credential or both 'User ID' and 'Password' (or 'UID' and 'PWD') connection string keywords must be specified, if 'Authentication={0}'.. /// @@ -9260,7 +9260,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CredentialsNotProvided", resourceCulture); } } - + /// /// Looks up a localized string similar to The instance of SQL Server you attempted to connect to does not support CTAIP.. /// @@ -9269,7 +9269,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CTAIPNotSupportedByServer", resourceCulture); } } - + /// /// Looks up a localized string similar to The Collation specified by SQL Server is not supported.. /// @@ -9278,7 +9278,16 @@ internal class Strings { return ResourceManager.GetString("SQL_CultureIdError", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords.. + /// + internal static string SQL_DeviceFlowWithUsernamePassword { + get { + return ResourceManager.GetString("SQL_DeviceFlowWithUsernamePassword", resourceCulture); + } + } + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; . /// @@ -9287,7 +9296,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_Login_Begin", resourceCulture); } } - + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; . /// @@ -9296,7 +9305,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_Login_ProcessConnectionAuth", resourceCulture); } } - + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; [Post-Login] complete={4}; . /// @@ -9305,7 +9314,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_PostLogin", resourceCulture); } } - + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0};. /// @@ -9314,7 +9323,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_PreLogin_Begin", resourceCulture); } } - + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; . /// @@ -9323,7 +9332,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_PreLoginHandshake", resourceCulture); } } - + /// /// Looks up a localized string similar to The instance of SQL Server you attempted to connect to requires encryption but this machine does not support it.. /// @@ -9332,7 +9341,7 @@ internal class Strings { return ResourceManager.GetString("SQL_EncryptionNotSupportedByClient", resourceCulture); } } - + /// /// Looks up a localized string similar to The instance of SQL Server you attempted to connect to does not support encryption.. /// @@ -9341,7 +9350,7 @@ internal class Strings { return ResourceManager.GetString("SQL_EncryptionNotSupportedByServer", resourceCulture); } } - + /// /// Looks up a localized string similar to Number of fields in record '{0}' does not match the number in the original record.. /// @@ -9350,7 +9359,7 @@ internal class Strings { return ResourceManager.GetString("SQL_EnumeratedRecordFieldCountChanged", resourceCulture); } } - + /// /// Looks up a localized string similar to Metadata for field '{0}' of record '{1}' did not match the original record's metadata.. /// @@ -9359,7 +9368,7 @@ internal class Strings { return ResourceManager.GetString("SQL_EnumeratedRecordMetaDataChanged", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified data length {0} exceeds the allowed maximum length of {1}.. /// @@ -9368,7 +9377,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExceedsMaxDataLength", resourceCulture); } } - + /// /// Looks up a localized string similar to ClientConnectionId:{0}. /// @@ -9377,7 +9386,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExClientConnectionId", resourceCulture); } } - + /// /// Looks up a localized string similar to Error Number:{0},State:{1},Class:{2}. /// @@ -9386,7 +9395,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExErrorNumberStateClass", resourceCulture); } } - + /// /// Looks up a localized string similar to ClientConnectionId before routing:{0}. /// @@ -9395,7 +9404,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExOriginalClientConnectionId", resourceCulture); } } - + /// /// Looks up a localized string similar to Routing Destination:{0}. /// @@ -9404,7 +9413,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExRoutingDestination", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout expired. The connection has been broken as a result.. /// @@ -9413,7 +9422,7 @@ internal class Strings { return ResourceManager.GetString("SQL_FatalTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Instance failure.. /// @@ -9422,7 +9431,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InstanceFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Integrated' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords.. /// @@ -9431,7 +9440,7 @@ internal class Strings { return ResourceManager.GetString("SQL_IntegratedWithUserIDAndPassword", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Interactive' with 'Password' or 'PWD' connection string keywords.. /// @@ -9440,16 +9449,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InteractiveWithPassword", resourceCulture); } } - - /// - /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords.. - /// - internal static string SQL_DeviceFlowWithUsernamePassword { - get { - return ResourceManager.GetString("SQL_DeviceFlowWithUsernamePassword", resourceCulture); - } - } - + /// /// Looks up a localized string similar to Internal Error. /// @@ -9458,7 +9458,7 @@ internal class Strings { return ResourceManager.GetString("Sql_InternalError", resourceCulture); } } - + /// /// Looks up a localized string similar to Buffer offset '{1}' plus the bytes available '{0}' is greater than the length of the passed in buffer.. /// @@ -9467,7 +9467,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidBufferSizeOrIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to Data length '{0}' is less than 0.. /// @@ -9476,7 +9476,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidDataLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid internal packet size:. /// @@ -9485,7 +9485,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidInternalPacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of the value for the connection parameter <{0}> exceeds the maximum allowed 65535 characters.. /// @@ -9494,7 +9494,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidOptionLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 'Packet Size'. The value must be an integer >= 512 and <= 32768.. /// @@ -9503,7 +9503,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidPacketSizeValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of the parameter '{0}' exceeds the limit of 128 characters.. /// @@ -9512,7 +9512,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidParameterNameLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 3 part name format for TypeName.. /// @@ -9521,7 +9521,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidParameterTypeNameFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to Server {0}, database {1} is not configured for database mirroring.. /// @@ -9530,7 +9530,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidPartnerConfiguration", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to read when no data is present.. /// @@ -9539,7 +9539,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidRead", resourceCulture); } } - + /// /// Looks up a localized string similar to The server certificate failed application validation.. /// @@ -9548,7 +9548,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidServerCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to The SqlDbType '{0}' is invalid for {1}. Only {2} is supported.. /// @@ -9557,7 +9557,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidSqlDbTypeWithOneAllowedType", resourceCulture); } } - + /// /// Looks up a localized string similar to Unsupported SQL Server version. The .NET Framework SqlClient Data Provider can only be used with SQL Server versions 7.0 and later.. /// @@ -9566,7 +9566,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidSQLServerVersionUnknown", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid SSPI packet size.. /// @@ -9575,7 +9575,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidSSPIPacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Packet Size.. /// @@ -9584,7 +9584,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidTDSPacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to The SQL Server instance returned an invalid or unsupported protocol version during login negotiation.. /// @@ -9593,7 +9593,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidTDSVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 3 part name format for UdtTypeName.. /// @@ -9602,7 +9602,16 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidUdt3PartNameFormat", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords.. + /// + internal static string SQL_ManagedIdentityWithPassword { + get { + return ResourceManager.GetString("SQL_ManagedIdentityWithPassword", resourceCulture); + } + } + /// /// Looks up a localized string similar to The connection does not support MultipleActiveResultSets.. /// @@ -9611,7 +9620,7 @@ internal class Strings { return ResourceManager.GetString("SQL_MarsUnsupportedOnConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to MetaData parameter array must have length equivalent to ParameterDirection array argument.. /// @@ -9620,7 +9629,7 @@ internal class Strings { return ResourceManager.GetString("Sql_MismatchedMetaDataDirectionArrayLengths", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDbType.SmallMoney overflow. Value '{0}' is out of range. Must be between -214,748.3648 and 214,748.3647.. /// @@ -9629,7 +9638,7 @@ internal class Strings { return ResourceManager.GetString("SQL_MoneyOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to authenticate the user {0} in Active Directory (Authentication={1}).. /// @@ -9638,7 +9647,7 @@ internal class Strings { return ResourceManager.GetString("SQL_MSALFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to Error code 0x{0}; state {1}. /// @@ -9647,7 +9656,7 @@ internal class Strings { return ResourceManager.GetString("SQL_MSALInnerException", resourceCulture); } } - + /// /// Looks up a localized string similar to Nested TransactionScopes are not supported.. /// @@ -9656,7 +9665,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NestedTransactionScopesNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetBytes on column '{0}'. The GetBytes function can only be used on columns of type Text, NText, or Image.. /// @@ -9665,7 +9674,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NonBlobColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetChars on column '{0}'. The GetChars function can only be used on columns of type Text, NText, Xml, VarChar or NVarChar.. /// @@ -9674,7 +9683,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NonCharColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to SSE Instance re-direction is not supported for non-local user instances.. /// @@ -9683,7 +9692,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NonLocalSSEInstance", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid command sent to ExecuteXmlReader. The command must return an Xml result.. /// @@ -9692,7 +9701,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NonXmlResult", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested operation is not available on the context connection.. /// @@ -9701,7 +9710,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NotAvailableOnContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Notifications are not available on the context connection.. /// @@ -9710,7 +9719,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NotificationsNotAvailableOnContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Notifications require SQL Server 9.0 or later.. /// @@ -9719,7 +9728,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NotificationsRequireYukon", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by the .NET Framework SqlClient Data Provider.. /// @@ -9728,7 +9737,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NotSupportedEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Command parameter must have a non null and non empty command text.. /// @@ -9737,7 +9746,7 @@ internal class Strings { return ResourceManager.GetString("Sql_NullCommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid transaction or invalid name for a point at which to save within the transaction.. /// @@ -9746,7 +9755,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NullEmptyTransactionName", resourceCulture); } } - + /// /// Looks up a localized string similar to Open result count exceeded.. /// @@ -9755,7 +9764,7 @@ internal class Strings { return ResourceManager.GetString("SQL_OpenResultCountExceeded", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cancelled by user.. /// @@ -9764,7 +9773,7 @@ internal class Strings { return ResourceManager.GetString("SQL_OperationCancelled", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter '{0}' cannot be null or empty.. /// @@ -9773,7 +9782,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParameterCannotBeEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter '{0}' exceeds the size limit for the sql_variant datatype.. /// @@ -9782,7 +9791,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParameterInvalidVariant", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} type parameter '{1}' must have a valid type name.. /// @@ -9791,7 +9800,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParameterTypeNameRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error.. /// @@ -9800,7 +9809,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingError", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Authentication Library Type: {1}. /// @@ -9809,7 +9818,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorAuthLibraryType", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Feature Id: {1}. /// @@ -9818,7 +9827,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorFeatureId", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Length: {1}. /// @@ -9827,7 +9836,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Offset: {1}. /// @@ -9836,7 +9845,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorOffset", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Status: {1}. /// @@ -9845,7 +9854,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorStatus", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Token : {1}. /// @@ -9854,7 +9863,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Value: {1}. /// @@ -9863,7 +9872,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}. /// @@ -9872,7 +9881,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorWithState", resourceCulture); } } - + /// /// Looks up a localized string similar to The command execution cannot proceed due to a pending asynchronous operation already in progress.. /// @@ -9881,7 +9890,7 @@ internal class Strings { return ResourceManager.GetString("SQL_PendingBeginXXXExists", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred with a prior row sent to the SqlPipe. SendResultsEnd must be called before anything else can be sent.. /// @@ -9890,7 +9899,7 @@ internal class Strings { return ResourceManager.GetString("SQL_PipeErrorRequiresSendEnd", resourceCulture); } } - + /// /// Looks up a localized string similar to Precision value '{0}' is either less than 0 or greater than the maximum allowed precision of 38.. /// @@ -9899,7 +9908,7 @@ internal class Strings { return ResourceManager.GetString("SQL_PrecisionValueOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Scale value '{0}' is either less than 0 or greater than the maximum allowed scale of 38.. /// @@ -9908,7 +9917,16 @@ internal class Strings { return ResourceManager.GetString("SQL_ScaleValueOutOfRange", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Device Code Flow' has been specified in the connection string.. + /// + internal static string SQL_SettingCredentialWithDeviceFlow { + get { + return ResourceManager.GetString("SQL_SettingCredentialWithDeviceFlow", resourceCulture); + } + } + /// /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Integrated' has been specified in the connection string.. /// @@ -9917,7 +9935,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingCredentialWithIntegrated", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Interactive' has been specified in the connection string.. /// @@ -9926,16 +9944,25 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingCredentialWithInteractive", resourceCulture); } } - + /// - /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Device Code Flow' has been specified in the connection string.. + /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string.. /// - internal static string SQL_SettingCredentialWithDeviceFlow { + internal static string SQL_SettingCredentialWithManagedIdentity { get { - return ResourceManager.GetString("SQL_SettingCredentialWithDeviceFlow", resourceCulture); + return ResourceManager.GetString("SQL_SettingCredentialWithManagedIdentity", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set.. + /// + internal static string SQL_SettingDeviceFlowWithCredential { + get { + return ResourceManager.GetString("SQL_SettingDeviceFlowWithCredential", resourceCulture); + } + } + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Integrated', if the Credential property has been set.. /// @@ -9944,7 +9971,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingIntegratedWithCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Interactive', if the Credential property has been set.. /// @@ -9953,16 +9980,16 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingInteractiveWithCredential", resourceCulture); } } - + /// - /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set.. + /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set.. /// - internal static string SQL_SettingDeviceFlowWithCredential { + internal static string SQL_SettingManagedIdentityWithCredential { get { - return ResourceManager.GetString("SQL_SettingDeviceFlowWithCredential", resourceCulture); + return ResourceManager.GetString("SQL_SettingManagedIdentityWithCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to A severe error occurred on the current command. The results, if any, should be discarded.. /// @@ -9971,7 +9998,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SevereError", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDbType.SmallDateTime overflow. Value '{0}' is out of range. Must be between 1/1/1900 12:00:00 AM and 6/6/2079 11:59:59 PM.. /// @@ -9980,7 +10007,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SmallDateTimeOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by SQL Server 7.0 or SQL Server 2000.. /// @@ -9989,7 +10016,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SnapshotNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Memory allocation for internal connection failed.. /// @@ -9998,7 +10025,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SNIPacketAllocationFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlCommand.DeriveParameters failed because the SqlCommand.CommandText property value is an invalid multipart name. /// @@ -10007,7 +10034,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlCommandCommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' cannot be called when the record is read only.. /// @@ -10016,7 +10043,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlRecordReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cannot be completed because the record is read only.. /// @@ -10025,7 +10052,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlRecordReadOnly2", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call method {0} when SqlResultSet is closed.. /// @@ -10034,7 +10061,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cannot be completed because the SqlResultSet is closed.. /// @@ -10043,7 +10070,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetClosed2", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cannot be completed because the command that created the SqlResultSet has been dissociated from the original connection. SqlResultSet is closed.. /// @@ -10052,7 +10079,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetCommandNotInSameConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlResultSet could not be created for the given query with the desired options.. /// @@ -10061,7 +10088,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetNoAcceptableCursor", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call method {0} when the current row is deleted. /// @@ -10070,7 +10097,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetRowDeleted", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cannot be completed because the current row is deleted. /// @@ -10079,7 +10106,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetRowDeleted2", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' cannot be called when the SqlDataRecord is read only.. /// @@ -10088,7 +10115,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlUpdatableRecordReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to The target principal name is incorrect. Cannot generate SSPI context.. /// @@ -10097,7 +10124,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SSPIGenerateError", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot initialize SSPI package.. /// @@ -10106,7 +10133,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SSPIInitializeError", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetStream on column '{0}'. The GetStream function can only be used on columns of type Binary, Image, Udt or VarBinary.. /// @@ -10115,7 +10142,7 @@ internal class Strings { return ResourceManager.GetString("SQL_StreamNotSupportOnColumnType", resourceCulture); } } - + /// /// Looks up a localized string similar to The Stream does not support reading.. /// @@ -10124,7 +10151,7 @@ internal class Strings { return ResourceManager.GetString("SQL_StreamReadNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The Stream does not support seeking.. /// @@ -10133,7 +10160,7 @@ internal class Strings { return ResourceManager.GetString("SQL_StreamSeekNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The Stream does not support writing.. /// @@ -10142,7 +10169,7 @@ internal class Strings { return ResourceManager.GetString("SQL_StreamWriteNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Processing of results from SQL Server failed because of an invalid multipart name. /// @@ -10151,7 +10178,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TDSParserTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetTextReader on column '{0}'. The GetTextReader function can only be used on columns of type Char, NChar, NText, NVarChar, Text or VarChar.. /// @@ -10160,7 +10187,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TextReaderNotSupportOnColumnType", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.. /// @@ -10169,25 +10196,25 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout", resourceCulture); } } - + /// - /// Looks up a localized string similar to Active Directory Interactive authentication timed out. The user took too long to respond to the authentication request.. + /// Looks up a localized string similar to Active Directory Device Code Flow authentication timed out. The user took too long to respond to the authentication request.. /// - internal static string SQL_Timeout_Active_Directory_Interactive_Authentication { + internal static string SQL_Timeout_Active_Directory_DeviceFlow_Authentication { get { - return ResourceManager.GetString("SQL_Timeout_Active_Directory_Interactive_Authentication", resourceCulture); + return ResourceManager.GetString("SQL_Timeout_Active_Directory_DeviceFlow_Authentication", resourceCulture); } } - + /// - /// Looks up a localized string similar to Active Directory Device Code Flow authentication timed out. The user took too long to respond to the authentication request.. + /// Looks up a localized string similar to Active Directory Interactive authentication timed out. The user took too long to respond to the authentication request.. /// - internal static string SQL_Timeout_Active_Directory_DeviceFlow_Authentication { + internal static string SQL_Timeout_Active_Directory_Interactive_Authentication { get { - return ResourceManager.GetString("SQL_Timeout_Active_Directory_DeviceFlow_Authentication", resourceCulture); + return ResourceManager.GetString("SQL_Timeout_Active_Directory_Interactive_Authentication", resourceCulture); } } - + /// /// Looks up a localized string similar to Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.. /// @@ -10196,7 +10223,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_Execution", resourceCulture); } } - + /// /// Looks up a localized string similar to This failure occurred while attempting to connect to the {0} server.. /// @@ -10205,7 +10232,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_FailoverInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed at the start of the login phase. This could be because of insufficient time provided for connection timeout.. /// @@ -10214,7 +10241,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_Login_Begin", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed while attempting to authenticate the login. This could be because the server failed to authenticate the user or the server was unable to respond back in time.. /// @@ -10223,7 +10250,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_Login_ProcessConnectionAuth", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections.. /// @@ -10232,7 +10259,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PostLogin", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed at the start of the pre-login phase. This could be because of insufficient time provided for connection timeout.. /// @@ -10241,7 +10268,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PreLogin_Begin", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time.. /// @@ -10250,7 +10277,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PreLogin_ConsumeHandshake", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed while attempting to create and initialize a socket to the server. This could be either because the server was unreachable or unable to respond back in time.. /// @@ -10259,7 +10286,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PreLogin_InitializeConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed while making a pre-login handshake request. This could be because the server was unable to respond back in time.. /// @@ -10268,7 +10295,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PreLogin_SendHandshake", resourceCulture); } } - + /// /// Looks up a localized string similar to This failure occurred while attempting to connect to the routing destination. The duration spent while attempting to connect to the original server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; [Post-Login] complete={4}; . /// @@ -10277,7 +10304,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_RoutingDestinationInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDbType.Time overflow. Value '{0}' is out of range. Must be between 00:00:00.0000000 and 23:59:59.9999999.. /// @@ -10286,7 +10313,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TimeOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to Scale value '{0}' is either less than 0 or greater than the maximum allowed scale of 7.. /// @@ -10295,7 +10322,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TimeScaleValueOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Too many values.. /// @@ -10304,7 +10331,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TooManyValues", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlParameter.TypeName is an invalid multipart name. /// @@ -10313,7 +10340,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlParameter.UdtTypeName is an invalid multipart name. /// @@ -10322,7 +10349,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UDTTypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected server event: {0}.. /// @@ -10331,7 +10358,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnexpectedSmiEvent", resourceCulture); } } - + /// /// Looks up a localized string similar to Unrecognized System.Transactions.IsolationLevel enumeration value: {0}.. /// @@ -10340,7 +10367,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnknownSysTxIsolationLevel", resourceCulture); } } - + /// /// Looks up a localized string similar to The authentication '{0}' is not supported.. /// @@ -10349,7 +10376,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnsupportedAuthentication", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider '{0}' does not support authentication '{1}'.. /// @@ -10358,7 +10385,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnsupportedAuthenticationByProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Unsupported authentication specified in this context: {0}. /// @@ -10367,7 +10394,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnsupportedAuthenticationSpecified", resourceCulture); } } - + /// /// Looks up a localized string similar to SQL authentication method '{0}' is not supported.. /// @@ -10376,7 +10403,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnsupportedSqlAuthenticationMethod", resourceCulture); } } - + /// /// Looks up a localized string similar to User Instance and Failover are not compatible options. Please choose only one of the two in the connection string.. /// @@ -10385,7 +10412,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UserInstanceFailoverNotCompatible", resourceCulture); } } - + /// /// Looks up a localized string similar to A user instance was requested in the connection string but the server specified does not support this option.. /// @@ -10394,7 +10421,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UserInstanceFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to User instances are not allowed when running in the Sql Server process.. /// @@ -10403,7 +10430,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UserInstanceNotAvailableInProc", resourceCulture); } } - + /// /// Looks up a localized string similar to Expecting argument of type {1}, but received type {0}.. /// @@ -10412,7 +10439,7 @@ internal class Strings { return ResourceManager.GetString("SQL_WrongType", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetXmlReader on column '{0}'. The GetXmlReader function can only be used on columns of type Xml.. /// @@ -10421,7 +10448,7 @@ internal class Strings { return ResourceManager.GetString("SQL_XmlReaderNotSupportOnColumnType", resourceCulture); } } - + /// /// Looks up a localized string similar to Notification values used by Microsoft SQL Server.. /// @@ -10430,7 +10457,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommand_Notification", resourceCulture); } } - + /// /// Looks up a localized string similar to Automatic enlistment in notifications used by Microsoft SQL Server.. /// @@ -10439,7 +10466,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommand_NotificationAutoEnlist", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter for which to automatically generate SqlCommands. /// @@ -10448,7 +10475,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommandBuilder_DataAdapter", resourceCulture); } } - + /// /// Looks up a localized string similar to The decimal separator used in numeric literals.. /// @@ -10457,7 +10484,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommandBuilder_DecimalSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to The character used in a text command as the opening quote for quoting identifiers that contain special characters.. /// @@ -10466,7 +10493,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommandBuilder_QuotePrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to The character used in a text command as the closing quote for quoting identifiers that contain special characters.. /// @@ -10475,7 +10502,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommandBuilder_QuoteSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Access token to use for authentication.. /// @@ -10484,7 +10511,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_AccessToken", resourceCulture); } } - + /// /// Looks up a localized string similar to State of connection, synchronous or asynchronous. 'Asynchronous Processing=x' in the connection string.. /// @@ -10493,7 +10520,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_Asynchronous", resourceCulture); } } - + /// /// Looks up a localized string similar to A guid to represent the physical connection.. /// @@ -10502,7 +10529,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ClientConnectionId", resourceCulture); } } - + /// /// Looks up a localized string similar to Information used to connect to a DataSource, such as 'Data Source=x;Initial Catalog=x;Integrated Security=SSPI'.. /// @@ -10511,7 +10538,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Current connection timeout value, 'Connect Timeout=X' in the ConnectionString.. /// @@ -10520,7 +10547,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ConnectionTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to User Id and secure password to use for authentication.. /// @@ -10529,7 +10556,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_Credential", resourceCulture); } } - + /// /// Looks up a localized string similar to Custom column encryption key store providers.. /// @@ -10538,7 +10565,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_CustomColumnEncryptionKeyStoreProviders", resourceCulture); } } - + /// /// Looks up a localized string similar to Current SQL Server database, 'Initial Catalog=X' in the connection string.. /// @@ -10547,7 +10574,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_Database", resourceCulture); } } - + /// /// Looks up a localized string similar to Current SqlServer that the connection is opened to, 'Data Source=X' in the connection string.. /// @@ -10556,7 +10583,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_DataSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Network packet size, 'Packet Size=x' in the connection string.. /// @@ -10565,7 +10592,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_PacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Information used to connect for replication.. /// @@ -10574,7 +10601,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_Replication", resourceCulture); } } - + /// /// Looks up a localized string similar to Server Process Id (SPID) of the active connection.. /// @@ -10583,7 +10610,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ServerProcessId", resourceCulture); } } - + /// /// Looks up a localized string similar to Version of the SQL Server accessed by the SqlConnection.. /// @@ -10592,7 +10619,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ServerVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Collect statistics for this connection.. /// @@ -10601,7 +10628,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_StatisticsEnabled", resourceCulture); } } - + /// /// Looks up a localized string similar to Workstation Id, 'Workstation ID=x' in the connection string.. /// @@ -10610,7 +10637,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_WorkstationId", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot convert object of type '{0}' to object of type '{1}'.. /// @@ -10619,7 +10646,7 @@ internal class Strings { return ResourceManager.GetString("SqlConvert_ConvertFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection is broken and recovery is not possible. The client driver attempted to recover the connection one or more times and all attempts failed. Increase the value of ConnectRetryCount to increase the number of recovery attempts.. /// @@ -10628,7 +10655,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_AllAttemptsFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to The server did not preserve SSL encryption during a recovery attempt, connection recovery is not possible.. /// @@ -10637,7 +10664,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_EncryptionChanged", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid ConnectRetryCount value (should be 0-255).. /// @@ -10646,7 +10673,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_InvalidConnectRetryCountValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid ConnectRetryInterval value (should be 1-60).. /// @@ -10655,7 +10682,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_InvalidConnectRetryIntervalValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Next reconnection attempt will exceed query timeout. Reconnection was terminated.. /// @@ -10664,7 +10691,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_NextAttemptWillExceedQueryTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to The server did not acknowledge a recovery attempt, connection recovery is not possible.. /// @@ -10673,7 +10700,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_NoCRAckAtReconnection", resourceCulture); } } - + /// /// Looks up a localized string similar to The server did not preserve the exact client TDS version requested during a recovery attempt, connection recovery is not possible.. /// @@ -10682,7 +10709,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_TDSVestionNotPreserved", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.. /// @@ -10691,7 +10718,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_UnrecoverableClient", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection is broken and recovery is not possible. The connection is marked by the server as unrecoverable. No attempt was made to restore the connection.. /// @@ -10700,7 +10727,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_UnrecoverableServer", resourceCulture); } } - + /// /// Looks up a localized string similar to Failure while attempting to promote transaction.. /// @@ -10709,7 +10736,7 @@ internal class Strings { return ResourceManager.GetString("SqlDelegatedTransaction_PromotionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to To add a command to existing dependency object.. /// @@ -10718,7 +10745,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_AddCommandDependency", resourceCulture); } } - + /// /// Looks up a localized string similar to The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported. Please enable the Service Broker for this database if you wish to use notifications.. /// @@ -10727,7 +10754,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_DatabaseBrokerDisabled", resourceCulture); } } - + /// /// Looks up a localized string similar to When using SqlDependency without providing an options value, SqlDependency.Start() must be called prior to execution of a command added to the SqlDependency instance.. /// @@ -10736,7 +10763,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_DefaultOptionsButNoStart", resourceCulture); } } - + /// /// Looks up a localized string similar to Command is already associated with another dependency object. Can not overwrite.. /// @@ -10745,7 +10772,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_Duplicate", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDependency does not support calling Start() with different connection strings having the same server, user, and database in the same app domain.. /// @@ -10754,7 +10781,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_DuplicateStart", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDependency.OnChange does not support multiple event registrations for the same delegate.. /// @@ -10763,7 +10790,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_EventNoDuplicate", resourceCulture); } } - + /// /// Looks up a localized string similar to Property to indicate if this dependency is invalid.. /// @@ -10772,7 +10799,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_HasChanges", resourceCulture); } } - + /// /// Looks up a localized string similar to A string that uniquely identifies this dependency object.. /// @@ -10781,7 +10808,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_Id", resourceCulture); } } - + /// /// Looks up a localized string similar to No SqlDependency exists for the key.. /// @@ -10790,7 +10817,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_IdMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout specified is invalid. Timeout cannot be < 0.. /// @@ -10799,7 +10826,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_InvalidTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDependency.Start has been called for the server the command is executing against more than once, but there is no matching server/user/database Start() call for current command.. /// @@ -10808,7 +10835,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_NoMatchingServerDatabaseStart", resourceCulture); } } - + /// /// Looks up a localized string similar to When using SqlDependency without providing an options value, SqlDependency.Start() must be called for each server that is being executed against.. /// @@ -10817,7 +10844,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_NoMatchingServerStart", resourceCulture); } } - + /// /// Looks up a localized string similar to Event that can be used to subscribe for change notifications.. /// @@ -10826,7 +10853,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_OnChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Dependency object used to receive query notifications.. /// @@ -10835,7 +10862,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_SqlDependency", resourceCulture); } } - + /// /// Looks up a localized string similar to The process cannot access the file specified because it has been opened in another transaction.. /// @@ -10844,7 +10871,7 @@ internal class Strings { return ResourceManager.GetString("SqlFileStream_FileAlreadyInTransaction", resourceCulture); } } - + /// /// Looks up a localized string similar to An invalid parameter was passed to the function.. /// @@ -10853,7 +10880,7 @@ internal class Strings { return ResourceManager.GetString("SqlFileStream_InvalidParameter", resourceCulture); } } - + /// /// Looks up a localized string similar to The path name is not valid.. /// @@ -10862,7 +10889,7 @@ internal class Strings { return ResourceManager.GetString("SqlFileStream_InvalidPath", resourceCulture); } } - + /// /// Looks up a localized string similar to The path name is invalid or does not point to a disk file.. /// @@ -10871,7 +10898,7 @@ internal class Strings { return ResourceManager.GetString("SqlFileStream_PathNotValidDiskResource", resourceCulture); } } - + /// /// Looks up a localized string similar to The dbType {0} is invalid for this constructor.. /// @@ -10880,7 +10907,7 @@ internal class Strings { return ResourceManager.GetString("SqlMetaData_InvalidSqlDbTypeForConstructorFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to The name is too long.. /// @@ -10889,7 +10916,7 @@ internal class Strings { return ResourceManager.GetString("SqlMetaData_NameTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to GetMetaData is not valid for this SqlDbType.. /// @@ -10898,7 +10925,7 @@ internal class Strings { return ResourceManager.GetString("SqlMetaData_NoMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to The sort order and ordinal must either both be specified, or neither should be specified (SortOrder.Unspecified and -1). The values given were: order = {0}, ordinal = {1}.. /// @@ -10907,7 +10934,7 @@ internal class Strings { return ResourceManager.GetString("SqlMetaData_SpecifyBothSortOrderAndOrdinal", resourceCulture); } } - + /// /// Looks up a localized string similar to SQL Type has already been loaded with data.. /// @@ -10916,7 +10943,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_AlreadyFilledMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Arithmetic Overflow.. /// @@ -10925,7 +10952,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_ArithOverflowMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The buffer is insufficient. Read or write operation failed.. /// @@ -10934,7 +10961,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_BufferInsufficientMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to access a closed XmlReader.. /// @@ -10943,7 +10970,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_ClosedXmlReaderMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Two strings to be compared have different collation.. /// @@ -10952,7 +10979,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_CompareDiffCollationMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Two strings to be concatenated have different collation.. /// @@ -10961,7 +10988,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_ConcatDiffCollationMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion overflows.. /// @@ -10970,7 +10997,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_ConversionOverflowMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.. /// @@ -10979,7 +11006,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_DateTimeOverflowMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Divide by zero error encountered.. /// @@ -10988,7 +11015,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_DivideByZeroMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The input wasn't in a correct format.. /// @@ -10997,7 +11024,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_FormatMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid array size.. /// @@ -11006,7 +11033,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidArraySizeMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid SqlDateTime.. /// @@ -11015,7 +11042,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidDateTimeMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Argument to GetDayOfWeek must be integer between 1 and 7.. /// @@ -11024,7 +11051,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidFirstDayMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid flag value.. /// @@ -11033,7 +11060,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidFlagMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when the stream is closed.. /// @@ -11042,7 +11069,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidOpStreamClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when the stream non-readable.. /// @@ -11051,7 +11078,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidOpStreamNonReadable", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when the stream is non-seekable.. /// @@ -11060,7 +11087,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidOpStreamNonSeekable", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when the stream non-writable.. /// @@ -11069,7 +11096,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidOpStreamNonWritable", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid numeric precision/scale.. /// @@ -11078,7 +11105,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidPrecScaleMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The SqlBytes and SqlChars don't support length of more than 2GB in this version.. /// @@ -11087,7 +11114,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_LenTooLargeMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Message. /// @@ -11096,7 +11123,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_MessageString", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no buffer. Read or write operation failed.. /// @@ -11105,7 +11132,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NoBufferMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to SQL Type has not been loaded with data.. /// @@ -11114,7 +11141,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NotFilledMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Null. /// @@ -11123,7 +11150,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NullString", resourceCulture); } } - + /// /// Looks up a localized string similar to Data is Null. This method or property cannot be called on Null values.. /// @@ -11132,7 +11159,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NullValueMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion from SqlDecimal to Decimal overflows.. /// @@ -11141,7 +11168,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NumeToDecOverflowMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set to non-zero length, because current value is Null.. /// @@ -11150,7 +11177,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_SetNonZeroLenOnNullMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlType error.. /// @@ -11159,7 +11186,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_SqlTypeMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Stream has been closed or disposed.. /// @@ -11168,7 +11195,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_StreamClosedMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred while reading.. /// @@ -11177,7 +11204,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_StreamErrorMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Subclass did not override a required method.. /// @@ -11186,7 +11213,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_SubclassMustOverride", resourceCulture); } } - + /// /// Looks up a localized string similar to A time zone was specified. SqlDateTime does not support time zones.. /// @@ -11195,7 +11222,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_TimeZoneSpecifiedMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Data returned is larger than 2Gb in size. Use SequentialAccess command behavior in order to get all of the data.. /// @@ -11204,7 +11231,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_TruncationMaxDataMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Numeric arithmetic causes truncation.. /// @@ -11213,7 +11240,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_TruncationMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot write to non-zero offset, because current value is Null.. /// @@ -11222,7 +11249,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_WriteNonZeroOffsetOnNullMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot write from an offset that is larger than current length. It would leave uninitialized data in the buffer.. /// @@ -11231,7 +11258,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_WriteOffsetLargerThanLenMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting to a mirrored SQL Server instance using the MultiSubnetFailover connection option is not supported.. /// @@ -11240,7 +11267,7 @@ internal class Strings { return ResourceManager.GetString("SQLMSF_FailoverPartnerNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to This SqlCommand object is already associated with another SqlDependency object.. /// @@ -11249,7 +11276,7 @@ internal class Strings { return ResourceManager.GetString("SQLNotify_AlreadyHasCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Notification Error. Type={0}, Info={1}, Source={2}.. /// @@ -11258,7 +11285,7 @@ internal class Strings { return ResourceManager.GetString("SQLNotify_ErrorFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDependency object cannot be created when running inside the SQL Server process.. /// @@ -11267,7 +11294,7 @@ internal class Strings { return ResourceManager.GetString("SqlNotify_SqlDepCannotBeCreatedInProc", resourceCulture); } } - + /// /// Looks up a localized string similar to DBNull value for parameter '{0}' is not supported. Table-valued parameters cannot be DBNull.. /// @@ -11276,7 +11303,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_DBNullNotSupportedForTVP", resourceCulture); } } - + /// /// Looks up a localized string similar to Precision '{0}' required to send all values in column '{1}' exceeds the maximum supported precision '{2}'. The values must all fit in a single precision.. /// @@ -11285,7 +11312,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_InvalidTableDerivedPrecisionForTvp", resourceCulture); } } - + /// /// Looks up a localized string similar to Offset in variable length data types.. /// @@ -11294,7 +11321,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_Offset", resourceCulture); } } - + /// /// Looks up a localized string similar to Name of the parameter, like '@p1'. /// @@ -11303,7 +11330,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_ParameterName", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter native type.. /// @@ -11312,7 +11339,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_SqlDbType", resourceCulture); } } - + /// /// Looks up a localized string similar to The server's name for the type.. /// @@ -11321,7 +11348,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_TypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to TypeName specified for parameter '{0}'. TypeName must only be set for Structured parameters.. /// @@ -11330,7 +11357,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_UnexpectedTypeNameForNonStruct", resourceCulture); } } - + /// /// Looks up a localized string similar to ParameterDirection '{0}' specified for parameter '{1}' is not supported. Table-valued parameters only support ParameterDirection.Input.. /// @@ -11339,7 +11366,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_UnsupportedTVPOutputParameter", resourceCulture); } } - + /// /// Looks up a localized string similar to XmlSchemaCollectionDatabase. /// @@ -11348,7 +11375,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_XmlSchemaCollectionDatabase", resourceCulture); } } - + /// /// Looks up a localized string similar to XmlSchemaCollectionName. /// @@ -11357,7 +11384,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_XmlSchemaCollectionName", resourceCulture); } } - + /// /// Looks up a localized string similar to XmlSchemaCollectionOwningSchema. /// @@ -11366,7 +11393,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_XmlSchemaCollectionOwningSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to A result set is currently being sent to the pipe. End the current result set before calling {0}.. /// @@ -11375,7 +11402,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_AlreadyHasAnOpenResultSet", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlPipe does not support executing a command with a connection that is not a context connection.. /// @@ -11384,7 +11411,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_CommandHookedUpToNonContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Result set has not been initiated. Call SendResultSetStart before calling {0}.. /// @@ -11393,7 +11420,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_DoesNotHaveAnOpenResultSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not use the pipe while it is busy with another operation.. /// @@ -11402,7 +11429,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_IsBusy", resourceCulture); } } - + /// /// Looks up a localized string similar to Message length {0} exceeds maximum length supported of 4000.. /// @@ -11411,7 +11438,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_MessageTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to The sort ordinal {0} was specified twice.. /// @@ -11420,7 +11447,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_DuplicateSortOrdinal", resourceCulture); } } - + /// /// Looks up a localized string similar to The size of column '{0}' is not supported. The size is {1}.. /// @@ -11429,7 +11456,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_InvalidDataColumnMaxLength", resourceCulture); } } - + /// /// Looks up a localized string similar to The type of column '{0}' is not supported. The type is '{1}'. /// @@ -11438,7 +11465,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_InvalidDataColumnType", resourceCulture); } } - + /// /// Looks up a localized string similar to The sort ordinal {0} was not specified.. /// @@ -11447,7 +11474,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_MissingSortOrdinal", resourceCulture); } } - + /// /// Looks up a localized string similar to There are not enough fields in the Structured type. Structured types must have at least one field.. /// @@ -11456,7 +11483,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_NotEnoughColumnsInStructuredType", resourceCulture); } } - + /// /// Looks up a localized string similar to The sort ordinal {0} on field {1} exceeds the total number of fields.. /// @@ -11465,7 +11492,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_SortOrdinalGreaterThanFieldCount", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting to a mirrored SQL Server instance using the ApplicationIntent ReadOnly connection option is not supported.. /// @@ -11474,7 +11501,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_FailoverNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid routing information received.. /// @@ -11483,7 +11510,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_InvalidRoutingInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Two or more redirections have occurred. Only one redirection per login is allowed.. /// @@ -11492,7 +11519,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_RecursiveRoutingNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Server provided routing information, but timeout already expired.. /// @@ -11501,7 +11528,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_TimeoutAfterRoutingInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected routing information received.. /// @@ -11510,7 +11537,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_UnexpectedRoutingInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Structured, multiple-valued types can only be used for parameters, and cannot be nested within another type.. /// @@ -11519,7 +11546,7 @@ internal class Strings { return ResourceManager.GetString("SQLTVP_TableTypeCanOnlyBeParameter", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider has failed to load the following assembly: {0}. /// @@ -11528,7 +11555,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_CantLoadAssembly", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to get Type Info for {0},{1}. /// @@ -11537,7 +11564,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InvalidDbId", resourceCulture); } } - + /// /// Looks up a localized string similar to UDT size must be less than {1}, size: {0}. /// @@ -11546,7 +11573,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InvalidSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified type is not registered on the target server.{0}.. /// @@ -11555,7 +11582,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InvalidSqlType", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' is an invalid user defined type, reason: {1}.. /// @@ -11564,7 +11591,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdt_InvalidUdtMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to UdtTypeName property must be set for UDT parameters.. /// @@ -11573,7 +11600,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InvalidUdtTypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to UDT parameters not permitted in the where clause unless part of the primary key.. /// @@ -11582,7 +11609,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InWhereClause", resourceCulture); } } - + /// /// Looks up a localized string similar to range: 0-8000. /// @@ -11591,7 +11618,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_MaxByteSizeValue", resourceCulture); } } - + /// /// Looks up a localized string similar to unexpected error encountered in SqlClient data provider. {0}. /// @@ -11600,7 +11627,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_Unexpected", resourceCulture); } } - + /// /// Looks up a localized string similar to UdtTypeName property must be set only for UDT parameters.. /// @@ -11609,7 +11636,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_UnexpectedUdtTypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to Native format can't be supported.. /// @@ -11618,7 +11645,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_CannotSupportNative", resourceCulture); } } - + /// /// Looks up a localized string similar to does not implement IBinarySerialize. /// @@ -11627,7 +11654,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_CannotSupportUserDefined", resourceCulture); } } - + /// /// Looks up a localized string similar to Serialization without mapping is not yet supported.. /// @@ -11636,7 +11663,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_MaplessNotYetSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to supports both in-memory and user-defined formats. /// @@ -11645,7 +11672,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_MultipleSerFormats", resourceCulture); } } - + /// /// Looks up a localized string similar to Multiple valued assembly references must have a nonzero Assembly Id.. /// @@ -11654,7 +11681,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_MultivaluedAssemblyId", resourceCulture); } } - + /// /// Looks up a localized string similar to The type of field '{0}' is marked as explicit layout which is not allowed in Native format. /// @@ -11663,7 +11690,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NativeFormatExplictLayoutNotAllowed", resourceCulture); } } - + /// /// Looks up a localized string similar to Native format does not support fields (directly or through another field) of type '{0}'. /// @@ -11672,7 +11699,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NativeFormatNoFieldSupport", resourceCulture); } } - + /// /// Looks up a localized string similar to Native UDT specifies a max byte size. /// @@ -11681,7 +11708,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NativeUdtMaxByteSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Native UDT not sequential layout due to type '{0}'. /// @@ -11690,7 +11717,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NativeUdtNotSequentialLayout", resourceCulture); } } - + /// /// Looks up a localized string similar to field '{0}' is marked non-serialized. /// @@ -11699,7 +11726,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NonSerializableField", resourceCulture); } } - + /// /// Looks up a localized string similar to does not have a public constructor. /// @@ -11708,7 +11735,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NoPublicConstructor", resourceCulture); } } - + /// /// Looks up a localized string similar to no public constructors. /// @@ -11717,7 +11744,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NoPublicConstructors", resourceCulture); } } - + /// /// Looks up a localized string similar to does not implement INullable. /// @@ -11726,7 +11753,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NotNullable", resourceCulture); } } - + /// /// Looks up a localized string similar to not serializable. /// @@ -11735,7 +11762,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NotSerializable", resourceCulture); } } - + /// /// Looks up a localized string similar to no UDT attribute. /// @@ -11744,7 +11771,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NoUdtAttribute", resourceCulture); } } - + /// /// Looks up a localized string similar to 'public static x Null { get; }' method is missing. /// @@ -11753,7 +11780,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NullPropertyMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to 'public static x Parse(System.Data.SqlTypes.SqlString)' method is missing. /// @@ -11762,7 +11789,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_ParseMethodMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to 'public override string ToString()' method is missing. /// @@ -11771,7 +11798,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_ToStringMethodMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Type is not public. /// @@ -11780,7 +11807,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_TypeNotPublic", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot get value because it is DBNull.. /// @@ -11789,7 +11816,7 @@ internal class Strings { return ResourceManager.GetString("StrongTyping_CananotAccessDBNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove relation since it is built in to this dataSet.. /// @@ -11798,7 +11825,7 @@ internal class Strings { return ResourceManager.GetString("StrongTyping_CananotRemoveRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove column since it is built in to this dataSet.. /// @@ -11807,7 +11834,7 @@ internal class Strings { return ResourceManager.GetString("StrongTyping_CannotRemoveColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Attestation information was not returned by SQL Server. Enclave type is '{0}' and enclave attestation URL is '{1}'.. /// @@ -11816,7 +11843,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationInfoNotReturnedFromSQLServer", resourceCulture); } } - + /// /// Looks up a localized string similar to Error occurred when generating enclave package. Attestation Protocol has not been specified in the connection string, but the query requires enclave computations.. /// @@ -11825,7 +11852,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationProtocolNotSpecifiedForGeneratingEnclavePackage", resourceCulture); } } - + /// /// Looks up a localized string similar to You have specified the attestation protocol in the connection string, but the SQL Server instance in use does not support enclave based computations.. /// @@ -11834,7 +11861,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationProtocolNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to initialize connection. The attestation protocol '{0}' does not support the enclave type '{1}'.. /// @@ -11843,7 +11870,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationProtocolNotSupportEnclaveType", resourceCulture); } } - + /// /// Looks up a localized string similar to You have specified the enclave attestation URL in the connection string, but the SQL Server instance in use does not support enclave based computations.. /// @@ -11852,7 +11879,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationURLNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} should be identical on all commands ({1}, {2}, {3}, {4}) when doing batch updates.. /// @@ -11861,7 +11888,7 @@ internal class Strings { return ResourceManager.GetString("TCE_BatchedUpdateColumnEncryptionSettingMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to instantiate an enclave provider with type '{1}' for name '{0}'. Error message: {2} . /// @@ -11870,7 +11897,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CannotCreateSqlColumnEncryptionEnclaveProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to read the configuration section for enclave providers. Make sure the section is correctly formatted in your application configuration file. Error Message: {0}. /// @@ -11879,7 +11906,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CannotGetSqlColumnEncryptionEnclaveProviderConfig", resourceCulture); } } - + /// /// Looks up a localized string similar to Key store providers cannot be set more than once.. /// @@ -11888,7 +11915,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CanOnlyCallOnce", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate with thumbprint '{0}' not found in certificate store '{1}' in certificate location '{2}'.. /// @@ -11897,7 +11924,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CertificateNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate with thumbprint '{0}' not found in certificate store '{1}' in certificate location '{2}'. Verify the certificate path in the column master key definition in the database is correct, and the certificate has been imported correctly into the certificate location/store.. /// @@ -11906,7 +11933,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CertificateNotFoundSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate specified in key path '{0}' does not have a private key to encrypt a column encryption key. Verify the certificate is imported correctly.. /// @@ -11915,7 +11942,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CertificateWithNoPrivateKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate specified in key path '{0}' does not have a private key to decrypt a column encryption key. Verify the certificate is imported correctly.. /// @@ -11924,7 +11951,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CertificateWithNoPrivateKeySysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt column '{0}'.. /// @@ -11933,7 +11960,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ColumnDecryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Encrypted column encryption keys not found when trying to send the keys to the enclave.. /// @@ -11942,7 +11969,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ColumnEncryptionKeysNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. The signature returned by SQL Server for enclave-enabled column master key, specified at key path '{0}', cannot be null or empty.. /// @@ -11951,7 +11978,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ColumnMasterKeySignatureNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to The signature returned by SQL Server for the column master key, specified in key path '{0}', is invalid (does not match the computed signature). Recreate column master key metadata, making sure the signature inside the metadata is computed using the column master key being referenced in the metadata. If the error persists, please contact Microsoft for assistance.. /// @@ -11960,7 +11987,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ColumnMasterKeySignatureVerificationFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Specifies an attestation protocol for its corresponding enclave attestation service.. /// @@ -11969,7 +11996,7 @@ internal class Strings { return ResourceManager.GetString("TCE_DbConnectionString_AttestationProtocol", resourceCulture); } } - + /// /// Looks up a localized string similar to Default column encryption setting for all the commands on the connection.. /// @@ -11978,7 +12005,7 @@ internal class Strings { return ResourceManager.GetString("TCE_DbConnectionString_ColumnEncryptionSetting", resourceCulture); } } - + /// /// Looks up a localized string similar to Specifies an endpoint of an enclave attestation service, which will be used to verify whether the enclave, configured in the SQL Server instance for computations on database columns encrypted using Always Encrypted, is valid and secure.. /// @@ -11987,7 +12014,7 @@ internal class Strings { return ResourceManager.GetString("TCE_DbConnectionString_EnclaveAttestationUrl", resourceCulture); } } - + /// /// Looks up a localized string similar to Decryption failed. The last 10 bytes of the encrypted column encryption key are: '{0}'. The first 10 bytes of ciphertext are: '{1}'.. /// @@ -11996,7 +12023,7 @@ internal class Strings { return ResourceManager.GetString("TCE_DecryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Empty argument '{0}' specified when constructing an object of type '{1}'. '{0}' cannot be empty.. /// @@ -12005,7 +12032,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyArgumentInConstructorInternal", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Argument '{0}' cannot be empty when executing method '{1}.{2}'.. /// @@ -12014,7 +12041,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyArgumentInternal", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty certificate thumbprint specified in certificate path '{0}'.. /// @@ -12023,7 +12050,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCertificateThumbprint", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty certificate thumbprint specified in certificate path '{0}'.. /// @@ -12032,7 +12059,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCertificateThumbprintSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty key identifier specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12041,7 +12068,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCngKeyId", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty key identifier specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12050,7 +12077,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCngKeyIdSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty Microsoft Cryptography API: Next Generation (CNG) provider name specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12059,7 +12086,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCngName", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty Microsoft Cryptography API: Next Generation (CNG) provider name specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12068,7 +12095,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCngNameSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty column encryption key specified.. /// @@ -12077,7 +12104,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyColumnEncryptionKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty key identifier specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12086,7 +12113,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCspKeyId", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty key identifier specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12095,7 +12122,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCspKeyIdSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty Microsoft cryptographic service provider (CSP) name specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12104,7 +12131,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCspName", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty Microsoft cryptographic service provider (CSP) name specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12113,7 +12140,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCspNameSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty encrypted column encryption key specified.. /// @@ -12122,7 +12149,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyEncryptedColumnEncryptionKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key store provider name specified. Key store provider names cannot be null or empty.. /// @@ -12131,7 +12158,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyProviderName", resourceCulture); } } - + /// /// Looks up a localized string similar to You have specified the enclave attestation URL and attestation protocol in the connection string, but the SQL Server instance in use does not support enclave based computations.. /// @@ -12140,7 +12167,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveComputationsNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to No enclave provider found for enclave type '{0}' and attestation protocol '{1}'. Please specify the correct attestation protocol in the connection string. . /// @@ -12149,7 +12176,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveProviderNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Executing a query requires enclave computations, but the application configuration is missing the enclave provider section.. /// @@ -12158,7 +12185,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveProvidersNotConfiguredForEnclaveBasedQuery", resourceCulture); } } - + /// /// Looks up a localized string similar to You have specified the enclave attestation URL in the connection string, but the SQL Server instance did not return an enclave type. Please make sure the enclave type is correctly configured in your instance.. /// @@ -12167,7 +12194,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveTypeNotReturned", resourceCulture); } } - + /// /// Looks up a localized string similar to The enclave type '{0}' returned from the server is not supported.. /// @@ -12176,7 +12203,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveTypeNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Enclave type received from SQL Server is null or empty when executing a query requiring enclave computations.. /// @@ -12185,7 +12212,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveTypeNullForEnclaveBasedQuery", resourceCulture); } } - + /// /// Looks up a localized string similar to Error encountered while generating package to be sent to enclave. Error message: {0}. /// @@ -12194,7 +12221,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ExceptionWhenGeneratingEnclavePackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Failed to encrypt byte package to be sent to the enclave. Error Message: {0} . /// @@ -12203,7 +12230,7 @@ internal class Strings { return ResourceManager.GetString("TCE_FailedToEncryptRegisterRulesBytePackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. The buffer specified by argument '{0}' for method '{1}.{2}' has insufficient space.. /// @@ -12212,7 +12239,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InsufficientBuffer", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified ciphertext's encryption algorithm version '{0}' does not match the expected encryption algorithm version '{1}'.. /// @@ -12221,7 +12248,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidAlgorithmVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified encrypted column encryption key contains an invalid encryption algorithm version '{0}'. Expected version is '{1}'.. /// @@ -12230,7 +12257,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidAlgorithmVersionInEncryptedCEK", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attestation parameters specified by the enclave provider for enclave type '{0}'. Error occurred when converting the value '{1}' of parameter '{2}' to unsigned int. Error Message: {3}. /// @@ -12239,7 +12266,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidAttestationParameterUnableToConvertToUnsignedInt", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified ciphertext has an invalid authentication tag.. /// @@ -12248,7 +12275,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidAuthenticationTag", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid certificate location '{0}' in certificate path '{1}'. Use the following format: <certificate location>{4}<certificate store>{4}<certificate thumbprint>, where <certificate location> is either '{2}' or '{3}'.. /// @@ -12257,7 +12284,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateLocation", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid certificate location '{0}' in certificate path '{1}'. Use the following format: <certificate location>{4}<certificate store>{4}<certificate thumbprint>, where <certificate location> is either '{2}' or '{3}'.. /// @@ -12266,7 +12293,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateLocationSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid certificate path: '{0}'. Use the following format: <certificate location>{3}<certificate store>{3}<certificate thumbprint>, where <certificate location> is either '{1}' or '{2}'.. /// @@ -12275,7 +12302,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificatePath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid certificate path: '{0}'. Use the following format: <certificate location>{3}<certificate store>{3}<certificate thumbprint>, where <certificate location> is either '{1}' or '{2}'.. /// @@ -12284,7 +12311,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificatePathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key signature does not match the signature computed with the column master key (certificate) in '{0}'. The encrypted column encryption key may be corrupt, or the specified path may be incorrect.. /// @@ -12293,7 +12320,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateSignature", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid certificate store '{0}' specified in certificate path '{1}'. Expected value: '{2}'.. /// @@ -12302,7 +12329,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateStore", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid certificate store '{0}' specified in certificate path '{1}'. Expected value: '{2}'.. /// @@ -12311,7 +12338,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateStoreSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's ciphertext length: {0} does not match the ciphertext length: {1} when using column master key (certificate) in '{2}'. The encrypted column encryption key may be corrupt, or the specified certificate path may be incorrect.. /// @@ -12320,7 +12347,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCiphertextLengthInEncryptedCEK", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's ciphertext length: {0} does not match the ciphertext length: {1} when using column master key (asymmetric key) in '{2}'. The encrypted column encryption key may be corrupt, or the specified Microsoft Cryptography API: Next Generation (CNG) provider path may be incorrect.. /// @@ -12329,7 +12356,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCiphertextLengthInEncryptedCEKCng", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's ciphertext length: {0} does not match the ciphertext length: {1} when using column master key (asymmetric key) in '{2}'. The encrypted column encryption key may be corrupt, or the specified Microsoft Cryptographic Service provider (CSP) path may be incorrect.. /// @@ -12338,7 +12365,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCiphertextLengthInEncryptedCEKCsp", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified ciphertext has an invalid size of {0} bytes, which is below the minimum {1} bytes required for decryption.. /// @@ -12347,7 +12374,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCipherTextSize", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred while opening the Microsoft Cryptography API: Next Generation (CNG) key: '{0}'. Verify that the CNG provider name '{1}' is valid, installed on the machine, and the key '{2}' exists.. /// @@ -12356,7 +12383,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCngKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. An error occurred while opening the Microsoft Cryptography API: Next Generation (CNG) key: '{0}'. Verify that the CNG provider name '{1}' is valid, installed on the machine, and the key '{2}' exists.. /// @@ -12365,7 +12392,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCngKeySysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12374,7 +12401,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCngPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12383,7 +12410,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCngPathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key identifier: '{0}'. Verify that the key identifier in column master key path: '{1}' is valid and exists in the CSP.. /// @@ -12392,7 +12419,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspKeyId", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid key identifier: '{0}'. Verify that the key identifier in column master key path: '{1}' is valid and exists in the CSP.. /// @@ -12401,7 +12428,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspKeyIdSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Microsoft cryptographic service provider (CSP) name: '{0}'. Verify that the CSP provider name in column master key path: '{1}' is valid and installed on the machine.. /// @@ -12410,7 +12437,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspName", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid Microsoft cryptographic service provider (CSP) name: '{0}'. Verify that the CSP provider name in column master key path: '{1}' is valid and installed on the machine.. /// @@ -12419,7 +12446,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspNameSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12428,7 +12455,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12437,7 +12464,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspPathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key store provider name '{0}'. '{1}' prefix is reserved for system key store providers.. /// @@ -12446,7 +12473,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCustomKeyStoreProviderName", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. The given database id '{0}' is not valid. Error occurred when converting the database id to unsigned int. Error Message: {1}. /// @@ -12455,7 +12482,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidDatabaseIdUnableToCastToUnsignedInt", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Error occurred when populating enclave metadata. The referenced column encryption key ordinal '{0}' is missing in the encryption metadata returned by SQL Server. Max ordinal is '{1}'. . /// @@ -12464,7 +12491,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidEncryptionKeyOrdinalEnclaveMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Error occurred when populating parameter metadata. The referenced column encryption key ordinal '{0}' is missing in the encryption metadata returned by SQL Server. Max ordinal is '{1}'. . /// @@ -12473,7 +12500,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidEncryptionKeyOrdinalParameterMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption type '{1}' specified for the column in the database is either invalid or corrupted. Valid encryption types for algorithm '{0}' are: {2}.. /// @@ -12482,7 +12509,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidEncryptionType", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key encryption algorithm specified: '{0}'. Expected value: '{1}'.. /// @@ -12491,7 +12518,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeyEncryptionAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid key encryption algorithm specified: '{0}'. Expected value: '{1}'.. /// @@ -12500,7 +12527,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeyEncryptionAlgorithmSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. The given key id '{0}' is not valid. Error occurred when converting the key id to unsigned short. Error Message: {1}. /// @@ -12509,7 +12536,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeyIdUnableToCastToUnsignedShort", resourceCulture); } } - + /// /// Looks up a localized string similar to The column encryption key has been successfully decrypted but it's length: {1} does not match the length: {2} for algorithm '{0}'. Verify the encrypted value of the column encryption key in the database.. /// @@ -12518,7 +12545,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeySize", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key store provider name: '{0}'. A key store provider name must denote either a system key store provider or a registered custom key store provider. Valid system key store provider names are: {1}. Valid (currently registered) custom key store provider names are: {2}. Please verify key store provider information in column master key definitions in the database, and verify all custom key store providers used in your application are registered properly.. /// @@ -12527,7 +12554,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeyStoreProviderName", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key signature does not match the signature computed with the column master key (asymmetric key) in '{0}'. The encrypted column encryption key may be corrupt, or the specified path may be incorrect.. /// @@ -12536,7 +12563,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidSignature", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's signature length: {0} does not match the signature length: {1} when using column master key (certificate) in '{2}'. The encrypted column encryption key may be corrupt, or the specified certificate path may be incorrect.. /// @@ -12545,7 +12572,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidSignatureInEncryptedCEK", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's signature length: {0} does not match the signature length: {1} when using column master key (asymmetric key) in '{2}'. The encrypted column encryption key may be corrupt, or the specified Microsoft Cryptography API: Next Generation (CNG) provider path may be incorrect.. /// @@ -12554,7 +12581,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidSignatureInEncryptedCEKCng", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's signature length: {0} does not match the signature length: {1} when using column master key (asymmetric key) in '{2}'. The encrypted column encryption key may be corrupt, or the specified Microsoft cryptographic service provider (CSP) path may be incorrect.. /// @@ -12563,7 +12590,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidSignatureInEncryptedCEKCsp", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt a column encryption key using key store provider: '{0}'. Verify the properties of the column encryption key and its column master key in your database. The last 10 bytes of the encrypted column encryption key are: '{1}'.. /// @@ -12572,7 +12599,7 @@ internal class Strings { return ResourceManager.GetString("TCE_KeyDecryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt a column encryption key using key store provider: '{0}'. The last 10 bytes of the encrypted column encryption key are: '{1}'.. /// @@ -12581,7 +12608,7 @@ internal class Strings { return ResourceManager.GetString("TCE_KeyDecryptionFailedCertStore", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified certificate path has {0} bytes, which exceeds maximum length of {1} bytes.. /// @@ -12590,7 +12617,7 @@ internal class Strings { return ResourceManager.GetString("TCE_LargeCertificatePathLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Specified certificate path has {0} bytes, which exceeds maximum length of {1} bytes.. /// @@ -12599,7 +12626,7 @@ internal class Strings { return ResourceManager.GetString("TCE_LargeCertificatePathLengthSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Error occurred when parsing the results of '{0}'. The attestation information resultset is expected to contain only one row, but it contains multiple rows.. /// @@ -12608,7 +12635,7 @@ internal class Strings { return ResourceManager.GetString("TCE_MultipleRowsReturnedForAttestationInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Error occurred when generating enclave package. Attestation URL has not been specified in the connection string, but the query requires enclave computations. Enclave type is '{0}'. . /// @@ -12617,7 +12644,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NoAttestationUrlSpecifiedForEnclaveBasedQueryGeneratingEnclavePackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Error occurred when reading '{0}' resultset. Attestation URL has not been specified in the connection string, but the query requires enclave computations. Enclave type is '{1}'. . /// @@ -12626,7 +12653,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NoAttestationUrlSpecifiedForEnclaveBasedQuerySpDescribe", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} instance in use does not support column encryption.. /// @@ -12635,7 +12662,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NotSupportedByServer", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Null argument '{0}' specified when constructing an object of type '{1}'. '{0}' cannot be null.. /// @@ -12644,7 +12671,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullArgumentInConstructorInternal", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Argument '{0}' cannot be null when executing method '{1}.{2}'.. /// @@ -12653,7 +12680,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullArgumentInternal", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate path cannot be null. Use the following format: <certificate location>{2}<certificate store>{2}<certificate thumbprint>, where <certificate location> is either '{0}' or '{1}'.. /// @@ -12662,7 +12689,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCertificatePath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Certificate path cannot be null. Use the following format: <certificate location>{2}<certificate store>{2}<certificate thumbprint>, where <certificate location> is either '{0}' or '{1}'.. /// @@ -12671,7 +12698,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCertificatePathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Ciphertext value cannot be null.. /// @@ -12680,7 +12707,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCipherText", resourceCulture); } } - + /// /// Looks up a localized string similar to Column master key path cannot be null. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{0}<Key Identifier>.. /// @@ -12689,7 +12716,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCngPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Column master key path cannot be null. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{0}<Key Identifier>.. /// @@ -12698,7 +12725,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCngPathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Encryption algorithm cannot be null. Valid algorithms are: {0}.. /// @@ -12707,7 +12734,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullColumnEncryptionAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Column encryption key cannot be null.. /// @@ -12716,7 +12743,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullColumnEncryptionKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Column encryption key cannot be null.. /// @@ -12725,7 +12752,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullColumnEncryptionKeySysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Column master key path cannot be null. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{0}<Key Identifier>.. /// @@ -12734,7 +12761,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCspPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Column master key path cannot be null. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{0}<Key Identifier>.. /// @@ -12743,7 +12770,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCspPathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Column encryption key store provider dictionary cannot be null. Expecting a non-null value.. /// @@ -12752,7 +12779,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCustomKeyStoreProviderDictionary", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Enclave package is null during execution of an enclave based query. Enclave type is '{0}' and enclaveAttestationUrl is '{1}'.. /// @@ -12761,7 +12788,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullEnclavePackageForEnclaveBasedQuery", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Enclave session is null during query execution. Enclave type is '{0}' and enclaveAttestationUrl is '{1}'.. /// @@ -12770,7 +12797,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullEnclaveSessionDuringQueryExecution", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to communicate with the enclave. Null enclave session information received from the enclave provider. Enclave type is '{0}' and enclave attestation URL is '{1}'.. /// @@ -12779,7 +12806,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullEnclaveSessionReturnedFromProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Encrypted column encryption key cannot be null.. /// @@ -12788,7 +12815,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullEncryptedColumnEncryptionKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Key encryption algorithm cannot be null.. /// @@ -12797,7 +12824,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullKeyEncryptionAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Key encryption algorithm cannot be null.. /// @@ -12806,7 +12833,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullKeyEncryptionAlgorithmSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Plaintext value cannot be null.. /// @@ -12815,7 +12842,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullPlainText", resourceCulture); } } - + /// /// Looks up a localized string similar to Null reference specified for key store provider '{0}'. Expecting a non-null value.. /// @@ -12824,7 +12851,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullProviderValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Failed to serialize keys to be sent to the enclave. The start offset specified by argument '{0}' for method {1}.{2} is out of bounds.. /// @@ -12833,7 +12860,7 @@ internal class Strings { return ResourceManager.GetString("TCE_OffsetOutOfBounds", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt parameter '{0}'.. /// @@ -12842,7 +12869,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamDecryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to encrypt parameter '{0}'.. /// @@ -12851,7 +12878,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamEncryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Metadata for parameter '{1}' in statement or procedure '{2}' is missing in resultset returned by {0}.. /// @@ -12860,7 +12887,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamEncryptionMetaDataMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set {0} for {3} '{1}' because encryption is not enabled for the statement or procedure '{2}'.. /// @@ -12869,7 +12896,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamInvalidForceColumnEncryptionSetting", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot execute statement or procedure '{1}' because {2} was set for {3} '{0}' and the database expects this parameter to be sent as plaintext. This may be due to a configuration error.. /// @@ -12878,7 +12905,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamUnExpectedEncryptionMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Metadata for parameters for command '{1}' in a batch is missing in the resultset returned by {0}.. /// @@ -12887,7 +12914,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ProcEncryptionMetaDataMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Retrieving encrypted column '{0}' with {1} is not supported.. /// @@ -12896,7 +12923,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SequentialAccessNotSupportedOnEncryptedColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. SqlColumnEncryptionEnclaveProviderName cannot be null or empty.. /// @@ -12905,7 +12932,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlColumnEncryptionEnclaveProviderNameCannotBeEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to Column encryption setting for the command. Overrides the connection level default.. /// @@ -12914,7 +12941,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlCommand_ColumnEncryptionSetting", resourceCulture); } } - + /// /// Looks up a localized string similar to Defines the time-to-live of entries in the column encryption key cache.. /// @@ -12923,7 +12950,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlConnection_ColumnEncryptionKeyCacheTtl", resourceCulture); } } - + /// /// Looks up a localized string similar to Defines whether query metadata caching is enabled.. /// @@ -12932,7 +12959,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlConnection_ColumnEncryptionQueryMetadataCacheEnabled", resourceCulture); } } - + /// /// Looks up a localized string similar to Dictionary object containing SQL Server names and their trusted column master key paths.. /// @@ -12941,7 +12968,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlConnection_TrustedColumnMasterKeyPaths", resourceCulture); } } - + /// /// Looks up a localized string similar to Forces parameter to be encrypted before sending sensitive data to server. . /// @@ -12950,7 +12977,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlParameter_ForceColumnEncryption", resourceCulture); } } - + /// /// Looks up a localized string similar to Retrieving encrypted column '{0}' as a {1} is not supported.. /// @@ -12959,7 +12986,7 @@ internal class Strings { return ResourceManager.GetString("TCE_StreamNotSupportOnEncryptedColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to establish secure channel. Error Message: {0}. /// @@ -12968,7 +12995,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnableToEstablishSecureChannel", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to verify a column master key signature. Error message: {0} . /// @@ -12977,7 +13004,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnableToVerifyColumnMasterKeySignature", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. The result returned by '{0}' is invalid. The attestation information resultset is missing for enclave type '{1}'. . /// @@ -12986,7 +13013,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnexpectedDescribeParamFormatAttestationInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. The result returned by '{0}' is invalid. The parameter metadata resultset is missing.. /// @@ -12995,7 +13022,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnexpectedDescribeParamFormatParameterMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption algorithm '{0}' for the column in the database is either invalid or corrupted. Valid algorithms are: {1}.. /// @@ -13004,7 +13031,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnknownColumnEncryptionAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption algorithm id '{0}' for the column in the database is either invalid or corrupted. Valid encryption algorithm ids are: {1}.. /// @@ -13013,7 +13040,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnknownColumnEncryptionAlgorithmId", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt a column encryption key. Invalid key store provider name: '{0}'. A key store provider name must denote either a system key store provider or a registered custom key store provider. Valid system key store provider names are: {1}. Valid (currently registered) custom key store provider names are: {2}. Please verify key store provider information in column master key definitions in the database, and verify all custom key store providers used in your application are registered properly.. /// @@ -13022,7 +13049,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnrecognizedKeyStoreProviderName", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption and decryption of data type '{0}' is not supported.. /// @@ -13031,7 +13058,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnsupportedDatatype", resourceCulture); } } - + /// /// Looks up a localized string similar to Normalization version '{0}' received from {2} is not supported. Valid normalization versions are: {1}.. /// @@ -13040,7 +13067,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnsupportedNormalizationVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Column master key path '{0}' received from server '{1}' is not a trusted key path.. /// @@ -13049,7 +13076,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UntrustedKeyPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot encrypt. Encrypting resulted in {0} bytes of ciphertext which exceeds the maximum allowed limit of {1} bytes. The specified plaintext value is likely too large (plaintext size is: {2} bytes).. /// @@ -13058,7 +13085,7 @@ internal class Strings { return ResourceManager.GetString("TCE_VeryLargeCiphertext", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to check if the enclave is running in the production mode. Contact Customer Support Services.. /// @@ -13067,7 +13094,7 @@ internal class Strings { return ResourceManager.GetString("VerifyEnclaveDebuggable", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not verify enclave policy due to a difference between the expected and actual values of the policy on property '{0}'. Actual: '{1}', Expected: '{2}'.. /// @@ -13076,7 +13103,7 @@ internal class Strings { return ResourceManager.GetString("VerifyEnclavePolicyFailedFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to Signature verification of the enclave report failed. The report signature does not match the signature computed using the HGS root certificate. Verify the DNS mapping for the endpoint. If correct, contact Customer Support Services.. /// @@ -13085,7 +13112,7 @@ internal class Strings { return ResourceManager.GetString("VerifyEnclaveReportFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to The enclave report received from SQL Server is not in the correct format. Contact Customer Support Services.. /// @@ -13094,7 +13121,7 @@ internal class Strings { return ResourceManager.GetString("VerifyEnclaveReportFormatFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to build a chain of trust between the enclave host's health report and the HGS root certificate for attestation URL '{0}' with status: '{1}'. Verify the attestation URL matches the URL configured on the SQL Server machine. If both the client and SQL Server use the same attestation service, contact Customer Support Services.. /// @@ -13103,7 +13130,7 @@ internal class Strings { return ResourceManager.GetString("VerifyHealthCertificateChainFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to The value of attribute '{0}' should be '{1}' or '{2}'.. /// @@ -13112,7 +13139,7 @@ internal class Strings { return ResourceManager.GetString("Xml_AttributeValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot convert '{0}' to type '{1}'.. /// @@ -13121,7 +13148,7 @@ internal class Strings { return ResourceManager.GetString("Xml_CannotConvert", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to proceed with deserialization. Data does not implement IXMLSerializable, therefore polymorphism is not supported.. /// @@ -13130,7 +13157,7 @@ internal class Strings { return ResourceManager.GetString("Xml_CanNotDeserializeObjectType", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet cannot instantiate an abstract ComplexType for the node {0}.. /// @@ -13139,7 +13166,7 @@ internal class Strings { return ResourceManager.GetString("Xml_CannotInstantiateAbstract", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet doesn't allow the circular reference in the ComplexType named '{0}'.. /// @@ -13148,7 +13175,7 @@ internal class Strings { return ResourceManager.GetString("Xml_CircularComplexType", resourceCulture); } } - + /// /// Looks up a localized string similar to Column name '{0}' is defined for different mapping types.. /// @@ -13157,7 +13184,7 @@ internal class Strings { return ResourceManager.GetString("Xml_ColumnConflict", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable does not support schema inference from Xml.. /// @@ -13166,7 +13193,7 @@ internal class Strings { return ResourceManager.GetString("Xml_DataTableInferenceNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Data type not defined.. /// @@ -13175,7 +13202,7 @@ internal class Strings { return ResourceManager.GetString("Xml_DatatypeNotDefined", resourceCulture); } } - + /// /// Looks up a localized string similar to The constraint name {0} is already used in the schema.. /// @@ -13184,7 +13211,7 @@ internal class Strings { return ResourceManager.GetString("Xml_DuplicateConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet will not serialize types that implement IDynamicMetaObjectProvider but do not also implement IXmlSerializable.. /// @@ -13193,7 +13220,7 @@ internal class Strings { return ResourceManager.GetString("Xml_DynamicWithoutXmlSerializable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find ElementType name='{0}'.. /// @@ -13202,7 +13229,7 @@ internal class Strings { return ResourceManager.GetString("Xml_ElementTypeNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet cannot expand entities. Use XmlValidatingReader and set the EntityHandling property accordingly.. /// @@ -13211,7 +13238,7 @@ internal class Strings { return ResourceManager.GetString("Xml_FoundEntity", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid XPath selection inside field node. Cannot find: {0}.. /// @@ -13220,7 +13247,7 @@ internal class Strings { return ResourceManager.GetString("Xml_InvalidField", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 'Key' node inside constraint named: {0}.. /// @@ -13229,7 +13256,7 @@ internal class Strings { return ResourceManager.GetString("Xml_InvalidKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Prefix '{0}' is not valid, because it contains special characters.. /// @@ -13238,7 +13265,7 @@ internal class Strings { return ResourceManager.GetString("Xml_InvalidPrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid XPath selection inside selector node: {0}.. /// @@ -13247,7 +13274,7 @@ internal class Strings { return ResourceManager.GetString("Xml_InvalidSelector", resourceCulture); } } - + /// /// Looks up a localized string similar to IsDataSet attribute is missing in input Schema.. /// @@ -13256,7 +13283,7 @@ internal class Strings { return ResourceManager.GetString("Xml_IsDataSetAttributeMissingInSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Duplicated declaration '{0}'.. /// @@ -13265,7 +13292,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MergeDuplicateDeclaration", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Relation definition: different length keys.. /// @@ -13274,7 +13301,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MismatchKeyLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid {0} syntax: missing required '{1}' attribute.. /// @@ -13283,7 +13310,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MissingAttribute", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing '{0}' part in '{1}' constraint named '{2}'.. /// @@ -13292,7 +13319,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MissingRefer", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot load diffGram. The 'sql' node is missing.. /// @@ -13301,7 +13328,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MissingSQL", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot load diffGram. Table '{0}' is missing in the destination dataset.. /// @@ -13310,7 +13337,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MissingTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot proceed with serializing DataTable '{0}'. It contains a DataRow which has multiple parent rows on the same Foreign Key.. /// @@ -13319,7 +13346,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MultipleParentRows", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred with the multiple target converter while writing an Xml Schema. A null or empty string was returned.. /// @@ -13328,7 +13355,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MultipleTargetConverterEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred with the multiple target converter while writing an Xml Schema. See the inner exception for details.. /// @@ -13337,7 +13364,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MultipleTargetConverterError", resourceCulture); } } - + /// /// Looks up a localized string similar to Circular reference in self-nested table '{0}'.. /// @@ -13346,7 +13373,7 @@ internal class Strings { return ResourceManager.GetString("Xml_NestedCircular", resourceCulture); } } - + /// /// Looks up a localized string similar to Type '{0}' does not implement IXmlSerializable interface therefore can not proceed with serialization.. /// @@ -13355,7 +13382,7 @@ internal class Strings { return ResourceManager.GetString("Xml_PolymorphismNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Child table key is missing in relation '{0}'.. /// @@ -13364,7 +13391,7 @@ internal class Strings { return ResourceManager.GetString("Xml_RelationChildKeyMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Child table name is missing in relation '{0}'.. /// @@ -13373,7 +13400,7 @@ internal class Strings { return ResourceManager.GetString("Xml_RelationChildNameMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Parent table name is missing in relation '{0}'.. /// @@ -13382,7 +13409,7 @@ internal class Strings { return ResourceManager.GetString("Xml_RelationParentNameMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Parent table key is missing in relation '{0}'.. /// @@ -13391,7 +13418,7 @@ internal class Strings { return ResourceManager.GetString("Xml_RelationTableKeyMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet doesn't support 'union' or 'list' as simpleType.. /// @@ -13400,7 +13427,7 @@ internal class Strings { return ResourceManager.GetString("Xml_SimpleTypeNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot determine the DataSet Element. IsDataSet attribute exist more than once.. /// @@ -13409,7 +13436,7 @@ internal class Strings { return ResourceManager.GetString("Xml_TooManyIsDataSetAtributeInSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Undefined data type: '{0}'.. /// @@ -13418,7 +13445,7 @@ internal class Strings { return ResourceManager.GetString("Xml_UndefinedDatatype", resourceCulture); } } - + /// /// Looks up a localized string similar to Value '{1}' is invalid for attribute '{0}'.. /// diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx index c74e4526ef..5efe3d9ad5 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx +++ b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx @@ -2502,6 +2502,9 @@ Cannot use 'Authentication=Active Directory Device Code Flow' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords. + + Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords. + Cannot use 'Authentication=Active Directory Integrated', if the Credential property has been set. @@ -4572,7 +4575,13 @@ Cannot set the Credential property if 'Authentication=Active Directory Device Code Flow' has been specified in the connection string. + + Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string. + Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set. + + Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set. + diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs index 2f2d3de7dd..bfcb2cec87 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs @@ -12,6 +12,7 @@ using System.Threading.Tasks; using Microsoft.Identity.Client; using Microsoft.Identity.Client.Extensibility; +using static Microsoft.Data.SqlClient.ActiveDirectoryAuthentication; namespace Microsoft.Data.SqlClient { @@ -46,8 +47,7 @@ public override bool IsSupported(SqlAuthenticationMethod authentication) || authentication == SqlAuthenticationMethod.ActiveDirectoryPassword || authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive || authentication == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal - || authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow - || authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + || authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; } /// @@ -116,7 +116,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) #if netstandard if (parentActivityOrWindowFunc != null) { - app = PublicClientApplicationBuilder.Create(ActiveDirectoryAuthentication.AdoClientId) + app = PublicClientApplicationBuilder.Create(AdoClientId) .WithAuthority(parameters.Authority) .WithClientName(Common.DbConnectionStringDefaults.ApplicationName) .WithClientVersion(Common.ADP.GetAssemblyVersion().ToString()) @@ -128,7 +128,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) #if netfx if (_iWin32WindowFunc != null) { - app = PublicClientApplicationBuilder.Create(ActiveDirectoryAuthentication.AdoClientId) + app = PublicClientApplicationBuilder.Create(AdoClientId) .WithAuthority(parameters.Authority) .WithClientName(Common.DbConnectionStringDefaults.ApplicationName) .WithClientVersion(Common.ADP.GetAssemblyVersion().ToString()) @@ -141,7 +141,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) else #endif { - app = PublicClientApplicationBuilder.Create(ActiveDirectoryAuthentication.AdoClientId) + app = PublicClientApplicationBuilder.Create(AdoClientId) .WithAuthority(parameters.Authority) .WithClientName(Common.DbConnectionStringDefaults.ApplicationName) .WithClientVersion(Common.ADP.GetAssemblyVersion().ToString()) @@ -209,58 +209,12 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } - else if (parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity) - { - return await AcquireManagedIdentityTokenIMDSAsync(parameters); - } else { throw SQL.UnsupportedAuthenticationSpecified(parameters.AuthenticationMethod); } }); - private async Task AcquireManagedIdentityTokenIMDSAsync(SqlAuthenticationParameters parameters) - { - string accessToken = ""; - // IMDS upgrade time can take up to 70s - int imdsUpgradeTimeInMs = 70 * 1000; - string msiEndpoint = Environment.GetEnvironmentVariable("MSI_ENDPOINT"); - string msiSecret = Environment.GetEnvironmentVariable("MSI_SECRET"); - - StringBuilder urlString = new StringBuilder(); - int retry = 1, maxRetry = 1; - int[] retrySlots; - - /* - * isAzureFunction is used for identifying if the current client application is running in a Virtual Machine - * (without MSI environment variables) or App Service/Function (with MSI environment variables) as the APIs to - * be called for acquiring MSI Token are different for both cases. - */ - bool isAzureFunction = null != msiEndpoint && !string.IsNullOrEmpty(msiEndpoint) - && null != msiSecret && !string.IsNullOrEmpty(msiSecret); - - if(isAzureFunction) - { - urlString.Append(msiEndpoint).Append("?api-version=2019-08-01&resource=").Append(parameters.Resource); - } - else - { - urlString.Append(ActiveDirectoryAuthentication.AZURE_IMDS_REST_URL).Append("&resource=").Append(parameters.Resource); - // Retry acquiring access token upto 20 times due to possible IMDS upgrade (Applies to VM only) - maxRetry = ActiveDirectoryAuthentication.AZURE_IMDS_MAX_RETRY; - } - - retrySlots = new int[maxRetry]; - // Simplified variant of Exponential BackOff - for (int x = 0; x < maxRetry; x++) - { - retrySlots[x] = TdsEnums.INTERNAL_SERVER_ERROR * ((2 << 1) - 1) / 1000; - } - - DateTime expiresOn = DateTime.UtcNow; - return new SqlAuthenticationToken(accessToken, new DateTimeOffset(expiresOn)); - } - private async Task AcquireTokenInteractiveDeviceFlowAsync(IPublicClientApplication app, string[] scopes, Guid connectionId, string userId, SqlAuthenticationMethod authenticationMethod) { diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/AzureManagedIdentityTokenProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs similarity index 56% rename from src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/AzureManagedIdentityTokenProvider.cs rename to src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index a0f8121d25..15622f107c 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/AzureManagedIdentityTokenProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -1,100 +1,82 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; +using System; +using System.Linq; using System.Net.Http; -using System.Text; -using System.Text.Json; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; -using Microsoft.IdentityModel.JsonWebTokens; -using Newtonsoft.Json.Linq; -namespace Microsoft.Data.SqlClient.Microsoft.Data.SqlClient +namespace Microsoft.Data.SqlClient { /// - /// Implementation cloned from https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/mgmtcommon/AppAuthentication/Azure.Services.AppAuthentication/TokenProviders/MsiAccessTokenProvider.cs + /// /// - internal class AzureManagedIdentityTokenProvider + public sealed class AzureManagedIdentityAuthenticationProvider : SqlAuthenticationProvider { // This is for unit testing private readonly HttpClient _httpClient; - // This client ID can be specified in the constructor to specify a specific managed identity to use (e.g. user-assigned identity) - private readonly string _managedIdentityClientId; - - // HttpClient is intended to be instantiated once and re-used throughout the life of an application. + // HttpClient is intended to be instantiated once and re-used throughout the life of an application. #if NETFRAMEWORK - private static readonly HttpClient s_defaultHttpClient = new HttpClient(); + private static readonly HttpClient DefaultHttpClient = new HttpClient(); #else - private static readonly HttpClient s_defaultHttpClient = new HttpClient(new HttpClientHandler() { CheckCertificateRevocationList = true }); + private static readonly HttpClient DefaultHttpClient = new HttpClient(new HttpClientHandler() { CheckCertificateRevocationList = true }); #endif + // Retry acquiring access token upto 20 times due to possible IMDS upgrade (Applies to VM only) + private const int AZURE_IMDS_MAX_RETRY = 20; + private const string AzureSystemApiVersion = "&api-version=2019-08-01"; + private const string AzureVmImdsApiVersion = "&api-version=2018-02-01"; + + // Azure Instance Metadata Service (IMDS) endpoint + private const string AzureVmImdsEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token"; + // Timeout for Azure IMDS probe request internal const int AzureVmImdsProbeTimeoutInSeconds = 2; - internal readonly TimeSpan _azureVmImdsProbeTimeout = TimeSpan.FromSeconds(AzureVmImdsProbeTimeoutInSeconds); + internal readonly TimeSpan AzureVmImdsProbeTimeout = TimeSpan.FromSeconds(AzureVmImdsProbeTimeoutInSeconds); // Configurable timeout for MSI retry logic internal readonly int _retryTimeoutInSeconds = 0; - internal const int MaxRetries = 5; - internal const int DeltaBackOffInSeconds = 2; - internal const string RetryTimeoutError = "Reached retry timeout limit set by MsiRetryTimeout parameter in connection string."; - // for unit test purposes - internal static bool WaitBeforeRetry = true; - - internal static bool IsRetryableStatusCode(this HttpResponseMessage response) + /// + /// + /// + /// + /// + public AzureManagedIdentityAuthenticationProvider(int retryTimeoutInSeconds = 0, HttpClient httpClient = null) { - // 404 NotFound, 429 TooManyRequests, and 5XX server error status codes are retryable - return Regex.IsMatch(((int)response.StatusCode).ToString(), @"404|429|5\d{2}"); - } - - internal AzureManagedIdentityTokenProvider(int retryTimeoutInSeconds = 0, string managedIdentityClientId = default) - { - // require storeLocation if using subject name or thumbprint identifier - if (retryTimeoutInSeconds < 0) - { - throw new ArgumentException( - $"MsiRetryTimeout {retryTimeoutInSeconds} is not valid. Valid values are integers greater than or equal to 0."); - } - - _managedIdentityClientId = managedIdentityClientId; _retryTimeoutInSeconds = retryTimeoutInSeconds; - } - - internal AzureManagedIdentityTokenProvider(HttpClient httpClient, int retryTimeoutInSeconds = 0, string managedIdentityClientId = null) : this(retryTimeoutInSeconds, managedIdentityClientId) - { _httpClient = httpClient; } - public async Task AcquireTokenAsync(string resource, string authority, - CancellationToken cancellationToken = default) + /// + /// + /// + /// + /// + public override async Task AcquireTokenAsync(SqlAuthenticationParameters parameters) { - // Use the httpClient specified in the constructor. If it was not specified in the constructor, use the default httpClient. - HttpClient httpClient = _httpClient ?? s_defaultHttpClient; + // Use the httpClient specified in the constructor. If it was not specified in the constructor, use the default httpClient. + HttpClient httpClient = _httpClient ?? DefaultHttpClient; try { // Check if App Services MSI is available. If both these environment variables are set, then it is. - // NOTE: IDENTITY_ENDPOINT is an alias for MSI_ENDPOINT environment variable. - // NOTE: IDENTITY_HEADER is an alias for MSI_SECRET environment variable - string idEndpoint = Environment.GetEnvironmentVariable("IDENTITY_ENDPOINT"); - string idHeader = Environment.GetEnvironmentVariable("IDENTITY_HEADER"); - var isAppServicesMsiAvailable = !string.IsNullOrWhiteSpace(idEndpoint) && !string.IsNullOrWhiteSpace(idHeader); + string msiEndpoint = Environment.GetEnvironmentVariable("IDENTITY_ENDPOINT"); + string msiHeader = Environment.GetEnvironmentVariable("IDENTITY_HEADER"); + + var isAppServicesMsiAvailable = !string.IsNullOrWhiteSpace(msiEndpoint) && !string.IsNullOrWhiteSpace(msiHeader); // if App Service MSI is not available then Azure VM IMDS may be available, test with a probe request if (!isAppServicesMsiAvailable) { using (var internalTokenSource = new CancellationTokenSource()) - using (var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(internalTokenSource.Token, cancellationToken)) + using (var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(internalTokenSource.Token, default)) { - HttpRequestMessage imdsProbeRequest = new HttpRequestMessage(HttpMethod.Get, ActiveDirectoryAuthentication.AZURE_IMDS_REST_URL); + HttpRequestMessage imdsProbeRequest = new HttpRequestMessage(HttpMethod.Get, AzureVmImdsEndpoint); try { - internalTokenSource.CancelAfter(_azureVmImdsProbeTimeout); + internalTokenSource.CancelAfter(AzureVmImdsProbeTimeout); await httpClient.SendAsync(imdsProbeRequest, linkedTokenSource.Token).ConfigureAwait(false); } catch (OperationCanceledException) @@ -102,9 +84,8 @@ internal AzureManagedIdentityTokenProvider(HttpClient httpClient, int retryTimeo // request to IMDS timed out (internal cancellation token canceled), neither Azure VM IMDS nor App Services MSI are available if (internalTokenSource.Token.IsCancellationRequested) { - //throw new SqlException(ConnectionString, resource, authority, + //throw new AzureServiceTokenProviderException(ConnectionString, parameters.Resource, parameters.Authority, // $"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.MsiEndpointNotListening}"); - throw; } throw; @@ -112,15 +93,15 @@ internal AzureManagedIdentityTokenProvider(HttpClient httpClient, int retryTimeo } } - // If managed identity is specified, include client ID parameter in request - string clientIdParameter = _managedIdentityClientId != default - ? $"&client_id={_managedIdentityClientId}" + // If managed identity is specified, include object ID parameter in request + string clientIdParameter = parameters.UserId != default + ? $"&object_id={parameters.UserId}" : string.Empty; // Craft request as per the MSI protocol var requestUrl = isAppServicesMsiAvailable - ? $"{idEndpoint}?resource={resource}{clientIdParameter}&api-version=2019-08-01" - : $"{ActiveDirectoryAuthentication.AZURE_IMDS_REST_URL}?resource={resource}{clientIdParameter}&api-version=2018-02-01"; + ? $"{msiEndpoint}?resource={parameters.Resource}{clientIdParameter}{AzureSystemApiVersion}" + : $"{AzureVmImdsEndpoint}?resource={parameters.Resource}{clientIdParameter}{AzureVmImdsApiVersion}"; Func getRequestMessage = () => { @@ -128,7 +109,7 @@ internal AzureManagedIdentityTokenProvider(HttpClient httpClient, int retryTimeo if (isAppServicesMsiAvailable) { - request.Headers.Add("X-IDENTITY-HEADER", idHeader); + request.Headers.Add("X-IDENTITY-HEADER", msiHeader); } else { @@ -138,48 +119,91 @@ internal AzureManagedIdentityTokenProvider(HttpClient httpClient, int retryTimeo return request; }; - HttpResponseMessage response; + HttpResponseMessage response = null; try { - response = await SendAsyncWithRetry(httpClient, getRequestMessage, _retryTimeoutInSeconds, cancellationToken).ConfigureAwait(false); + response = await httpClient.SendAsyncWithRetry(getRequestMessage, _retryTimeoutInSeconds, default).ConfigureAwait(false); } catch (HttpRequestException) { //throw new AzureServiceTokenProviderException(ConnectionString, resource, authority, - //$"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.RetryFailure} {AzureServiceTokenProviderException.MsiEndpointNotListening}"); - throw; + // $"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.RetryFailure} {AzureServiceTokenProviderException.MsiEndpointNotListening}"); } // If the response is successful, it should have JSON response with an access_token field if (response.IsSuccessStatusCode) { - string jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + //PrincipalUsed.IsAuthenticated = true; - // Parse the JSON response - dynamic json = JValue.Parse(jsonResponse); - return new SqlAuthenticationToken(json.AccessToken, DateTime.FromFileTime(json.ExpiresOn)); + //string jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + + //// Parse the JSON response + //TokenResponse tokenResponse = TokenResponse.Parse(jsonResponse); + + //AccessToken token = AccessToken.Parse(tokenResponse.AccessToken); + + //// If token is null, then there has been a parsing issue, which means the access token format has changed + //if (token != null) + //{ + // PrincipalUsed.AppId = token.AppId; + // PrincipalUsed.TenantId = token.TenantId; + //} + + //return AppAuthenticationResult.Create(tokenResponse); + return null; } - string errorStatusDetail = IsRetryableStatusCode() - ? AzureServiceTokenProviderException.RetryFailure - : AzureServiceTokenProviderException.NonRetryableError; + //string errorStatusDetail = response.IsRetryableStatusCode() + // ? AzureServiceTokenProviderException.RetryFailure + // : AzureServiceTokenProviderException.NonRetryableError; - string errorText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + //string errorText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); - throw new Exception($"{errorStatusDetail} MSI ResponseCode: {response.StatusCode}, Response: {errorText}"); + //throw new Exception($"{errorStatusDetail} MSI ResponseCode: {response.StatusCode}, Response: {errorText}"); } catch (Exception exp) { if (exp is SqlException) throw; - throw; //throw new AzureServiceTokenProviderException(ConnectionString, resource, authority, // $"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.GenericErrorMessage} {exp.Message}"); } + + //Cheena: Remove later + return null; } - private async Task SendAsyncWithRetry(HttpClient httpClient, Func getRequestMessage, int retryTimeoutInSeconds, CancellationToken cancellationToken) + /// + /// + /// + /// + /// + public override bool IsSupported(SqlAuthenticationMethod authentication) + { + return authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + } + } + + internal static class SqlManagedIdentityRetryHelper + { + internal const int MaxRetries = 5; + internal const int DeltaBackOffInSeconds = 2; + internal const string RetryTimeoutError = "Reached retry timeout limit set by MsiRetryTimeout parameter in connection string."; + + // for unit test purposes + internal static bool WaitBeforeRetry = true; + + internal static bool IsRetryableStatusCode(this HttpResponseMessage response) + { + // 404 NotFound, 429 TooManyRequests, and 5XX server error status codes are retryable + return Regex.IsMatch(((int)response.StatusCode).ToString(), @"404|429|5\d{2}"); + } + + /// + /// Implements recommended retry guidance here: https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#retry-guidance + /// + internal static async Task SendAsyncWithRetry(this HttpClient httpClient, Func getRequest, int retryTimeoutInSeconds, CancellationToken cancellationToken) { using (var timeoutTokenSource = new CancellationTokenSource()) using (var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(timeoutTokenSource.Token, cancellationToken)) @@ -235,9 +259,7 @@ private async Task SendAsyncWithRetry(HttpClient httpClient throw; } - } } - } } From 3fc79a04dc06b6c2e2f9eda5cd68cbcdfa79bbcb Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Thu, 17 Sep 2020 17:23:50 -0700 Subject: [PATCH 03/23] More changes for Managed identity support --- ...eManagedIdentityAuthenticationProvider.xml | 45 + src/Microsoft.Data.SqlClient.sln | 1 + .../Data/Common/DbConnectionStringCommon.cs | 4 +- .../SqlClient/SqlInternalConnectionTds.cs | 2 +- .../src/Microsoft/Data/SqlClient/SqlUtil.cs | 10 + .../src/Microsoft/Data/SqlClient/TdsEnums.cs | 2 +- .../netcore/src/Resources/Strings.Designer.cs | 54 + .../netcore/src/Resources/Strings.resx | 20 +- .../Data/Common/DbConnectionStringCommon.cs | 4 +- .../SqlClient/SqlInternalConnectionTds.cs | 2 +- .../src/Microsoft/Data/SqlClient/SqlUtil.cs | 10 + .../src/Microsoft/Data/SqlClient/TdsEnums.cs | 2 +- .../netfx/src/Resources/Strings.Designer.cs | 3044 +++++++++-------- .../netfx/src/Resources/Strings.resx | 20 +- ...reManagedIdentityAuthenticationProvider.cs | 162 +- .../SqlConnectionStringBuilderTest.cs | 23 +- 16 files changed, 1800 insertions(+), 1605 deletions(-) create mode 100644 doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml diff --git a/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml b/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml new file mode 100644 index 0000000000..ac0f97e465 --- /dev/null +++ b/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml @@ -0,0 +1,45 @@ + + + + + This class implements and provides active directory managed identity authentication support. + + + + Number of seconds to wait for response from Managed Identity service endpoint when attempting a retry. The default is 0, i.e. no timeout is applied. + Maximum number of retries to perform when Managed Identity service endpoint is unreachable. By default, the driver retries 5 times. + + An instance of to be used by this authentication provider. + + + Initializes the class. + + + + The Active Directory authentication parameters passed to authentication providers. + Acquires a security token from the Managed Identity service endpoint. + Represents an asynchronous operation that returns the authentication token. + + + The authentication method. + Indicates whether the specified authentication method is supported. + + if the specified authentication method is supported; otherwise, . + + + + | + + ]]> + + + + + diff --git a/src/Microsoft.Data.SqlClient.sln b/src/Microsoft.Data.SqlClient.sln index 855baeedaa..47bb4f3273 100644 --- a/src/Microsoft.Data.SqlClient.sln +++ b/src/Microsoft.Data.SqlClient.sln @@ -75,6 +75,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.Data.SqlClient", ProjectSection(SolutionItems) = preProject ..\doc\snippets\Microsoft.Data.SqlClient\ActiveDirectoryAuthenticationProvider.xml = ..\doc\snippets\Microsoft.Data.SqlClient\ActiveDirectoryAuthenticationProvider.xml ..\doc\snippets\Microsoft.Data.SqlClient\ApplicationIntent.xml = ..\doc\snippets\Microsoft.Data.SqlClient\ApplicationIntent.xml + ..\doc\snippets\Microsoft.Data.SqlClient\AzureManagedIdentityAuthenticationProvider.xml = ..\doc\snippets\Microsoft.Data.SqlClient\AzureManagedIdentityAuthenticationProvider.xml ..\doc\snippets\Microsoft.Data.SqlClient\OnChangeEventHandler.xml = ..\doc\snippets\Microsoft.Data.SqlClient\OnChangeEventHandler.xml ..\doc\snippets\Microsoft.Data.SqlClient\PoolBlockingPeriod.xml = ..\doc\snippets\Microsoft.Data.SqlClient\PoolBlockingPeriod.xml ..\doc\snippets\Microsoft.Data.SqlClient\SortOrder.xml = ..\doc\snippets\Microsoft.Data.SqlClient\SortOrder.xml diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index c2c35fea6c..bd2f55a9d1 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -108,7 +108,7 @@ internal static string ConvertToString(object value) internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result) { - Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 7, "SqlAuthenticationMethod enum has changed, update needed"); + Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 8, "SqlAuthenticationMethod enum has changed, update needed"); bool isSuccess = false; @@ -494,7 +494,7 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj internal static bool IsValidAuthenticationTypeValue(SqlAuthenticationMethod value) { - Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 7, "SqlAuthenticationMethod enum has changed, update needed"); + Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 8, "SqlAuthenticationMethod enum has changed, update needed"); return value == SqlAuthenticationMethod.SqlPassword || value == SqlAuthenticationMethod.ActiveDirectoryPassword || value == SqlAuthenticationMethod.ActiveDirectoryIntegrated diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index 93c74d5c53..4ae1d7c81b 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -1323,7 +1323,7 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, _fedAuthFeatureExtensionData = new FederatedAuthenticationFeatureExtensionData { - libraryType = TdsEnums.FedAuthLibrary.SecurityToken, + libraryType = TdsEnums.FedAuthLibrary.MSAL, authentication = ConnectionOptions.Authentication, fedAuthRequiredPreLoginResponse = _fedAuthRequired }; diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs index 1195a90690..7b7c6ddde6 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs @@ -1229,6 +1229,16 @@ internal static Exception BatchedUpdatesNotAvailableOnContextConnection() { return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_BatchedUpdatesNotAvailableOnContextConnection)); } + internal static Exception Azure_ManagedIdentityException(string msg) + { + SqlErrorCollection errors = new SqlErrorCollection + { + new SqlError(0, (byte)0x00, TdsEnums.FATAL_ERROR_CLASS, null, msg, "", 0) + }; + SqlException exc = SqlException.CreateException(errors, null); + exc._doNotReconnect = true; // disable open retry logic on this error + return exc; + } #region Always Encrypted Errors diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs index 5269d793a7..8002356a1f 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs @@ -252,7 +252,7 @@ public enum FedAuthLibrary : byte public const byte MSALWORKFLOW_ACTIVEDIRECTORYINTERACTIVE = 0x03; public const byte MSALWORKFLOW_ACTIVEDIRECTORYSERVICEPRINCIPAL = 0x01; // Using the Password byte as that is the closest we have public const byte MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW = 0x03; // Using the Interactive byte as that is the closest we have - public const byte MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY = 0x02; // Using the Integrated byte as that is the closest we have + public const byte MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY = 0x03; // Using the Interactive byte as that's supported for Identity based authentication public enum ActiveDirectoryWorkflow : byte { diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs index aade217749..3e18fe5fc6 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs @@ -897,6 +897,60 @@ internal class Strings { } } + /// + /// Looks up a localized string similar to Access token could not be acquired.. + /// + internal static string Azure_GenericErrorMessage { + get { + return ResourceManager.GetString("Azure_GenericErrorMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unable to connect to the Managed Identity endpoint. Please check that you are running on an Azure resource that has Identity setup.. + /// + internal static string Azure_IdentityEndpointNotListening { + get { + return ResourceManager.GetString("Azure_IdentityEndpointNotListening", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tried to get token using Managed Identity.. + /// + internal static string Azure_ManagedIdentityUsed { + get { + return ResourceManager.GetString("Azure_ManagedIdentityUsed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unable to connect to the Instance Metadata Service (IMDS). Skipping request to the Managed Identity token endpoint.. + /// + internal static string Azure_MetadataEndpointNotListening { + get { + return ResourceManager.GetString("Azure_MetadataEndpointNotListening", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Received a non-retryable error.. + /// + internal static string Azure_NonRetryableError { + get { + return ResourceManager.GetString("Azure_NonRetryableError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed after 5 retries.. + /// + internal static string Azure_RetryFailure { + get { + return ResourceManager.GetString("Azure_RetryFailure", resourceCulture); + } + } + /// /// Looks up a localized string similar to .database.chinacloudapi.cn. /// diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx index ddaab17f57..76d817db70 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx +++ b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx @@ -1914,4 +1914,22 @@ Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set. - + + Access token could not be acquired. + + + Unable to connect to the Managed Identity endpoint. Please check that you are running on an Azure resource that has Identity setup. + + + Tried to get token using Managed Identity. + + + Unable to connect to the Instance Metadata Service (IMDS). Skipping request to the Managed Identity token endpoint. + + + Received a non-retryable error. + + + Failed after 5 retries. + + \ No newline at end of file diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index 4b6b9ca002..186c0f4b10 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -527,7 +527,7 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result) { - Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 7, "SqlAuthenticationMethod enum has changed, update needed"); + Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 8, "SqlAuthenticationMethod enum has changed, update needed"); bool isSuccess = false; @@ -655,7 +655,7 @@ internal static string ColumnEncryptionSettingToString(SqlConnectionColumnEncryp internal static bool IsValidAuthenticationTypeValue(SqlAuthenticationMethod value) { - Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 7, "SqlAuthenticationMethod enum has changed, update needed"); + Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 8, "SqlAuthenticationMethod enum has changed, update needed"); return value == SqlAuthenticationMethod.SqlPassword || value == SqlAuthenticationMethod.ActiveDirectoryPassword || value == SqlAuthenticationMethod.ActiveDirectoryIntegrated diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index 9670b6780c..40fa178959 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -1594,7 +1594,7 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, _fedAuthFeatureExtensionData = new FederatedAuthenticationFeatureExtensionData { - libraryType = TdsEnums.FedAuthLibrary.SecurityToken, + libraryType = TdsEnums.FedAuthLibrary.MSAL, authentication = ConnectionOptions.Authentication, fedAuthRequiredPreLoginResponse = _fedAuthRequired }; diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs index a552c42b51..89e78f1b77 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs @@ -2088,6 +2088,16 @@ static internal SqlException CR_UnrecoverableClient(Guid connectionId) SqlException exc = SqlException.CreateException(errors, "", connectionId); return exc; } + internal static Exception Azure_ManagedIdentityException(string msg) + { + SqlErrorCollection errors = new SqlErrorCollection + { + new SqlError(0, (byte)0x00, TdsEnums.FATAL_ERROR_CLASS, null, msg, "", 0) + }; + SqlException exc = SqlException.CreateException(errors, null); + exc._doNotReconnect = true; // disable open retry logic on this error + return exc; + } // // Merged Provider diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs index a10d50755d..c9d1858309 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs @@ -243,7 +243,7 @@ public enum FedAuthLibrary : byte public const byte MSALWORKFLOW_ACTIVEDIRECTORYINTERACTIVE = 0x03; public const byte MSALWORKFLOW_ACTIVEDIRECTORYSERVICEPRINCIPAL = 0x01; // Using the Password byte as that is the closest we have public const byte MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW = 0x03; // Using the Interactive byte as that is the closest we have - public const byte MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY = 0x02; // Using the Integrated byte as that is the closest we have + public const byte MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY = 0x03; // Using the Interactive byte as that's supported for Identity based authentication public enum ActiveDirectoryWorkflow : byte { diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs index ab73f53ee6..65a1262dff 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs @@ -10,8 +10,8 @@ namespace System { using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -23,15 +23,15 @@ namespace System { [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Strings { - + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Strings() { } - + /// /// Returns the cached ResourceManager instance used by this class. /// @@ -45,7 +45,7 @@ internal class Strings { return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. @@ -59,7 +59,7 @@ internal class Strings { resourceCulture = value; } } - + /// /// Looks up a localized string similar to Data adapter mapping error.. /// @@ -68,7 +68,7 @@ internal class Strings { return ResourceManager.GetString("ADP_AdapterMappingExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Ascending. /// @@ -77,7 +77,7 @@ internal class Strings { return ResourceManager.GetString("ADP_Ascending", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified parameter name '{0}' is not valid.. /// @@ -86,7 +86,7 @@ internal class Strings { return ResourceManager.GetString("ADP_BadParameterName", resourceCulture); } } - + /// /// Looks up a localized string similar to The method '{0}' cannot be called more than once for the same execution.. /// @@ -95,7 +95,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CalledTwice", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid operation. The connection is closed.. /// @@ -104,7 +104,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ClosedConnectionError", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid index {0} for this {1} with Count={2}.. /// @@ -113,7 +113,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionIndexInt32", resourceCulture); } } - + /// /// Looks up a localized string similar to A {0} with {1} '{2}' is not contained by this {3}.. /// @@ -122,7 +122,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionIndexString", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} only accepts non-null {1} type objects, not {2} objects.. /// @@ -131,7 +131,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionInvalidType", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} is already contained by another {1}.. /// @@ -140,7 +140,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionIsNotParent", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} with is already contained by this {1}.. /// @@ -149,7 +149,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionIsParent", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} only accepts non-null {1} type objects.. /// @@ -158,7 +158,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionNullValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Attempted to remove an {0} that is not contained by this {1}.. /// @@ -167,7 +167,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionRemoveInvalidObject", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0}.{1} is required to be unique, '{2}' already exists in the collection.. /// @@ -176,7 +176,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CollectionUniqueValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The column mapping from SourceColumn '{0}' failed because the DataColumn '{1}' is a computed column.. /// @@ -185,7 +185,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ColumnSchemaExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to Inconvertible type mismatch between SourceColumn '{0}' of {1} and the DataColumn '{2}' of {3}.. /// @@ -194,7 +194,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ColumnSchemaMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing the DataColumn '{0}' for the SourceColumn '{2}'.. /// @@ -203,7 +203,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ColumnSchemaMissing1", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing the DataColumn '{0}' in the DataTable '{1}' for the SourceColumn '{2}'.. /// @@ -212,7 +212,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ColumnSchemaMissing2", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}: CommandText property has not been initialized. /// @@ -221,7 +221,7 @@ internal class Strings { return ResourceManager.GetString("ADP_CommandTextRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to retrieve the ComputerNameDnsFullyQualified, {0}.. /// @@ -230,7 +230,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ComputerNameEx", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a connection.. /// @@ -239,7 +239,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnecitonRequired_UpdateRows", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection was not closed. {0}. /// @@ -248,7 +248,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionAlreadyOpen", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection has been disabled.. /// @@ -257,7 +257,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionIsDisabled", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}: Connection property has not been initialized.. /// @@ -266,7 +266,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a connection object. The Connection property has not been initialized.. /// @@ -275,7 +275,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Batch", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the command clone to have a connection object. The Connection property of the command clone has not been initialized.. /// @@ -284,7 +284,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Clone", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the DeleteCommand to have a connection object. The Connection property of the DeleteCommand has not been initialized.. /// @@ -293,7 +293,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Delete", resourceCulture); } } - + /// /// Looks up a localized string similar to Fill: SelectCommand.Connection property has not been initialized.. /// @@ -302,7 +302,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Fill", resourceCulture); } } - + /// /// Looks up a localized string similar to FillPage: SelectCommand.Connection property has not been initialized.. /// @@ -311,7 +311,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_FillPage", resourceCulture); } } - + /// /// Looks up a localized string similar to FillSchema: SelectCommand.Connection property has not been initialized.. /// @@ -320,7 +320,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_FillSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the InsertCommand to have a connection object. The Connection property of the InsertCommand has not been initialized.. /// @@ -329,7 +329,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Insert", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the UpdateCommand to have a connection object. The Connection property of the UpdateCommand has not been initialized.. /// @@ -338,7 +338,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionRequired_Update", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state: {0}.. /// @@ -347,7 +347,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is closed.. /// @@ -356,7 +356,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_Closed", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is connecting.. /// @@ -365,7 +365,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_Connecting", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is open.. /// @@ -374,7 +374,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_Open", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is executing.. /// @@ -383,7 +383,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_OpenExecuting", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection's current state is fetching.. /// @@ -392,7 +392,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStateMsg_OpenFetching", resourceCulture); } } - + /// /// Looks up a localized string similar to Format of the initialization string does not conform to specification starting at index {0}.. /// @@ -401,7 +401,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ConnectionStringSyntax", resourceCulture); } } - + /// /// Looks up a localized string similar to Data adapter error.. /// @@ -410,7 +410,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DataAdapterExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The argument is too long.. /// @@ -419,7 +419,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DatabaseNameTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when reader is closed.. /// @@ -428,7 +428,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DataReaderClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to No data exists for the row/column.. /// @@ -437,7 +437,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DataReaderNoData", resourceCulture); } } - + /// /// Looks up a localized string similar to DB concurrency violation.. /// @@ -446,7 +446,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DBConcurrencyExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' cannot be called when the DbDataRecord is read only.. /// @@ -455,7 +455,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DbDataUpdatableRecordReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' cannot be called when the record is read only.. /// @@ -464,7 +464,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DbRecordReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to No mapping exists from DbType {0} to a known {1}.. /// @@ -473,7 +473,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DbTypeNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot enlist in the transaction because the connection is the primary connection for a delegated or promoted transaction.. /// @@ -482,7 +482,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DelegatedTransactionPresent", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} DeriveParameters only supports CommandType.StoredProcedure, not CommandType.{1}.. /// @@ -491,7 +491,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DeriveParametersNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Descending. /// @@ -500,7 +500,7 @@ internal class Strings { return ResourceManager.GetString("ADP_Descending", resourceCulture); } } - + /// /// Looks up a localized string similar to The acceptable values for the property '{0}' are '{1}' or '{2}'.. /// @@ -509,7 +509,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DoubleValuedProperty", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation is not supported against multiple base tables.. /// @@ -518,7 +518,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLJoinUnsupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation not supported against table names '{0}' that contain the QuotePrefix or QuoteSuffix character '{1}'.. /// @@ -527,7 +527,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNestedQuote", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.. /// @@ -536,7 +536,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoKeyInfoDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not contain a row version column.. /// @@ -545,7 +545,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoKeyInfoRowVersionDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not contain a row version column.. /// @@ -554,7 +554,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoKeyInfoRowVersionUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.. /// @@ -563,7 +563,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoKeyInfoUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Dynamic SQL generation is not supported against a SelectCommand that does not return any base table information.. /// @@ -572,7 +572,7 @@ internal class Strings { return ResourceManager.GetString("ADP_DynamicSQLNoTableInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Expecting non-empty array for '{0}' parameter.. /// @@ -581,7 +581,7 @@ internal class Strings { return ResourceManager.GetString("ADP_EmptyArray", resourceCulture); } } - + /// /// Looks up a localized string similar to Database cannot be null, the empty string, or string of only whitespace.. /// @@ -590,7 +590,7 @@ internal class Strings { return ResourceManager.GetString("ADP_EmptyDatabaseName", resourceCulture); } } - + /// /// Looks up a localized string similar to Expecting non-empty string for '{0}' parameter.. /// @@ -599,7 +599,7 @@ internal class Strings { return ResourceManager.GetString("ADP_EmptyString", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}':The length of the literal value must be even.. /// @@ -608,7 +608,7 @@ internal class Strings { return ResourceManager.GetString("ADP_EvenLengthLiteralValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Hierarchical chapter columns must map to an AutoIncrement DataColumn.. /// @@ -617,7 +617,7 @@ internal class Strings { return ResourceManager.GetString("ADP_FillChapterAutoIncrement", resourceCulture); } } - + /// /// Looks up a localized string similar to Fill: expected a non-empty string for the SourceTable name.. /// @@ -626,7 +626,7 @@ internal class Strings { return ResourceManager.GetString("ADP_FillRequiresSourceTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to FillSchema: expected a non-empty string for the SourceTable name.. /// @@ -635,7 +635,7 @@ internal class Strings { return ResourceManager.GetString("ADP_FillSchemaRequiresSourceTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}':The literal value must be a string with hexadecimal digits. /// @@ -644,7 +644,7 @@ internal class Strings { return ResourceManager.GetString("ADP_HexDigitLiteralValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Incorrect async result.. /// @@ -653,7 +653,7 @@ internal class Strings { return ResourceManager.GetString("ADP_IncorrectAsyncResult", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal DbConnection Error: {0}. /// @@ -662,7 +662,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InternalConnectionError", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal .NET Framework Data Provider error {0}.. /// @@ -671,7 +671,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InternalProviderError", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of argument '{0}' exceeds it's limit of '{1}'.. /// @@ -680,7 +680,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidArgumentLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid argument value for method '{0}'.. /// @@ -689,7 +689,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidArgumentValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Buffer offset '{1}' plus the bytes available '{0}' is greater than the length of the passed in buffer.. /// @@ -698,7 +698,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidBufferSizeOrIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid CommandTimeout value {0}; the value must be >= 0.. /// @@ -707,7 +707,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidCommandTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid value for key '{0}'.. /// @@ -716,7 +716,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidConnectionOptionValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The value's length for key '{0}' exceeds it's limit of '{1}'.. /// @@ -725,7 +725,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidConnectionOptionValueLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 'Connect Timeout' value which must be an integer >= 0.. /// @@ -734,7 +734,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidConnectTimeoutValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataDirectory substitute is not a string.. /// @@ -743,7 +743,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDataDirectory", resourceCulture); } } - + /// /// Looks up a localized string similar to Data length '{0}' is less than 0.. /// @@ -752,7 +752,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDataLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified length '{0}' is out of range.. /// @@ -761,7 +761,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDataLength2", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter data type of {0} is invalid.. /// @@ -770,7 +770,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to Data type '{0}' can not be formatted as a literal because it has an invalid date time digits.. /// @@ -779,7 +779,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDateTimeDigits", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid destination buffer (size of {0}) offset: {1}. /// @@ -788,7 +788,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidDestinationBufferIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is invalid.. /// @@ -797,7 +797,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The value can not be formatted as a literal of the requested type.. /// @@ -806,7 +806,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidFormatValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Implicit conversion of object type '{0}' to data type '{1}' is not supported.. /// @@ -815,7 +815,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidImplicitConversion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid keyword, contain one or more of 'no characters', 'control characters', 'leading or trailing whitespace' or 'leading semicolons'.. /// @@ -824,7 +824,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Data type '{0}' can not be formatted as a literal because it has an invalid maximum scale.. /// @@ -833,7 +833,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMaximumScale", resourceCulture); } } - + /// /// Looks up a localized string similar to The MaxRecords value of {0} is invalid; the value must be >= 0.. /// @@ -842,7 +842,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMaxRecords", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid value for this metadata.. /// @@ -851,7 +851,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMetaDataValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid min or max pool size values, min pool size cannot be greater than the max pool size.. /// @@ -860,7 +860,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMinMaxPoolSizeValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property if 'Authentication' has been specified in the connection string.. /// @@ -869,7 +869,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndAuthentication", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property with the 'Context Connection' keyword.. /// @@ -878,7 +878,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property if the Credential property is already set.. /// @@ -887,7 +887,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property if the 'Integrated Security' connection string keyword has been set to 'true' or 'SSPI'.. /// @@ -896,7 +896,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndIntegratedSecurity", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the AccessToken property if 'UserID', 'UID', 'Password', or 'PWD' has been specified in connection string.. /// @@ -905,7 +905,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfAccessTokenAndUserIDPassword", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the Credential property if the AccessToken property is already set.. /// @@ -914,7 +914,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfCredentialAndAccessToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use Credential with UserID, UID, Password, or PWD connection string keywords.. /// @@ -923,7 +923,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfSecureAndClearCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use Credential with Context Connection keyword.. /// @@ -932,7 +932,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfSecureCredentialAndContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use Credential with Integrated Security connection string keyword.. /// @@ -941,7 +941,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMixedUsageOfSecureCredentialAndIntegratedSecurity", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} "{1}".. /// @@ -950,7 +950,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMultipartName", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} "{1}", incorrect usage of quotes.. /// @@ -959,7 +959,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMultipartNameQuoteUsage", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} "{1}", the current limit of "{2}" is insufficient.. /// @@ -968,7 +968,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidMultipartNameToManyParts", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid parameter Offset value '{0}'. The value must be greater than or equal to 0.. /// @@ -977,7 +977,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidOffsetValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified QuotePrefix and QuoteSuffix values do not match.. /// @@ -986,7 +986,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidPrefixSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified SeekOrigin value is invalid.. /// @@ -995,7 +995,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSeekOrigin", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid parameter Size value '{0}'. The value must be greater than or equal to 0.. /// @@ -1004,7 +1004,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSizeValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid source buffer (size of {0}) offset: {1}. /// @@ -1013,7 +1013,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSourceBufferIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to SourceColumn is required to be a non-empty string.. /// @@ -1022,7 +1022,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSourceColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to SourceTable is required to be a non-empty string. /// @@ -1031,7 +1031,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidSourceTable", resourceCulture); } } - + /// /// Looks up a localized string similar to The StartRecord value of {0} is invalid; the value must be >= 0.. /// @@ -1040,7 +1040,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidStartRecord", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid UDL file.. /// @@ -1049,7 +1049,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidUDL", resourceCulture); } } - + /// /// Looks up a localized string similar to The value contains embedded nulls (\u0000).. /// @@ -1058,7 +1058,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Xml; can only parse elements of version one.. /// @@ -1067,7 +1067,7 @@ internal class Strings { return ResourceManager.GetString("ADP_InvalidXMLBadVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Keyword not supported: '{0}'.. /// @@ -1076,7 +1076,7 @@ internal class Strings { return ResourceManager.GetString("ADP_KeywordNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The literal value provided is not a valid literal for the data type '{0}'.. /// @@ -1085,7 +1085,7 @@ internal class Strings { return ResourceManager.GetString("ADP_LiteralValueIsInvalid", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot enlist in the transaction because a local transaction is in progress on the connection. Finish local transaction and retry.. /// @@ -1094,7 +1094,7 @@ internal class Strings { return ResourceManager.GetString("ADP_LocalTransactionPresent", resourceCulture); } } - + /// /// Looks up a localized string similar to Mismatched end method call for asyncResult. Expected call to {0} but {1} was called instead.. /// @@ -1103,7 +1103,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MismatchedAsyncResult", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing SourceColumn mapping for '{0}'.. /// @@ -1112,7 +1112,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingColumnMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to Use of key '{0}' requires the key '{1}' to be present.. /// @@ -1121,7 +1121,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingConnectionOptionValue", resourceCulture); } } - + /// /// Looks up a localized string similar to DataReader.GetFieldType({0}) returned null.. /// @@ -1130,7 +1130,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingDataReaderFieldType", resourceCulture); } } - + /// /// Looks up a localized string similar to The SelectCommand property has not been initialized before calling '{0}'.. /// @@ -1139,7 +1139,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingSelectCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter.SelectCommand property needs to be initialized.. /// @@ -1148,7 +1148,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingSourceCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter.SelectCommand.Connection property needs to be initialized;. /// @@ -1157,7 +1157,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingSourceCommandConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing SourceTable mapping: '{0}'. /// @@ -1166,7 +1166,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingTableMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing TableMapping when TableMapping.DataSetTable='{0}'.. /// @@ -1175,7 +1175,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingTableMappingDestination", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing the '{0}' DataTable for the '{1}' SourceTable.. /// @@ -1184,7 +1184,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MissingTableSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Multiple return value parameters are not supported.. /// @@ -1193,7 +1193,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MultipleReturnValue", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} must be marked as read only.. /// @@ -1202,7 +1202,7 @@ internal class Strings { return ResourceManager.GetString("ADP_MustBeReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid value for argument '{0}'. The value must be greater than or equal to 0.. /// @@ -1211,7 +1211,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NegativeParameter", resourceCulture); } } - + /// /// Looks up a localized string similar to The ConnectionString property has not been initialized.. /// @@ -1220,7 +1220,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NoConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to A Non CLS Exception was caught.. /// @@ -1229,7 +1229,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NonCLSException", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout attempting to open the connection. The time period elapsed prior to attempting to open the connection has been exceeded. This may have occurred because of too many simultaneous non-pooled connection attempts.. /// @@ -1238,7 +1238,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NonPooledOpenTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid {2} attempt at dataIndex '{0}'. With CommandBehavior.SequentialAccess, you may only read from dataIndex '{1}' or greater.. /// @@ -1247,7 +1247,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NonSeqByteAccess", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to read from column ordinal '{0}'. With CommandBehavior.SequentialAccess, you may only read from column ordinal '{1}' or greater.. /// @@ -1256,7 +1256,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NonSequentialColumnAccess", resourceCulture); } } - + /// /// Looks up a localized string similar to The QuotePrefix and QuoteSuffix properties cannot be changed once an Insert, Update, or Delete command has been generated.. /// @@ -1265,7 +1265,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NoQuoteChange", resourceCulture); } } - + /// /// Looks up a localized string similar to The stored procedure '{0}' doesn't exist.. /// @@ -1274,7 +1274,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NoStoredProcedureExists", resourceCulture); } } - + /// /// Looks up a localized string similar to Given security element is not a permission element.. /// @@ -1283,7 +1283,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NotAPermissionElement", resourceCulture); } } - + /// /// Looks up a localized string similar to Metadata must be SqlDbType.Row. /// @@ -1292,7 +1292,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NotRowType", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by the {2} method.. /// @@ -1301,7 +1301,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NotSupportedEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected null DataSet argument.. /// @@ -1310,7 +1310,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NullDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected null DataTable argument. /// @@ -1319,7 +1319,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NullDataTable", resourceCulture); } } - + /// /// Looks up a localized string similar to The numerical value is too large to fit into a 96 bit decimal.. /// @@ -1328,7 +1328,7 @@ internal class Strings { return ResourceManager.GetString("ADP_NumericToDecimalOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' keyword is obsolete. Use '{1}' instead.. /// @@ -1337,7 +1337,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ObsoleteKeyword", resourceCulture); } } - + /// /// Looks up a localized string similar to The ODBC provider did not return results from SQLGETTYPEINFO.. /// @@ -1346,7 +1346,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OdbcNoTypesFromProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Offset must refer to a location within the value.. /// @@ -1355,7 +1355,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OffsetOutOfRangeException", resourceCulture); } } - + /// /// Looks up a localized string similar to Only specify one item in the dataTables array when using non-zero values for startRecords or maxRecords.. /// @@ -1364,7 +1364,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OnlyOneTableForStartRecordOrMaxRecords", resourceCulture); } } - + /// /// Looks up a localized string similar to Not allowed to change the '{0}' property. {1}. /// @@ -1373,7 +1373,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionPropertySet", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} requires an open and available Connection. {1}. /// @@ -1382,7 +1382,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the updating command to have an open connection object. {1}. /// @@ -1391,7 +1391,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired_Clone", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the {0}Command to have an open connection object. {1}. /// @@ -1400,7 +1400,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired_Delete", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the {0}Command to have an open connection object. {1}. /// @@ -1409,7 +1409,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired_Insert", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the {0}Command to have an open connection object. {1}. /// @@ -1418,7 +1418,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenConnectionRequired_Update", resourceCulture); } } - + /// /// Looks up a localized string similar to There is already an open DataReader associated with this {0} which must be closed first.. /// @@ -1427,7 +1427,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenReaderExists", resourceCulture); } } - + /// /// Looks up a localized string similar to There is already an open SqlResultSet associated with this command which must be closed first.. /// @@ -1436,7 +1436,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OpenResultSetExists", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation aborted.. /// @@ -1445,7 +1445,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OperationAborted", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation aborted due to an exception (see InnerException for details).. /// @@ -1454,7 +1454,7 @@ internal class Strings { return ResourceManager.GetString("ADP_OperationAbortedExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} does not support parallel transactions.. /// @@ -1463,7 +1463,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ParallelTransactionsNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to convert parameter value from a {0} to a {1}.. /// @@ -1472,7 +1472,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ParameterConversionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter value '{0}' is out of range.. /// @@ -1481,7 +1481,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ParameterValueOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not start another operation while there is an asynchronous operation pending.. /// @@ -1490,7 +1490,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PendingAsyncOperation", resourceCulture); } } - + /// /// Looks up a localized string similar to Type mismatch.. /// @@ -1499,7 +1499,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PermissionTypeMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.. /// @@ -1508,7 +1508,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PooledOpenTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}.Prepare method requires parameters of type '{1}' have an explicitly set Precision and Scale.. /// @@ -1517,7 +1517,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PrepareParameterScale", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}.Prepare method requires all variable length parameters to have an explicitly set non-zero Size.. /// @@ -1526,7 +1526,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PrepareParameterSize", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}.Prepare method requires all parameters to have an explicitly set type.. /// @@ -1535,7 +1535,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PrepareParameterType", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' property requires Microsoft WindowsNT or a WindowsNT based operating system.. /// @@ -1544,7 +1544,7 @@ internal class Strings { return ResourceManager.GetString("ADP_PropertyNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} requires open connection when the quote prefix has not been set.. /// @@ -1553,7 +1553,7 @@ internal class Strings { return ResourceManager.GetString("ADP_QuotePrefixNotSet", resourceCulture); } } - + /// /// Looks up a localized string similar to When batching, the command's UpdatedRowSource property value of UpdateRowSource.FirstReturnedRecord or UpdateRowSource.Both is invalid.. /// @@ -1562,7 +1562,7 @@ internal class Strings { return ResourceManager.GetString("ADP_ResultsNotAllowedDuringBatch", resourceCulture); } } - + /// /// Looks up a localized string similar to RowUpdatedEvent: Errors occurred; no additional is information available.. /// @@ -1571,7 +1571,7 @@ internal class Strings { return ResourceManager.GetString("ADP_RowUpdatedErrors", resourceCulture); } } - + /// /// Looks up a localized string similar to RowUpdatingEvent: Errors occurred; no additional is information available.. /// @@ -1580,7 +1580,7 @@ internal class Strings { return ResourceManager.GetString("ADP_RowUpdatingErrors", resourceCulture); } } - + /// /// Looks up a localized string similar to The only acceptable value for the property '{0}' is '{1}'.. /// @@ -1589,7 +1589,7 @@ internal class Strings { return ResourceManager.GetString("ADP_SingleValuedProperty", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to {0} when stream is closed.. /// @@ -1598,7 +1598,7 @@ internal class Strings { return ResourceManager.GetString("ADP_StreamClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to The transaction assigned to this command must be the most nested pending local transaction.. /// @@ -1607,7 +1607,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionCompleted", resourceCulture); } } - + /// /// Looks up a localized string similar to The transaction associated with the current connection has completed but has not been disposed. The transaction must be disposed before the connection can be used to execute SQL statements.. /// @@ -1616,7 +1616,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionCompletedButNotDisposed", resourceCulture); } } - + /// /// Looks up a localized string similar to The transaction is either not associated with the current connection or has been completed.. /// @@ -1625,7 +1625,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionConnectionMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection currently has transaction enlisted. Finish current transaction and retry.. /// @@ -1634,7 +1634,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionPresent", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} requires the command to have a transaction when the connection assigned to the command is in a pending local transaction. The Transaction property of the command has not been initialized.. /// @@ -1643,7 +1643,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to This {0} has completed; it is no longer usable.. /// @@ -1652,7 +1652,7 @@ internal class Strings { return ResourceManager.GetString("ADP_TransactionZombied", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to load the UDL file.. /// @@ -1661,7 +1661,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UdlFileError", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not determine the correct boolean literal values. Boolean literals can not be created.. /// @@ -1670,7 +1670,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnableToCreateBooleanLiteral", resourceCulture); } } - + /// /// Looks up a localized string similar to {1}[{0}]: the Size property has an invalid size of 0.. /// @@ -1679,7 +1679,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UninitializedParameterSize", resourceCulture); } } - + /// /// Looks up a localized string similar to No mapping exists from object type {0} to a known managed provider native type.. /// @@ -1688,7 +1688,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnknownDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to handle an unknown TypeCode {0} returned by Type {1}.. /// @@ -1697,7 +1697,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnknownDataTypeCode", resourceCulture); } } - + /// /// Looks up a localized string similar to Literals of the native data type associated with data type '{0}' are not supported.. /// @@ -1706,7 +1706,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnsupportedNativeDataTypeOleDb", resourceCulture); } } - + /// /// Looks up a localized string similar to The StatementType {0} is not expected here.. /// @@ -1715,7 +1715,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UnwantedStatementType", resourceCulture); } } - + /// /// Looks up a localized string similar to Concurrency violation: the batched command affected {0} of the expected {1} records.. /// @@ -1724,7 +1724,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateConcurrencyViolation_Batch", resourceCulture); } } - + /// /// Looks up a localized string similar to Concurrency violation: the DeleteCommand affected {0} of the expected {1} records.. /// @@ -1733,7 +1733,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateConcurrencyViolation_Delete", resourceCulture); } } - + /// /// Looks up a localized string similar to Concurrency violation: the UpdateCommand affected {0} of the expected {1} records.. /// @@ -1742,7 +1742,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateConcurrencyViolation_Update", resourceCulture); } } - + /// /// Looks up a localized string similar to DataRow[{0}] is from a different DataTable than DataRow[0].. /// @@ -1751,7 +1751,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateMismatchRowTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires the command clone to be valid.. /// @@ -1760,7 +1760,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandClone", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a valid DeleteCommand when passed DataRow collection with deleted rows.. /// @@ -1769,7 +1769,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a valid InsertCommand when passed DataRow collection with new rows.. /// @@ -1778,7 +1778,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandInsert", resourceCulture); } } - + /// /// Looks up a localized string similar to Auto SQL generation during Update requires a valid SelectCommand.. /// @@ -1787,7 +1787,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandSelect", resourceCulture); } } - + /// /// Looks up a localized string similar to Update requires a valid UpdateCommand when passed DataRow collection with modified rows.. /// @@ -1796,7 +1796,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresCommandUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Update unable to find TableMapping['{0}'] or DataTable '{0}'.. /// @@ -1805,7 +1805,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresSourceTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Update: expected a non-empty SourceTable name.. /// @@ -1814,7 +1814,7 @@ internal class Strings { return ResourceManager.GetString("ADP_UpdateRequiresSourceTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to The version of SQL Server in use does not support datatype '{0}'.. /// @@ -1823,7 +1823,7 @@ internal class Strings { return ResourceManager.GetString("ADP_VersionDoesNotSupportDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. The token signature does not match the signature omputed using a public key retrieved from the attestation public key endpoint at '{0}'. Verify the DNS apping for the endpoint. If correct, contact Customer Support Services.. /// @@ -1832,7 +1832,61 @@ internal class Strings { return ResourceManager.GetString("AttestationTokenSignatureValidationFailed", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Access token could not be acquired.. + /// + internal static string Azure_GenericErrorMessage { + get { + return ResourceManager.GetString("Azure_GenericErrorMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unable to connect to the Managed Identity endpoint. Please check that you are running on an Azure resource that has Identity setup.. + /// + internal static string Azure_IdentityEndpointNotListening { + get { + return ResourceManager.GetString("Azure_IdentityEndpointNotListening", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tried to get token using Managed Identity.. + /// + internal static string Azure_ManagedIdentityUsed { + get { + return ResourceManager.GetString("Azure_ManagedIdentityUsed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unable to connect to the Instance Metadata Service (IMDS). Skipping request to the Managed Identity token endpoint.. + /// + internal static string Azure_MetadataEndpointNotListening { + get { + return ResourceManager.GetString("Azure_MetadataEndpointNotListening", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Received a non-retryable error.. + /// + internal static string Azure_NonRetryableError { + get { + return ResourceManager.GetString("Azure_NonRetryableError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed after 5 retries.. + /// + internal static string Azure_RetryFailure { + get { + return ResourceManager.GetString("Azure_RetryFailure", resourceCulture); + } + } + /// /// Looks up a localized string similar to .database.chinacloudapi.cn. /// @@ -1841,7 +1895,7 @@ internal class Strings { return ResourceManager.GetString("AZURESQL_ChinaEndpoint", resourceCulture); } } - + /// /// Looks up a localized string similar to .database.windows.net. /// @@ -1850,7 +1904,7 @@ internal class Strings { return ResourceManager.GetString("AZURESQL_GenericEndpoint", resourceCulture); } } - + /// /// Looks up a localized string similar to .database.cloudapi.de. /// @@ -1859,7 +1913,7 @@ internal class Strings { return ResourceManager.GetString("AZURESQL_GermanEndpoint", resourceCulture); } } - + /// /// Looks up a localized string similar to .database.usgovcloudapi.net. /// @@ -1868,7 +1922,7 @@ internal class Strings { return ResourceManager.GetString("AZURESQL_UsGovEndpoint", resourceCulture); } } - + /// /// Looks up a localized string similar to There is more than one table with the same name '{0}' (even if namespace is different).. /// @@ -1877,7 +1931,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_DuplicateTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot generate identifier for name '{0}'.. /// @@ -1886,7 +1940,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_InvalidIdentifier", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}': Type '{1}' does not have parameterless constructor.. /// @@ -1895,7 +1949,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_NoCtor0", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}': Type '{1}' does not have constructor with string argument.. /// @@ -1904,7 +1958,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_NoCtor1", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}': Type '{1}' cannot be null.. /// @@ -1913,7 +1967,7 @@ internal class Strings { return ResourceManager.GetString("CodeGen_TypeCantBeNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs whenever this collection's membership changes.. /// @@ -1922,7 +1976,7 @@ internal class Strings { return ResourceManager.GetString("collectionChangedEventDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Only elements allowed.. /// @@ -1931,7 +1985,7 @@ internal class Strings { return ResourceManager.GetString("ConfigBaseElementsOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Child nodes not allowed.. /// @@ -1940,7 +1994,7 @@ internal class Strings { return ResourceManager.GetString("ConfigBaseNoChildNodes", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested .NET Framework Data Provider's implementation does not have an Instance field of a System.Data.Common.DbProviderFactory derived type.. /// @@ -1949,7 +2003,7 @@ internal class Strings { return ResourceManager.GetString("ConfigProviderInvalid", resourceCulture); } } - + /// /// Looks up a localized string similar to The missing .NET Framework Data Provider's assembly qualified name is required.. /// @@ -1958,7 +2012,7 @@ internal class Strings { return ResourceManager.GetString("ConfigProviderMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find the requested .NET Framework Data Provider. It may not be installed.. /// @@ -1967,7 +2021,7 @@ internal class Strings { return ResourceManager.GetString("ConfigProviderNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to find or load the registered .NET Framework Data Provider.. /// @@ -1976,7 +2030,7 @@ internal class Strings { return ResourceManager.GetString("ConfigProviderNotInstalled", resourceCulture); } } - + /// /// Looks up a localized string similar to Required attribute '{0}' cannot be empty.. /// @@ -1985,7 +2039,7 @@ internal class Strings { return ResourceManager.GetString("ConfigRequiredAttributeEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to Required attribute '{0}' not found.. /// @@ -1994,7 +2048,7 @@ internal class Strings { return ResourceManager.GetString("ConfigRequiredAttributeMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' section can only appear once per config file.. /// @@ -2003,7 +2057,7 @@ internal class Strings { return ResourceManager.GetString("ConfigSectionsUnique", resourceCulture); } } - + /// /// Looks up a localized string similar to Unrecognized attribute '{0}'.. /// @@ -2012,7 +2066,7 @@ internal class Strings { return ResourceManager.GetString("ConfigUnrecognizedAttributes", resourceCulture); } } - + /// /// Looks up a localized string similar to Unrecognized element.. /// @@ -2021,7 +2075,7 @@ internal class Strings { return ResourceManager.GetString("ConfigUnrecognizedElement", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the name of this constraint.. /// @@ -2030,7 +2084,7 @@ internal class Strings { return ResourceManager.GetString("ConstraintNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the table of this constraint.. /// @@ -2039,7 +2093,7 @@ internal class Strings { return ResourceManager.GetString("ConstraintTableDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' argument contains null value.. /// @@ -2048,7 +2102,7 @@ internal class Strings { return ResourceManager.GetString("Data_ArgumentContainsNull", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' argument cannot be null.. /// @@ -2057,7 +2111,7 @@ internal class Strings { return ResourceManager.GetString("Data_ArgumentNull", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' argument is out of range.. /// @@ -2066,7 +2120,7 @@ internal class Strings { return ResourceManager.GetString("Data_ArgumentOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Collection itself is not modifiable.. /// @@ -2075,7 +2129,7 @@ internal class Strings { return ResourceManager.GetString("Data_CannotModifyCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to The given name '{0}' matches at least two names in the collection object with different cases, but does not match either of them with the same case.. /// @@ -2084,7 +2138,7 @@ internal class Strings { return ResourceManager.GetString("Data_CaseInsensitiveNameConflict", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.. /// @@ -2093,7 +2147,7 @@ internal class Strings { return ResourceManager.GetString("Data_EnforceConstraints", resourceCulture); } } - + /// /// Looks up a localized string similar to Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.. /// @@ -2102,7 +2156,7 @@ internal class Strings { return ResourceManager.GetString("Data_InvalidOffsetLength", resourceCulture); } } - + /// /// Looks up a localized string similar to The given name '{0}' matches at least two names in the collection object with different namespaces.. /// @@ -2111,7 +2165,7 @@ internal class Strings { return ResourceManager.GetString("Data_NamespaceNameConflict", resourceCulture); } } - + /// /// Looks up a localized string similar to Whether or not Fill will call DataRow.AcceptChanges.. /// @@ -2120,7 +2174,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_AcceptChangesDuringFill", resourceCulture); } } - + /// /// Looks up a localized string similar to Whether or not Update will call DataRow.AcceptChanges.. /// @@ -2129,7 +2183,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_AcceptChangesDuringUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Whether or not to continue to the next DataRow when the Update events, RowUpdating and RowUpdated, Status is UpdateStatus.ErrorsOccurred.. /// @@ -2138,7 +2192,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_ContinueUpdateOnError", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered when a recoverable error occurs during Fill.. /// @@ -2147,7 +2201,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_FillError", resourceCulture); } } - + /// /// Looks up a localized string similar to How the adapter fills the DataTable from the DataReader.. /// @@ -2156,7 +2210,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_FillLoadOption", resourceCulture); } } - + /// /// Looks up a localized string similar to The action taken when a table or column in the TableMappings is missing.. /// @@ -2165,7 +2219,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_MissingMappingAction", resourceCulture); } } - + /// /// Looks up a localized string similar to The action taken when a table or column in the DataSet is missing.. /// @@ -2174,7 +2228,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_MissingSchemaAction", resourceCulture); } } - + /// /// Looks up a localized string similar to Should Fill return provider specific values or common CLSCompliant values.. /// @@ -2183,7 +2237,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_ReturnProviderSpecificTypes", resourceCulture); } } - + /// /// Looks up a localized string similar to How to map source table to DataSet table.. /// @@ -2192,7 +2246,7 @@ internal class Strings { return ResourceManager.GetString("DataAdapter_TableMappings", resourceCulture); } } - + /// /// Looks up a localized string similar to Action. /// @@ -2201,7 +2255,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Action", resourceCulture); } } - + /// /// Looks up a localized string similar to Advanced. /// @@ -2210,7 +2264,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Advanced", resourceCulture); } } - + /// /// Looks up a localized string similar to Behavior. /// @@ -2219,7 +2273,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Behavior", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Resiliency. /// @@ -2228,7 +2282,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_ConnectionResilency", resourceCulture); } } - + /// /// Looks up a localized string similar to Context. /// @@ -2237,7 +2291,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Context", resourceCulture); } } - + /// /// Looks up a localized string similar to Data. /// @@ -2246,7 +2300,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Data", resourceCulture); } } - + /// /// Looks up a localized string similar to Fill. /// @@ -2255,7 +2309,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Fill", resourceCulture); } } - + /// /// Looks up a localized string similar to InfoMessage. /// @@ -2264,7 +2318,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_InfoMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Initialization. /// @@ -2273,7 +2327,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Initialization", resourceCulture); } } - + /// /// Looks up a localized string similar to Mapping. /// @@ -2282,7 +2336,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Mapping", resourceCulture); } } - + /// /// Looks up a localized string similar to Named ConnectionString. /// @@ -2291,7 +2345,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_NamedConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Notification. /// @@ -2300,7 +2354,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Notification", resourceCulture); } } - + /// /// Looks up a localized string similar to Pooling. /// @@ -2309,7 +2363,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Pooling", resourceCulture); } } - + /// /// Looks up a localized string similar to Replication. /// @@ -2318,7 +2372,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Replication", resourceCulture); } } - + /// /// Looks up a localized string similar to Schema. /// @@ -2327,7 +2381,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Schema", resourceCulture); } } - + /// /// Looks up a localized string similar to Security. /// @@ -2336,7 +2390,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Security", resourceCulture); } } - + /// /// Looks up a localized string similar to Source. /// @@ -2345,7 +2399,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Source", resourceCulture); } } - + /// /// Looks up a localized string similar to StateChange. /// @@ -2354,7 +2408,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_StateChange", resourceCulture); } } - + /// /// Looks up a localized string similar to StatementCompleted. /// @@ -2363,7 +2417,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_StatementCompleted", resourceCulture); } } - + /// /// Looks up a localized string similar to UDT. /// @@ -2372,7 +2426,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Udt", resourceCulture); } } - + /// /// Looks up a localized string similar to Update. /// @@ -2381,7 +2435,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Update", resourceCulture); } } - + /// /// Looks up a localized string similar to XML. /// @@ -2390,7 +2444,7 @@ internal class Strings { return ResourceManager.GetString("DataCategory_Xml", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set AutoIncrement property for a column with DefaultValue set.. /// @@ -2399,7 +2453,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_AutoIncrementAndDefaultValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set AutoIncrement property for a computed column.. /// @@ -2408,7 +2462,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_AutoIncrementAndExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change AutoIncrement of a DataColumn with type '{0}' once it has data.. /// @@ -2417,7 +2471,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_AutoIncrementCannotSetIfHasData", resourceCulture); } } - + /// /// Looks up a localized string similar to AutoIncrementStep must be a non-zero value.. /// @@ -2426,7 +2480,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_AutoIncrementSeed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the Column '{0}' property Namespace. The Column is SimpleContent.. /// @@ -2435,7 +2489,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotChangeNamespace", resourceCulture); } } - + /// /// Looks up a localized string similar to The DateTimeMode can be set only on DataColumns of type DateTime.. /// @@ -2444,7 +2498,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSetDateTimeModeForNonDateTimeColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' property MaxLength to '{1}'. There is at least one string in the table longer than the new limit.. /// @@ -2453,7 +2507,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSetMaxLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' property MaxLength. The Column is SimpleContent.. /// @@ -2462,7 +2516,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSetMaxLength2", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' to be null. Please use DBNull instead.. /// @@ -2471,7 +2525,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSetToNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' property MappingType to SimpleContent. The Column DataType is {1}.. /// @@ -2480,7 +2534,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSimpleContent", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Column '{0}' property DataType to {1}. The Column is SimpleContent.. /// @@ -2489,7 +2543,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_CannotSimpleContentType", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change DataType of a column once it has data.. /// @@ -2498,7 +2552,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ChangeDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change DateTimeMode from '{0}' to '{1}' once the table has data.. /// @@ -2507,7 +2561,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DateTimeMode", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set a DefaultValue on an AutoIncrement column.. /// @@ -2516,7 +2570,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DefaultValueAndAutoIncrement", resourceCulture); } } - + /// /// Looks up a localized string similar to The DefaultValue for column {0} is of type {1}, but the column is of type {2}.. /// @@ -2525,7 +2579,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DefaultValueColumnDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to The DefaultValue for column {0} is of type {1} and cannot be converted to {2}.. /// @@ -2534,7 +2588,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DefaultValueDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to The DefaultValue for the column is of type {0} and cannot be converted to {1}.. /// @@ -2543,7 +2597,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_DefaultValueDataType1", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' exceeds the MaxLength limit.. /// @@ -2552,7 +2606,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExceedMaxLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Expression property on column {0}, because it is a part of a constraint.. /// @@ -2561,7 +2615,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionAndConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set expression because column cannot be made ReadOnly.. /// @@ -2570,7 +2624,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionAndReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create an expression on a column that has AutoIncrement or Unique.. /// @@ -2579,7 +2633,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionAndUnique", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set Expression property due to circular reference in the expression.. /// @@ -2588,7 +2642,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionCircular", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a constraint based on Expression column {0}.. /// @@ -2597,7 +2651,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ExpressionInConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to MaxLength applies to string data type only. You cannot set Column '{0}' property MaxLength to be non-negative number.. /// @@ -2606,7 +2660,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_HasToBeStringType", resourceCulture); } } - + /// /// Looks up a localized string similar to Type '{0}' does not contain static Null property or field.. /// @@ -2615,7 +2669,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_INullableUDTwithoutStaticNull", resourceCulture); } } - + /// /// Looks up a localized string similar to DataColumn with type '{0}' is a complexType. Can not serialize value of a complex type as Attribute. /// @@ -2624,7 +2678,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_InvalidDataColumnMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' is Invalid DataSetDateTime value.. /// @@ -2633,7 +2687,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_InvalidDateTimeMode", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set column '{0}'. The value violates the MaxLength limit of this column.. /// @@ -2642,7 +2696,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_LongerThanMaxLength", resourceCulture); } } - + /// /// Looks up a localized string similar to ColumnName is required when it is part of a DataTable.. /// @@ -2651,7 +2705,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NameRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' contains non-unique values.. /// @@ -2660,7 +2714,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NonUniqueValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not allow DBNull.Value.. /// @@ -2669,7 +2723,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NotAllowDBNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Column must belong to a table.. /// @@ -2678,7 +2732,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NotInAnyTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not belong to table {1}.. /// @@ -2687,7 +2741,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NotInTheTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not belong to underlying table '{1}'.. /// @@ -2696,7 +2750,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NotInTheUnderlyingTable", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet does not support System.Nullable<>.. /// @@ -2705,7 +2759,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NullableTypesNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Column requires a valid DataType.. /// @@ -2714,7 +2768,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NullDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' has null values in it.. /// @@ -2723,7 +2777,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NullKeyValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not allow nulls.. /// @@ -2732,7 +2786,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_NullValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Ordinal '{0}' exceeds the maximum number.. /// @@ -2741,7 +2795,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_OrdinalExceedMaximun", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' is read only.. /// @@ -2750,7 +2804,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change ReadOnly property for the expression column.. /// @@ -2759,7 +2813,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_ReadOnlyAndExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to SetAdded and SetModified can only be called on DataRows with Unchanged DataRowState.. /// @@ -2768,7 +2822,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_SetAddedAndModifiedCalledOnNonUnchanged", resourceCulture); } } - + /// /// Looks up a localized string similar to Couldn't store <{0}> in {1} Column. Expected type is {2}.. /// @@ -2777,7 +2831,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_SetFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Type '{0}' does not implement IRevertibleChangeTracking; therefore can not proceed with RejectChanges().. /// @@ -2786,7 +2840,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_UDTImplementsIChangeTrackingButnotIRevertible", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change Unique property for the expression column.. /// @@ -2795,7 +2849,7 @@ internal class Strings { return ResourceManager.GetString("DataColumn_UniqueAndExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether null values are allowed in this column.. /// @@ -2804,7 +2858,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnAllowNullDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether the column automatically increments itself for new rows added to the table. The type of this column must be Int16, Int32, or Int64.. /// @@ -2813,7 +2867,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnAutoIncrementDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the starting value for an AutoIncrement column.. /// @@ -2822,7 +2876,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnAutoIncrementSeedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the increment used by an AutoIncrement column.. /// @@ -2831,7 +2885,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnAutoIncrementStepDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the default user-interface caption for this column.. /// @@ -2840,7 +2894,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnCaptionDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the name used to look up this column in the Columns collection of a DataTable.. /// @@ -2849,7 +2903,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnColumnNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns the DataTable to which this column belongs.. /// @@ -2858,7 +2912,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnDataTableDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the type of data stored in this column.. /// @@ -2867,7 +2921,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnDataTypeDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates DateTimeMode of this DataColumn.. /// @@ -2876,7 +2930,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnDateTimeModeDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the default column value used when adding new rows to the table.. /// @@ -2885,7 +2939,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnDefaultValueDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the value that this column computes for each row based on other columns instead of taking user input.. /// @@ -2894,7 +2948,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnExpressionDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to DataColumn.ColumnName. /// @@ -2903,7 +2957,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMapping_DataSetColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Source column name - case sensitive.. /// @@ -2912,7 +2966,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMapping_SourceColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates how this column persists in XML: as an attribute, element, simple content node, or nothing.. /// @@ -2921,7 +2975,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMappingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The number of items in the collection. /// @@ -2930,7 +2984,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMappings_Count", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified DataColumnMapping object.. /// @@ -2939,7 +2993,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMappings_Item", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the maximum length of the value this column allows.. /// @@ -2948,7 +3002,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnMaxLengthDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the XML uri for elements or attributes stored in this column.. /// @@ -2957,7 +3011,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnNamespaceDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the index of this column in the Columns collection.. /// @@ -2966,7 +3020,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnOrdinalDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the Prefix used for this DataColumn in xml representation.. /// @@ -2975,7 +3029,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnPrefixDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this column allows changes once a row has been added to the table.. /// @@ -2984,7 +3038,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnReadOnlyDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' already belongs to this DataTable.. /// @@ -2993,7 +3047,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Add1", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' already belongs to another DataTable.. /// @@ -3002,7 +3056,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Add2", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have more than one SimpleContent columns in a DataTable.. /// @@ -3011,7 +3065,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Add3", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a SimpleContent column to a table containing element columns or nested relations.. /// @@ -3020,7 +3074,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Add4", resourceCulture); } } - + /// /// Looks up a localized string similar to A column named '{0}' already belongs to this DataTable.. /// @@ -3029,7 +3083,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_AddDuplicate", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a column named '{0}': a nested table with the same name already belongs to this DataTable.. /// @@ -3038,7 +3092,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_AddDuplicate2", resourceCulture); } } - + /// /// Looks up a localized string similar to A column named '{0}' already belongs to this DataTable: cannot set a nested table name to the same name.. /// @@ -3047,7 +3101,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_AddDuplicate3", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find column {0}.. /// @@ -3056,7 +3110,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove a column that doesn't belong to this table.. /// @@ -3065,7 +3119,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_Remove", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this column, because it is part of the parent key for relationship {0}.. /// @@ -3074,7 +3128,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_RemoveChildKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this column, because it is a part of the constraint {0} on the table {1}.. /// @@ -3083,7 +3137,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_RemoveConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this column, because it is part of an expression: {0} = {1}.. /// @@ -3092,7 +3146,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_RemoveExpression", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this column, because it's part of the primary key.. /// @@ -3101,7 +3155,7 @@ internal class Strings { return ResourceManager.GetString("DataColumns_RemovePrimaryKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this column should restrict its values in the rows of the table to be unique.. /// @@ -3110,7 +3164,7 @@ internal class Strings { return ResourceManager.GetString("DataColumnUniqueDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to This constraint cannot be added since ForeignKey doesn't belong to table {0}.. /// @@ -3119,7 +3173,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_AddFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add primary key constraint since primary key is already set for the table.. /// @@ -3128,7 +3182,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_AddPrimaryKeyConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Property not accessible because '{0}'.. /// @@ -3137,7 +3191,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_BadObjectPropertyAccess", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add constraint to DataTable '{0}' which is a child table in two nested relations.. /// @@ -3146,7 +3200,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_CantAddConstraintToMultipleNestedTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot delete this row because constraints are enforced on relation {0}, and deleting this row will strand child rows.. /// @@ -3155,7 +3209,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_CascadeDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot make this change because constraints are enforced on relation {0}, and changing this value will strand child rows.. /// @@ -3164,7 +3218,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_CascadeUpdate", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot clear table {0} because ForeignKeyConstraint {1} enforces constraints and there are child rows in {2}.. /// @@ -3173,7 +3227,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ClearParentTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Constraint matches constraint named {0} already in collection.. /// @@ -3182,7 +3236,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_Duplicate", resourceCulture); } } - + /// /// Looks up a localized string similar to A Constraint named '{0}' already belongs to this DataTable.. /// @@ -3191,7 +3245,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_DuplicateName", resourceCulture); } } - + /// /// Looks up a localized string similar to ForeignKeyConstraint {0} requires the child key values ({1}) to exist in the parent table.. /// @@ -3200,7 +3254,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ForeignKeyViolation", resourceCulture); } } - + /// /// Looks up a localized string similar to These columns don't point to this table.. /// @@ -3209,7 +3263,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ForeignTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove unique constraint '{0}'. Remove foreign key constraint '{1}' first.. /// @@ -3218,7 +3272,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_NeededForForeignKeyConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the name of a constraint to empty string when it is in the ConstraintCollection.. /// @@ -3227,7 +3281,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_NoName", resourceCulture); } } - + /// /// Looks up a localized string similar to Constraint '{0}' does not belong to this DataTable.. /// @@ -3236,7 +3290,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_NotInTheTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find constraint {0}.. /// @@ -3245,7 +3299,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to This constraint cannot be enabled as not all values have corresponding parent values.. /// @@ -3254,7 +3308,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ParentValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove a constraint that doesn't belong to this table.. /// @@ -3263,7 +3317,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_RemoveFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove this row because it has child rows, and constraints on relation {0} are enforced.. /// @@ -3272,7 +3326,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_RemoveParentRow", resourceCulture); } } - + /// /// Looks up a localized string similar to These columns don't currently have unique values.. /// @@ -3281,7 +3335,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_UniqueViolation", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot enforce constraints on constraint {0}.. /// @@ -3290,7 +3344,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_Violation", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' is constrained to be unique. Value '{1}' is already present.. /// @@ -3299,7 +3353,7 @@ internal class Strings { return ResourceManager.GetString("DataConstraint_ViolationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to This type of node cannot be cloned: {0}.. /// @@ -3308,7 +3362,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_CloneNode", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the ColumnMapping property once the associated DataSet is mapped to a loaded XML document.. /// @@ -3317,7 +3371,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_ColumnMappingChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the column name once the associated DataSet is mapped to a loaded XML document.. /// @@ -3326,7 +3380,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_ColumnNameChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the column namespace once the associated DataSet is mapped to a loaded XML document.. /// @@ -3335,7 +3389,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_ColumnNamespaceChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the DataSet name once the DataSet is mapped to a loaded XML document.. /// @@ -3344,7 +3398,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_DataSetNameChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add, remove, or change Nested relations from the DataSet once the DataSet is mapped to a loaded XML document.. /// @@ -3353,7 +3407,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_DataSetNestedRelationsChange", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataSet parameter is invalid. It cannot be null.. /// @@ -3362,7 +3416,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_DataSetNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add or remove tables from the DataSet once the DataSet is mapped to a loaded XML document.. /// @@ -3371,7 +3425,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_DataSetTablesChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Please set DataSet.EnforceConstraints == false before trying to edit XmlDataDocument using XML operations.. /// @@ -3380,7 +3434,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_EnforceConstraintsShouldBeOff", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid foliation.. /// @@ -3389,7 +3443,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_Foliation", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet can be associated with at most one XmlDataDocument. Cannot associate the DataSet with the current XmlDataDocument because the DataSet is already associated with another XmlDataDocument.. /// @@ -3398,7 +3452,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_MultipleDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot load XmlDataDocument if it already contains data. Please use a new XmlDataDocument.. /// @@ -3407,7 +3461,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_MultipleLoad", resourceCulture); } } - + /// /// Looks up a localized string similar to Clear function on DateSet and DataTable is not supported on XmlDataDocument.. /// @@ -3416,7 +3470,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_NotSupport_Clear", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create entity references on DataDocument.. /// @@ -3425,7 +3479,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_NotSupport_EntRef", resourceCulture); } } - + /// /// Looks up a localized string similar to GetElementById() is not supported on DataDocument.. /// @@ -3434,7 +3488,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_NotSupport_GetElementById", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add or remove columns from the table once the DataSet is mapped to a loaded XML document.. /// @@ -3443,7 +3497,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_TableColumnsChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the table name once the associated DataSet is mapped to a loaded XML document.. /// @@ -3452,7 +3506,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_TableNameChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the table namespace once the associated DataSet is mapped to a loaded XML document.. /// @@ -3461,7 +3515,7 @@ internal class Strings { return ResourceManager.GetString("DataDom_TableNamespaceChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Find finds a row based on a Sort order, and no Sort order is specified.. /// @@ -3470,7 +3524,7 @@ internal class Strings { return ResourceManager.GetString("DataIndex_FindWithoutSortOrder", resourceCulture); } } - + /// /// Looks up a localized string similar to Expecting {0} value(s) for the key being indexed, but received {1} value(s).. /// @@ -3479,7 +3533,7 @@ internal class Strings { return ResourceManager.GetString("DataIndex_KeyLength", resourceCulture); } } - + /// /// Looks up a localized string similar to The RowStates parameter must be set to a valid combination of values from the DataViewRowState enumeration.. /// @@ -3488,7 +3542,7 @@ internal class Strings { return ResourceManager.GetString("DataIndex_RecordStateRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a Key when the same column is listed more than once: '{0}'. /// @@ -3497,7 +3551,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_DuplicateColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have 0 columns.. /// @@ -3506,7 +3560,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_NoColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove unique constraint since it's the primary key of a table.. /// @@ -3515,7 +3569,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_RemovePrimaryKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove unique constraint since it's the primary key of table {0}.. /// @@ -3524,7 +3578,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_RemovePrimaryKey1", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a Key from Columns that belong to different tables.. /// @@ -3533,7 +3587,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_TableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have more than {0} columns.. /// @@ -3542,7 +3596,7 @@ internal class Strings { return ResourceManager.GetString("DataKey_TooManyColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to <target>.{0} and <source>.{0} have conflicting properties: DataType property mismatch.. /// @@ -3551,7 +3605,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_DataTypeMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Target table {0} missing definition for column {1}.. /// @@ -3560,7 +3614,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_MissingColumnDefinition", resourceCulture); } } - + /// /// Looks up a localized string similar to Target DataSet missing {0} {1}.. /// @@ -3569,7 +3623,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_MissingConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Target DataSet missing definition for {0}.. /// @@ -3578,7 +3632,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_MissingDefinition", resourceCulture); } } - + /// /// Looks up a localized string similar to PrimaryKey column {0} does not exist in source Table.. /// @@ -3587,7 +3641,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_MissingPrimaryKeyColumnInSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Mismatch columns in the PrimaryKey : <target>.{0} versus <source>.{1}.. /// @@ -3596,7 +3650,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_PrimaryKeyColumnsMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to <target>.PrimaryKey and <source>.PrimaryKey have different Length.. /// @@ -3605,7 +3659,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_PrimaryKeyMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Relation {0} cannot be merged, because keys have mismatch columns.. /// @@ -3614,7 +3668,7 @@ internal class Strings { return ResourceManager.GetString("DataMerge_ReltionKeyColumnsMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to A relation already exists for these child columns.. /// @@ -3623,7 +3677,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_AlreadyExists", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation already belongs to another DataSet.. /// @@ -3632,7 +3686,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_AlreadyInOtherDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation already belongs to this DataSet.. /// @@ -3641,7 +3695,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_AlreadyInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a DataRelation or Constraint that has different Locale or CaseSensitive settings between its parent and child tables.. /// @@ -3650,7 +3704,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_CaseLocaleMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a relation to this table's ParentRelation collection where this table isn't the child table.. /// @@ -3659,7 +3713,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ChildTableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Parent Columns and Child Columns don't have type-matching columns.. /// @@ -3668,7 +3722,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ColumnsTypeMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have a relationship between tables in different DataSets.. /// @@ -3677,7 +3731,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_DataSetMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation doesn't belong to this relation collection.. /// @@ -3686,7 +3740,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_DoesNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to A Relation named '{0}' already belongs to this DataSet.. /// @@ -3695,7 +3749,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_DuplicateName", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation should connect two tables in this DataSet to be added to this DataSet.. /// @@ -3704,7 +3758,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ForeignDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to The row doesn't belong to the same DataSet as this relation.. /// @@ -3713,7 +3767,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ForeignRow", resourceCulture); } } - + /// /// Looks up a localized string similar to GetChildRows requires a row whose Table is {0}, but the specified row's Table is {1}.. /// @@ -3722,7 +3776,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ForeignTable", resourceCulture); } } - + /// /// Looks up a localized string similar to GetParentRow requires a row whose Table is {0}, but the specified row's Table is {1}.. /// @@ -3731,7 +3785,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_GetParentRowTableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Nested table '{0}' with empty namespace cannot have multiple parent tables in different namespaces.. /// @@ -3740,7 +3794,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_InValidNamespaceInNestedRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to Nested table '{0}' which inherits its namespace cannot have multiple parent tables in different namespaces.. /// @@ -3749,7 +3803,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_InValidNestedRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to ParentKey and ChildKey are identical.. /// @@ -3758,7 +3812,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_KeyColumnsIdentical", resourceCulture); } } - + /// /// Looks up a localized string similar to ParentColumns and ChildColumns should be the same length.. /// @@ -3767,7 +3821,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_KeyLengthMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to ParentColumns and ChildColumns must not be zero length.. /// @@ -3776,7 +3830,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_KeyZeroLength", resourceCulture); } } - + /// /// Looks up a localized string similar to The table ({0}) cannot be the child table to itself in nested relations.. /// @@ -3785,7 +3839,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_LoopInNestedRelations", resourceCulture); } } - + /// /// Looks up a localized string similar to RelationName is required when it is part of a DataSet.. /// @@ -3794,7 +3848,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_NoName", resourceCulture); } } - + /// /// Looks up a localized string similar to Relation {0} does not belong to this DataSet.. /// @@ -3803,7 +3857,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_NotInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find relation {0}.. /// @@ -3812,7 +3866,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a DataRelation if Parent or Child Columns are not in a DataSet.. /// @@ -3821,7 +3875,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ParentOrChildColumnsDoNotHaveDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a relation to this table's ChildRelation collection where this table isn't the parent table.. /// @@ -3830,7 +3884,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_ParentTableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the 'Nested' property to false for this relation.. /// @@ -3839,7 +3893,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_RelationNestedReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to SetParentRow requires a child row whose Table is {0}, but the specified row's Table is {1}.. /// @@ -3848,7 +3902,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_SetParentRowTableMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to The same table '{0}' cannot be the child table in two nested relations.. /// @@ -3857,7 +3911,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_TableCantBeNestedInTwoTables", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a collection on a null table.. /// @@ -3866,7 +3920,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_TableNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create a relation between tables in different DataSets.. /// @@ -3875,7 +3929,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_TablesInDifferentSets", resourceCulture); } } - + /// /// Looks up a localized string similar to The table this collection displays relations for has been removed from its DataSet.. /// @@ -3884,7 +3938,7 @@ internal class Strings { return ResourceManager.GetString("DataRelation_TableWasRemoved", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the child columns of this relation.. /// @@ -3893,7 +3947,7 @@ internal class Strings { return ResourceManager.GetString("DataRelationChildColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether relations are nested.. /// @@ -3902,7 +3956,7 @@ internal class Strings { return ResourceManager.GetString("DataRelationNested", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the parent columns of this relation.. /// @@ -3911,7 +3965,7 @@ internal class Strings { return ResourceManager.GetString("DataRelationParentColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The name used to look up this relation in the Relations collection of a DataSet.. /// @@ -3920,7 +3974,7 @@ internal class Strings { return ResourceManager.GetString("DataRelationRelationNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot delete this row since it's already deleted.. /// @@ -3929,7 +3983,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_AlreadyDeleted", resourceCulture); } } - + /// /// Looks up a localized string similar to This row already belongs to another table.. /// @@ -3938,7 +3992,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_AlreadyInOtherCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to This row already belongs to this table.. /// @@ -3947,7 +4001,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_AlreadyInTheCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove a row that's already been removed.. /// @@ -3956,7 +4010,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_AlreadyRemoved", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call BeginEdit() inside the RowChanging event.. /// @@ -3965,7 +4019,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_BeginEditInRowChanging", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call CancelEdit() inside an OnRowChanging event. Throw an exception to cancel this update.. /// @@ -3974,7 +4028,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_CancelEditInRowChanging", resourceCulture); } } - + /// /// Looks up a localized string similar to Deleted row information cannot be accessed through the row.. /// @@ -3983,7 +4037,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_DeletedRowInaccessible", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call Delete inside an OnRowDeleting event. Throw an exception to cancel this delete.. /// @@ -3992,7 +4046,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_DeleteInRowDeleting", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change a proposed value in the RowChanging event.. /// @@ -4001,7 +4055,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_EditInRowChanging", resourceCulture); } } - + /// /// Looks up a localized string similar to This row is empty.. /// @@ -4010,7 +4064,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_Empty", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call EndEdit() inside an OnRowChanging event.. /// @@ -4019,7 +4073,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_EndEditInRowChanging", resourceCulture); } } - + /// /// Looks up a localized string similar to Unrecognized row state bit pattern.. /// @@ -4028,7 +4082,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_InvalidRowBitPattern", resourceCulture); } } - + /// /// Looks up a localized string similar to Version must be Original, Current, or Proposed.. /// @@ -4037,7 +4091,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_InvalidVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to A child row has multiple parents.. /// @@ -4046,7 +4100,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_MultipleParents", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no Current data to access.. /// @@ -4055,7 +4109,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NoCurrentData", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no Original data to access.. /// @@ -4064,7 +4118,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NoOriginalData", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no Proposed data to access.. /// @@ -4073,7 +4127,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NoProposedData", resourceCulture); } } - + /// /// Looks up a localized string similar to The row doesn't belong to the same DataSet as this relation.. /// @@ -4082,7 +4136,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NotInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot perform this operation on a row not in the table.. /// @@ -4091,7 +4145,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_NotInTheTable", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no row at position {0}.. /// @@ -4100,7 +4154,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to This relation and child row don't belong to same DataSet.. /// @@ -4109,7 +4163,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_ParentRowNotInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to This row has been removed from a table and does not have any data. BeginEdit() will allow creation of new data in this row.. /// @@ -4118,7 +4172,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RemovedFromTheTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Values are missing in the rowOrder sequence for table '{0}'.. /// @@ -4127,7 +4181,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RowInsertMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to The row insert position {0} is invalid.. /// @@ -4136,7 +4190,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RowInsertOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to The rowOrder value={0} has been found twice for table named '{1}'.. /// @@ -4145,7 +4199,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RowInsertTwice", resourceCulture); } } - + /// /// Looks up a localized string similar to The given DataRow is not in the current DataRowCollection.. /// @@ -4154,7 +4208,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_RowOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Input array is longer than the number of columns in this table.. /// @@ -4163,7 +4217,7 @@ internal class Strings { return ResourceManager.GetString("DataRow_ValuesArrayLength", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} is neither a DataColumn nor a DataRelation for table {1}.. /// @@ -4172,7 +4226,7 @@ internal class Strings { return ResourceManager.GetString("DataROWView_PropertyNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change CaseSensitive or Locale property. This change would lead to at least one DataRelation or Constraint to have different Locale or CaseSensitive settings between its related tables.. /// @@ -4181,7 +4235,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_CannotChangeCaseLocale", resourceCulture); } } - + /// /// Looks up a localized string similar to SchemaSerializationMode property can be set only if it is overridden by derived DataSet.. /// @@ -4190,7 +4244,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_CannotChangeSchemaSerializationMode", resourceCulture); } } - + /// /// Looks up a localized string similar to Constraint Exception.. /// @@ -4199,7 +4253,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultConstraintException", resourceCulture); } } - + /// /// Looks up a localized string similar to Data Exception.. /// @@ -4208,7 +4262,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultDataException", resourceCulture); } } - + /// /// Looks up a localized string similar to Deleted rows inaccessible.. /// @@ -4217,7 +4271,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultDeletedRowInaccessibleException", resourceCulture); } } - + /// /// Looks up a localized string similar to Duplicate name not allowed.. /// @@ -4226,7 +4280,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultDuplicateNameException", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation not supported in the RowChanging event.. /// @@ -4235,7 +4289,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultInRowChangingEventException", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid constraint.. /// @@ -4244,7 +4298,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultInvalidConstraintException", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing primary key.. /// @@ -4253,7 +4307,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultMissingPrimaryKeyException", resourceCulture); } } - + /// /// Looks up a localized string similar to Null not allowed.. /// @@ -4262,7 +4316,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultNoNullAllowedException", resourceCulture); } } - + /// /// Looks up a localized string similar to Column is marked read only.. /// @@ -4271,7 +4325,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultReadOnlyException", resourceCulture); } } - + /// /// Looks up a localized string similar to Row not found in table.. /// @@ -4280,7 +4334,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultRowNotInTableException", resourceCulture); } } - + /// /// Looks up a localized string similar to Version not found.. /// @@ -4289,7 +4343,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_DefaultVersionNotFoundException", resourceCulture); } } - + /// /// Looks up a localized string similar to The name '{0}' is invalid. A DataSet cannot have the same name of the DataTable.. /// @@ -4298,7 +4352,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_SetDataSetNameConflicting", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change the name of the DataSet to an empty string.. /// @@ -4307,7 +4361,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_SetNameToEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to The schema namespace is invalid. Please use this one instead: {0}.. /// @@ -4316,7 +4370,7 @@ internal class Strings { return ResourceManager.GetString("DataSet_UnsupportedSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether comparing strings within the DataSet is case sensitive.. /// @@ -4325,7 +4379,7 @@ internal class Strings { return ResourceManager.GetString("DataSetCaseSensitiveDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of this DataSet.. /// @@ -4334,7 +4388,7 @@ internal class Strings { return ResourceManager.GetString("DataSetDataSetNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates a custom "view" of the data contained by the DataSet. This view allows filtering, searching, and navigating through the custom data view.. /// @@ -4343,7 +4397,7 @@ internal class Strings { return ResourceManager.GetString("DataSetDefaultViewDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Represents an in-memory cache of data.. /// @@ -4352,7 +4406,7 @@ internal class Strings { return ResourceManager.GetString("DataSetDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether constraint rules are to be followed.. /// @@ -4361,7 +4415,7 @@ internal class Strings { return ResourceManager.GetString("DataSetEnforceConstraintsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates that the DataSet has errors.. /// @@ -4370,7 +4424,7 @@ internal class Strings { return ResourceManager.GetString("DataSetHasErrorsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after Initialization is finished.. /// @@ -4379,7 +4433,7 @@ internal class Strings { return ResourceManager.GetString("DataSetInitializedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates a locale under which to compare strings within the DataSet.. /// @@ -4388,7 +4442,7 @@ internal class Strings { return ResourceManager.GetString("DataSetLocaleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when it is not possible to merge schemas for two tables with the same name.. /// @@ -4397,7 +4451,7 @@ internal class Strings { return ResourceManager.GetString("DataSetMergeFailedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the XML uri namespace for the root element pointed at by this DataSet.. /// @@ -4406,7 +4460,7 @@ internal class Strings { return ResourceManager.GetString("DataSetNamespaceDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the prefix of the namespace used for this DataSet.. /// @@ -4415,7 +4469,7 @@ internal class Strings { return ResourceManager.GetString("DataSetPrefixDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds the relations for this DataSet.. /// @@ -4424,7 +4478,7 @@ internal class Strings { return ResourceManager.GetString("DataSetRelationsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds the tables for this DataSet.. /// @@ -4433,7 +4487,7 @@ internal class Strings { return ResourceManager.GetString("DataSetTablesDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid usage of aggregate function {0}() and Type: {1}.. /// @@ -4442,7 +4496,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_AggregateException", resourceCulture); } } - + /// /// Looks up a localized string similar to Type '{0}' does not implement IComparable interface. Comparison cannot be done.. /// @@ -4451,7 +4505,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_IComparableNotDefined", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid storage type: {0}.. /// @@ -4460,7 +4514,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_InvalidStorageType", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataSet Xml persistency does not support the value '{0}' as Char value, please use Byte storage instead.. /// @@ -4469,7 +4523,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_ProblematicChars", resourceCulture); } } - + /// /// Looks up a localized string similar to Type of value has a mismatch with column type. /// @@ -4478,7 +4532,7 @@ internal class Strings { return ResourceManager.GetString("DataStorage_SetInvalidDataType", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable already belongs to another DataSet.. /// @@ -4487,7 +4541,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_AlreadyInOtherDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable already belongs to this DataSet.. /// @@ -4496,7 +4550,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_AlreadyInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add a nested relation or an element column to a table containing a SimpleContent column.. /// @@ -4505,7 +4559,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CannotAddToSimpleContent", resourceCulture); } } - + /// /// Looks up a localized string similar to This DataTable can only be remoted as part of DataSet. One or more Expression Columns has reference to other DataTable(s).. /// @@ -4514,7 +4568,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CanNotRemoteDataTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot serialize the DataTable. A DataTable being used in one or more DataColumn expressions is not a descendant of current DataTable.. /// @@ -4523,7 +4577,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CanNotSerializeDataTableHierarchy", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot serialize the DataTable. DataTable name is not set.. /// @@ -4532,7 +4586,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CanNotSerializeDataTableWithEmptyName", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot have different remoting format property value for DataSet and DataTable.. /// @@ -4541,7 +4595,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_CanNotSetRemotingFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to The name '{0}' is invalid. A DataTable cannot have the same name of the DataSet.. /// @@ -4550,7 +4604,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_DatasetConflictingName", resourceCulture); } } - + /// /// Looks up a localized string similar to A DataTable named '{0}' already belongs to this DataSet.. /// @@ -4559,7 +4613,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_DuplicateName", resourceCulture); } } - + /// /// Looks up a localized string similar to A DataTable named '{0}' with the same Namespace '{1}' already belongs to this DataSet.. /// @@ -4568,7 +4622,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_DuplicateName2", resourceCulture); } } - + /// /// Looks up a localized string similar to PrimaryKey columns do not belong to this table.. /// @@ -4577,7 +4631,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_ForeignPrimaryKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove table {0}, because it referenced in ForeignKeyConstraint {1}. Remove the constraint first.. /// @@ -4586,7 +4640,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_InConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove a table that has existing relations. Remove relations first.. /// @@ -4595,7 +4649,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_InRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} isn't a valid Sort string entry.. /// @@ -4604,7 +4658,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_InvalidSortString", resourceCulture); } } - + /// /// Looks up a localized string similar to Table doesn't have a primary key.. /// @@ -4613,7 +4667,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_MissingPrimaryKey", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable already has a simple content column.. /// @@ -4622,7 +4676,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_MultipleSimpleContentColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to TableName is required when it is part of a DataSet.. /// @@ -4631,7 +4685,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_NoName", resourceCulture); } } - + /// /// Looks up a localized string similar to Table {0} does not belong to this DataSet.. /// @@ -4640,7 +4694,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_NotInTheDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find table {0}.. /// @@ -4649,7 +4703,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_OutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to The table ({0}) cannot be the child table to itself in a nested relation: the DataSet name conflicts with the table name.. /// @@ -4658,7 +4712,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_SelfnestedDatasetConflictingName", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable '{0}' does not match to any DataTable in source.. /// @@ -4667,7 +4721,7 @@ internal class Strings { return ResourceManager.GetString("DataTable_TableNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether comparing strings within the table is case sensitive.. /// @@ -4676,7 +4730,7 @@ internal class Strings { return ResourceManager.GetString("DataTableCaseSensitiveDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns the child relations for this table.. /// @@ -4685,7 +4739,7 @@ internal class Strings { return ResourceManager.GetString("DataTableChildRelationsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when a value has been changed for this column.. /// @@ -4694,7 +4748,7 @@ internal class Strings { return ResourceManager.GetString("DataTableColumnChangedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when a value has been submitted for this column. The user can modify the proposed value and should throw an exception to cancel the edit.. /// @@ -4703,7 +4757,7 @@ internal class Strings { return ResourceManager.GetString("DataTableColumnChangingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds the columns for this table.. /// @@ -4712,7 +4766,7 @@ internal class Strings { return ResourceManager.GetString("DataTableColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds the constraints for this table.. /// @@ -4721,7 +4775,7 @@ internal class Strings { return ResourceManager.GetString("DataTableConstraintsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the DataSet to which this table belongs.. /// @@ -4730,7 +4784,7 @@ internal class Strings { return ResourceManager.GetString("DataTableDataSetDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to This is the default DataView for the table.. /// @@ -4739,7 +4793,7 @@ internal class Strings { return ResourceManager.GetString("DataTableDefaultViewDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression used to compute the data-bound value of this row.. /// @@ -4748,7 +4802,7 @@ internal class Strings { return ResourceManager.GetString("DataTableDisplayExpressionDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns whether the table has errors.. /// @@ -4757,7 +4811,7 @@ internal class Strings { return ResourceManager.GetString("DataTableHasErrorsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates a locale under which to compare strings within the table.. /// @@ -4766,7 +4820,7 @@ internal class Strings { return ResourceManager.GetString("DataTableLocaleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Individual columns mappings when this table mapping is matched.. /// @@ -4775,7 +4829,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMapping_ColumnMappings", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable.TableName. /// @@ -4784,7 +4838,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMapping_DataSetTable", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataTableMapping source table name. This name is case sensitive.. /// @@ -4793,7 +4847,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMapping_SourceTable", resourceCulture); } } - + /// /// Looks up a localized string similar to The number of items in the collection. /// @@ -4802,7 +4856,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMappings_Count", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified DataTableMapping object. /// @@ -4811,7 +4865,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMappings_Item", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates an initial starting size for this table.. /// @@ -4820,7 +4874,7 @@ internal class Strings { return ResourceManager.GetString("DataTableMinimumCapacityDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the XML uri namespace for the elements contained in this table.. /// @@ -4829,7 +4883,7 @@ internal class Strings { return ResourceManager.GetString("DataTableNamespaceDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns the parent relations for this table.. /// @@ -4838,7 +4892,7 @@ internal class Strings { return ResourceManager.GetString("DataTableParentRelationsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the Prefix of the namespace used for this table in XML representation.. /// @@ -4847,7 +4901,7 @@ internal class Strings { return ResourceManager.GetString("DataTablePrefixDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the column(s) that represent the primary key for this table.. /// @@ -4856,7 +4910,7 @@ internal class Strings { return ResourceManager.GetString("DataTablePrimaryKeyDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create DataTableReader. Arguments contain null value.. /// @@ -4865,7 +4919,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_ArgumentContainsNullValue", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTableReader Cannot be created. There is no DataTable in DataSet.. /// @@ -4874,7 +4928,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_CannotCreateDataReaderOnEmptyDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Current DataTable '{0}' is empty. There is no DataRow in DataTable.. /// @@ -4883,7 +4937,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_DataTableCleared", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create DataTableReader. Argument is Empty.. /// @@ -4892,7 +4946,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_DataTableReaderArgumentIsEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTableReader is invalid for current DataTable '{0}'.. /// @@ -4901,7 +4955,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_InvalidDataTableReader", resourceCulture); } } - + /// /// Looks up a localized string similar to Current DataRow is either in Deleted or Detached state.. /// @@ -4910,7 +4964,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_InvalidRowInDataTableReader", resourceCulture); } } - + /// /// Looks up a localized string similar to Schema of current DataTable '{0}' in DataTableReader has changed, DataTableReader is invalid.. /// @@ -4919,7 +4973,7 @@ internal class Strings { return ResourceManager.GetString("DataTableReader_SchemaInvalidDataTableReader", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after a row in the table has been successfully edited.. /// @@ -4928,7 +4982,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowChangedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when the row is being changed so that the event handler can modify or cancel the change. The user can modify values in the row and should throw an exception to cancel the edit.. /// @@ -4937,7 +4991,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowChangingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after a row in the table has been successfully deleted.. /// @@ -4946,7 +5000,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowDeletedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs when a row in the table marked for deletion. Throw an exception to cancel the deletion.. /// @@ -4955,7 +5009,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowDeletingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after all rows in the table has been successfully cleared.. /// @@ -4964,7 +5018,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowsClearedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs prior to clearing all rows from the table.. /// @@ -4973,7 +5027,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowsClearingDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the collection that holds the rows of data for this table.. /// @@ -4982,7 +5036,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs after a new DataRow has been instantiated.. /// @@ -4991,7 +5045,7 @@ internal class Strings { return ResourceManager.GetString("DataTableRowsNewRowDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the name used to look up this table in the Tables collection of a DataSet.. /// @@ -5000,7 +5054,7 @@ internal class Strings { return ResourceManager.GetString("DataTableTableNameDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot add external objects to this list.. /// @@ -5009,7 +5063,7 @@ internal class Strings { return ResourceManager.GetString("DataView_AddExternalObject", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot call AddNew on a DataView where AllowNew is false.. /// @@ -5018,7 +5072,7 @@ internal class Strings { return ResourceManager.GetString("DataView_AddNewNotAllowNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot bind to DataTable with no name.. /// @@ -5027,7 +5081,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotBindTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot clear this list.. /// @@ -5036,7 +5090,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotClear", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot delete on a DataSource where AllowDelete is false.. /// @@ -5045,7 +5099,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotDelete", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot edit on a DataSource where AllowEdit is false.. /// @@ -5054,7 +5108,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotEdit", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change DataSet property once it is set.. /// @@ -5063,7 +5117,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotSetDataSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change Table property once it is set.. /// @@ -5072,7 +5126,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotSetTable", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable must be set prior to using DataView.. /// @@ -5081,7 +5135,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotUse", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet must be set prior to using DataViewManager.. /// @@ -5090,7 +5144,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CanNotUseDataViewManager", resourceCulture); } } - + /// /// Looks up a localized string similar to The relation is not parented to the table to which this DataView points.. /// @@ -5099,7 +5153,7 @@ internal class Strings { return ResourceManager.GetString("DataView_CreateChildView", resourceCulture); } } - + /// /// Looks up a localized string similar to Index {0} is either negative or above rows count.. /// @@ -5108,7 +5162,7 @@ internal class Strings { return ResourceManager.GetString("DataView_GetElementIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot insert external objects to this list.. /// @@ -5117,7 +5171,7 @@ internal class Strings { return ResourceManager.GetString("DataView_InsertExternalObject", resourceCulture); } } - + /// /// Looks up a localized string similar to DataView is not open.. /// @@ -5126,7 +5180,7 @@ internal class Strings { return ResourceManager.GetString("DataView_NotOpen", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove objects not in the list.. /// @@ -5135,7 +5189,7 @@ internal class Strings { return ResourceManager.GetString("DataView_RemoveExternalObject", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change DataSet on a DataViewManager that's already the default view for a DataSet.. /// @@ -5144,7 +5198,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetDataSetFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set {0}.. /// @@ -5153,7 +5207,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set an object into this list.. /// @@ -5162,7 +5216,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetIListObject", resourceCulture); } } - + /// /// Looks up a localized string similar to RowStateFilter cannot show ModifiedOriginals and ModifiedCurrents at the same time.. /// @@ -5171,7 +5225,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetRowStateFilter", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot change Table property on a DefaultView or a DataView coming from a DataViewManager.. /// @@ -5180,7 +5234,7 @@ internal class Strings { return ResourceManager.GetString("DataView_SetTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this DataView and the user interface associated with it allows deletes.. /// @@ -5189,7 +5243,7 @@ internal class Strings { return ResourceManager.GetString("DataViewAllowDeleteDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this DataView and the user interface associated with it allows edits.. /// @@ -5198,7 +5252,7 @@ internal class Strings { return ResourceManager.GetString("DataViewAllowEditDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether this DataView and the user interface associated with it allows new rows to be added.. /// @@ -5207,7 +5261,7 @@ internal class Strings { return ResourceManager.GetString("DataViewAllowNewDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether to use the default sort if the Sort property is not set.. /// @@ -5216,7 +5270,7 @@ internal class Strings { return ResourceManager.GetString("DataViewApplyDefaultSortDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Returns the number of items currently in this view.. /// @@ -5225,7 +5279,7 @@ internal class Strings { return ResourceManager.GetString("DataViewCountDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to This returns a pointer to back to the DataViewManager that owns this DataSet (if any).. /// @@ -5234,7 +5288,7 @@ internal class Strings { return ResourceManager.GetString("DataViewDataViewManagerDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether the view is open.. /// @@ -5243,7 +5297,7 @@ internal class Strings { return ResourceManager.GetString("DataViewIsOpenDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates that the data returned by this DataView has somehow changed.. /// @@ -5252,7 +5306,7 @@ internal class Strings { return ResourceManager.GetString("DataViewListChangedDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the source of data for this DataViewManager.. /// @@ -5261,7 +5315,7 @@ internal class Strings { return ResourceManager.GetString("DataViewManagerDataSetDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the sorting/filtering/state settings for any table in the corresponding DataSet.. /// @@ -5270,7 +5324,7 @@ internal class Strings { return ResourceManager.GetString("DataViewManagerTableSettingsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates an expression used to filter the data returned by this DataView.. /// @@ -5279,7 +5333,7 @@ internal class Strings { return ResourceManager.GetString("DataViewRowFilterDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the versions of data returned by this DataView.. /// @@ -5288,7 +5342,7 @@ internal class Strings { return ResourceManager.GetString("DataViewRowStateFilterDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the names of the column and the order in which data is returned by this DataView.. /// @@ -5297,7 +5351,7 @@ internal class Strings { return ResourceManager.GetString("DataViewSortDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the table this DataView uses to get data.. /// @@ -5306,7 +5360,7 @@ internal class Strings { return ResourceManager.GetString("DataViewTableDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Command text to execute.. /// @@ -5315,7 +5369,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_CommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to Time to wait for command to execute.. /// @@ -5324,7 +5378,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_CommandTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to How to interpret the CommandText.. /// @@ -5333,7 +5387,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_CommandType", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection used by the command.. /// @@ -5342,7 +5396,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_Connection", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameters collection.. /// @@ -5351,7 +5405,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_Parameters", resourceCulture); } } - + /// /// Looks up a localized string similar to When records are affected by a given statement by the execution of the command.. /// @@ -5360,7 +5414,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_StatementCompleted", resourceCulture); } } - + /// /// Looks up a localized string similar to The transaction used by the command.. /// @@ -5369,7 +5423,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_Transaction", resourceCulture); } } - + /// /// Looks up a localized string similar to When used by a DataAdapter.Update, how command results are applied to the current DataRow.. /// @@ -5378,7 +5432,7 @@ internal class Strings { return ResourceManager.GetString("DbCommand_UpdatedRowSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the position of the catalog name in a qualified table name in a text command.. /// @@ -5387,7 +5441,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_CatalogLocation", resourceCulture); } } - + /// /// Looks up a localized string similar to The character that separates the catalog name from the rest of the identifier in a text command.. /// @@ -5396,7 +5450,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_CatalogSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to How the where clause is auto-generated for the Update and Delete commands when not specified by the user.. /// @@ -5405,7 +5459,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_ConflictOption", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter for which to automatically generate Commands.. /// @@ -5414,7 +5468,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_DataAdapter", resourceCulture); } } - + /// /// Looks up a localized string similar to The prefix string wrapped around sql objects.. /// @@ -5423,7 +5477,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_QuotePrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to The suffix string wrapped around sql objects.. /// @@ -5432,7 +5486,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_QuoteSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Use schema from DataTable or the SelectCommand.. /// @@ -5441,7 +5495,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_SchemaLocation", resourceCulture); } } - + /// /// Looks up a localized string similar to The character that separates the schema name from the rest of the identifier in a text command.. /// @@ -5450,7 +5504,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_SchemaSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to How the set clause is auto-generated for the Update command when not specified by the user.. /// @@ -5459,7 +5513,7 @@ internal class Strings { return ResourceManager.GetString("DbCommandBuilder_SetAllValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered when messages arrive from the DataSource.. /// @@ -5468,7 +5522,7 @@ internal class Strings { return ResourceManager.GetString("DbConnection_InfoMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The ConnectionState indicating whether the connection is open or closed.. /// @@ -5477,7 +5531,7 @@ internal class Strings { return ResourceManager.GetString("DbConnection_State", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered when the connection changes state.. /// @@ -5486,7 +5540,7 @@ internal class Strings { return ResourceManager.GetString("DbConnection_StateChange", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, indicates that managed connection pooling should be used.. /// @@ -5495,7 +5549,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_AdoNetPooler", resourceCulture); } } - + /// /// Looks up a localized string similar to Declares the application workload type when connecting to a server.. /// @@ -5504,7 +5558,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ApplicationIntent", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the application.. /// @@ -5513,7 +5567,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ApplicationName", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, enables usage of the Asynchronous functionality in the .NET Framework Data Provider.. /// @@ -5522,7 +5576,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_AsynchronousProcessing", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the primary file, including the full path name, of an attachable database.. /// @@ -5531,7 +5585,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_AttachDBFilename", resourceCulture); } } - + /// /// Looks up a localized string similar to Specifies the method of authenticating with SQL Server.. /// @@ -5540,7 +5594,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Authentication", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified client certificate for authenticating with SQL Server. . /// @@ -5549,7 +5603,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Certificate", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, indicates the connection state is reset when removed from the pool.. /// @@ -5558,7 +5612,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectionReset", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection string used to connect to the Data Source.. /// @@ -5567,7 +5621,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Number of attempts to restore connection.. /// @@ -5576,7 +5630,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectRetryCount", resourceCulture); } } - + /// /// Looks up a localized string similar to Delay between attempts to restore connection.. /// @@ -5585,7 +5639,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectRetryInterval", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error.. /// @@ -5594,7 +5648,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ConnectTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, indicates the connection should be from the Sql Server context. Available only when running in the Sql Server process.. /// @@ -5603,7 +5657,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_ContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to The SQL Server Language record name.. /// @@ -5612,7 +5666,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_CurrentLanguage", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the name of the data source to connect to.. /// @@ -5621,7 +5675,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_DataSource", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the ODBC Driver to use when connecting to the Data Source.. /// @@ -5630,7 +5684,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Driver", resourceCulture); } } - + /// /// Looks up a localized string similar to The DSN to use when connecting to the Data Source.. /// @@ -5639,7 +5693,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_DSN", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed.. /// @@ -5648,7 +5702,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Encrypt", resourceCulture); } } - + /// /// Looks up a localized string similar to Sessions in a Component Services (or MTS, if you are using Microsoft Windows NT) environment should automatically be enlisted in a global transaction where required.. /// @@ -5657,7 +5711,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Enlist", resourceCulture); } } - + /// /// Looks up a localized string similar to The name or network address of the instance of SQL Server that acts as a failover partner.. /// @@ -5666,7 +5720,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_FailoverPartner", resourceCulture); } } - + /// /// Looks up a localized string similar to The UDL file to use when connecting to the Data Source.. /// @@ -5675,7 +5729,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_FileName", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the initial catalog or database in the data source.. /// @@ -5684,7 +5738,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_InitialCatalog", resourceCulture); } } - + /// /// Looks up a localized string similar to Whether the connection is to be a secure connection or not.. /// @@ -5693,7 +5747,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_IntegratedSecurity", resourceCulture); } } - + /// /// Looks up a localized string similar to The minimum amount of time (in seconds) for this connection to live in the pool before being destroyed.. /// @@ -5702,7 +5756,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_LoadBalanceTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to The maximum number of connections allowed in the pool.. /// @@ -5711,7 +5765,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_MaxPoolSize", resourceCulture); } } - + /// /// Looks up a localized string similar to The minimum number of connections allowed in the pool.. /// @@ -5720,7 +5774,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_MinPoolSize", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, multiple result sets can be returned and read from one connection.. /// @@ -5729,7 +5783,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_MultipleActiveResultSets", resourceCulture); } } - + /// /// Looks up a localized string similar to If your application is connecting to a high-availability, disaster recovery (AlwaysOn) availability group (AG) on different subnets, MultiSubnetFailover=Yes configures SqlConnection to provide faster detection of and connection to the (currently) active server.. /// @@ -5738,7 +5792,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_MultiSubnetFailover", resourceCulture); } } - + /// /// Looks up a localized string similar to The network library used to establish a connection to an instance of SQL Server.. /// @@ -5747,7 +5801,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_NetworkLibrary", resourceCulture); } } - + /// /// Looks up a localized string similar to Specifies which OLE DB Services to enable or disable with the OleDb Provider.. /// @@ -5756,7 +5810,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_OleDbServices", resourceCulture); } } - + /// /// Looks up a localized string similar to Size in bytes of the network packets used to communicate with an instance of SQL Server.. /// @@ -5765,7 +5819,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_PacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the password to be used when connecting to the data source.. /// @@ -5774,7 +5828,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Password", resourceCulture); } } - + /// /// Looks up a localized string similar to When false, security-sensitive information, such as the password, is not returned as part of the connection if the connection is open or has ever been in an open state.. /// @@ -5783,7 +5837,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_PersistSecurityInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Defines the blocking period behavior for a connection pool.. /// @@ -5792,7 +5846,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_PoolBlockingPeriod", resourceCulture); } } - + /// /// Looks up a localized string similar to When true, the connection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool.. /// @@ -5801,7 +5855,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Pooling", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the OLE DB Provider to use when connecting to the Data Source.. /// @@ -5810,7 +5864,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Provider", resourceCulture); } } - + /// /// Looks up a localized string similar to Used by SQL Server in Replication.. /// @@ -5819,7 +5873,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_Replication", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates binding behavior of connection to a System.Transactions Transaction when enlisted.. /// @@ -5828,7 +5882,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_TransactionBinding", resourceCulture); } } - + /// /// Looks up a localized string similar to If your application connects to different networks, TransparentNetworkIPResolution=Yes configures SqlConnection to provide transparent connection resolution to the currently active server, independently of the network IP topology.. /// @@ -5837,7 +5891,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_TransparentNetworkIPResolution", resourceCulture); } } - + /// /// Looks up a localized string similar to When true (and encrypt=true), SQL Server uses SSL encryption for all data sent between the client and server without validating the server certificate.. /// @@ -5846,7 +5900,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_TrustServerCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates which server type system the provider will expose through the DataReader.. /// @@ -5855,7 +5909,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_TypeSystemVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the user ID to be used when connecting to the data source.. /// @@ -5864,7 +5918,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_UserID", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates whether the connection will be re-directed to connect to an instance of SQL Server running under the user's account.. /// @@ -5873,7 +5927,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_UserInstance", resourceCulture); } } - + /// /// Looks up a localized string similar to The name of the workstation connecting to SQL Server.. /// @@ -5882,7 +5936,7 @@ internal class Strings { return ResourceManager.GetString("DbConnectionString_WorkstationID", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for deleted rows in DataSet.. /// @@ -5891,7 +5945,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_DeleteCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for new rows in DataSet.. /// @@ -5900,7 +5954,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_InsertCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered before every DataRow during Update.. /// @@ -5909,7 +5963,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_RowUpdated", resourceCulture); } } - + /// /// Looks up a localized string similar to Event triggered after every DataRow during Update.. /// @@ -5918,7 +5972,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_RowUpdating", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Fill/FillSchema.. /// @@ -5927,7 +5981,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_SelectCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Number of rows to batch together before executing against the data source.. /// @@ -5936,7 +5990,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_UpdateBatchSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for modified rows in DataSet.. /// @@ -5945,7 +5999,7 @@ internal class Strings { return ResourceManager.GetString("DbDataAdapter_UpdateCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Only necessary to set for decimal and numeric parameters when using with Prepare, FillSchema and CommandBuilder scenarios.. /// @@ -5954,7 +6008,7 @@ internal class Strings { return ResourceManager.GetString("DbDataParameter_Precision", resourceCulture); } } - + /// /// Looks up a localized string similar to Only necessary to set for decimal and numeric parameters when using with Prepare, FillSchema and CommandBuilder scenarios.. /// @@ -5963,7 +6017,7 @@ internal class Strings { return ResourceManager.GetString("DbDataParameter_Scale", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter generic type.. /// @@ -5972,7 +6026,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_DbType", resourceCulture); } } - + /// /// Looks up a localized string similar to Input, output, or bidirectional parameter.. /// @@ -5981,7 +6035,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_Direction", resourceCulture); } } - + /// /// Looks up a localized string similar to a design-time property used for strongly typed code-generation.. /// @@ -5990,7 +6044,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_IsNullable", resourceCulture); } } - + /// /// Looks up a localized string similar to Offset in variable length data types.. /// @@ -5999,7 +6053,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_Offset", resourceCulture); } } - + /// /// Looks up a localized string similar to Name of the parameter.. /// @@ -6008,7 +6062,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_ParameterName", resourceCulture); } } - + /// /// Looks up a localized string similar to Size of variable length data types (string & arrays).. /// @@ -6017,7 +6071,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_Size", resourceCulture); } } - + /// /// Looks up a localized string similar to When used by a DataAdapter.Update, the source column name that is used to find the DataSetColumn name in the ColumnMappings. This is to copy a value between the parameter and a data row.. /// @@ -6026,7 +6080,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_SourceColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to When used by DataAdapter.Update, the parameter value is changed from DBNull.Value into (Int32)1 or (Int32)0 if non-null.. /// @@ -6035,7 +6089,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_SourceColumnNullMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to When used by a DataAdapter.Update (UpdateCommand only), the version of the DataRow value that is used to update the data source.. /// @@ -6044,7 +6098,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_SourceVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Value of the parameter.. /// @@ -6053,7 +6107,7 @@ internal class Strings { return ResourceManager.GetString("DbParameter_Value", resourceCulture); } } - + /// /// Looks up a localized string similar to How are the Insert/Update/DeleteCommands generated when not set by the user.. /// @@ -6062,7 +6116,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_ConflictDetection", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection used if the the Select/Insert/Update/DeleteCommands do not already have a connection.. /// @@ -6071,7 +6125,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_Connection", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for deleted rows in the DataTable.. /// @@ -6080,7 +6134,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_DeleteCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for new rows in the DataTable.. /// @@ -6089,7 +6143,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_InsertCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Should Fill return provider specific values or common CLSCompliant values.. /// @@ -6098,7 +6152,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_ReturnProviderSpecificTypes", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Fill.. /// @@ -6107,7 +6161,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_SelectCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to How to map source table to DataTable.. /// @@ -6116,7 +6170,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_TableMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to Number of rows to batch together before executing against the data source.. /// @@ -6125,7 +6179,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_UpdateBatchSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Used during Update for modified rows in the DataTable.. /// @@ -6134,7 +6188,7 @@ internal class Strings { return ResourceManager.GetString("DbTable_UpdateCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error occurred when retrying the download of the HGS root certificate after the initial request failed. Contact Customer Support Services.. /// @@ -6143,7 +6197,7 @@ internal class Strings { return ResourceManager.GetString("EnclaveRetrySleepInSecondsValueException", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Unable to invalidate the requested enclave session, because it does not exist in the cache. Contact Customer Support Services.. /// @@ -6152,7 +6206,7 @@ internal class Strings { return ResourceManager.GetString("EnclaveSessionInvalidationFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. The token received from SQL Server is expired. Contact Customer Support Services.. /// @@ -6161,7 +6215,7 @@ internal class Strings { return ResourceManager.GetString("ExpiredAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error in aggregate argument: Expecting a single column argument with possible 'Child' qualifier.. /// @@ -6170,7 +6224,7 @@ internal class Strings { return ResourceManager.GetString("Expr_AggregateArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to Unbound reference in the aggregate expression '{0}'.. /// @@ -6179,7 +6233,7 @@ internal class Strings { return ResourceManager.GetString("Expr_AggregateUnbound", resourceCulture); } } - + /// /// Looks up a localized string similar to Operator '{0}' is ambiguous on operands of type '{1}' and '{2}'. Cannot mix signed and unsigned types. Please use explicit Convert() function.. /// @@ -6188,7 +6242,7 @@ internal class Strings { return ResourceManager.GetString("Expr_AmbiguousBinop", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}() argument is out of range.. /// @@ -6197,7 +6251,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ArgumentOutofRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Type mismatch in function argument: {0}(), argument {1}, expected {2}.. /// @@ -6206,7 +6260,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ArgumentType", resourceCulture); } } - + /// /// Looks up a localized string similar to Type mismatch in function argument: {0}(), argument {1}, expected one of the Integer types.. /// @@ -6215,7 +6269,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ArgumentTypeInteger", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find the parent relation '{0}'.. /// @@ -6224,7 +6278,7 @@ internal class Strings { return ResourceManager.GetString("Expr_BindFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot evaluate. Expression '{0}' is not an aggregate.. /// @@ -6233,7 +6287,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ComputeNotAggregate", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot convert from {0} to {1}.. /// @@ -6242,7 +6296,7 @@ internal class Strings { return ResourceManager.GetString("Expr_DatatypeConvertion", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot convert value '{0}' to Type: {1}.. /// @@ -6251,7 +6305,7 @@ internal class Strings { return ResourceManager.GetString("Expr_DatavalueConvertion", resourceCulture); } } - + /// /// Looks up a localized string similar to Divide by zero error encountered.. /// @@ -6260,7 +6314,7 @@ internal class Strings { return ResourceManager.GetString("Expr_DivideByZero", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot evaluate non-constant expression without current row.. /// @@ -6269,7 +6323,7 @@ internal class Strings { return ResourceManager.GetString("Expr_EvalNoContext", resourceCulture); } } - + /// /// Looks up a localized string similar to Expression is too complex.. /// @@ -6278,7 +6332,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ExpressionTooComplex", resourceCulture); } } - + /// /// Looks up a localized string similar to Unbound reference in the expression '{0}'.. /// @@ -6287,7 +6341,7 @@ internal class Strings { return ResourceManager.GetString("Expr_ExpressionUnbound", resourceCulture); } } - + /// /// Looks up a localized string similar to Filter expression '{0}' does not evaluate to a Boolean term.. /// @@ -6296,7 +6350,7 @@ internal class Strings { return ResourceManager.GetString("Expr_FilterConvertion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid number of arguments: function {0}().. /// @@ -6305,7 +6359,7 @@ internal class Strings { return ResourceManager.GetString("Expr_FunctionArgumentCount", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains invalid date constant '{0}'.. /// @@ -6314,7 +6368,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidDate", resourceCulture); } } - + /// /// Looks up a localized string similar to 'hours' argument is out of range. Value must be between -14 and +14.. /// @@ -6323,7 +6377,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidHoursArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to 'minutes' argument is out of range. Value must be between -59 and +59.. /// @@ -6332,7 +6386,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidMinutesArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid column name [{0}].. /// @@ -6341,7 +6395,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidName", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains invalid name: '{0}'.. /// @@ -6350,7 +6404,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidNameBracketing", resourceCulture); } } - + /// /// Looks up a localized string similar to Error in Like operator: the string pattern '{0}' is invalid.. /// @@ -6359,7 +6413,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidPattern", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains an invalid string constant: {0}.. /// @@ -6368,7 +6422,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidString", resourceCulture); } } - + /// /// Looks up a localized string similar to Provided range for time one exceeds total of 14 hours.. /// @@ -6377,7 +6431,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidTimeZoneRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid type name '{0}'.. /// @@ -6386,7 +6440,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvalidType", resourceCulture); } } - + /// /// Looks up a localized string similar to Need a row or a table to Invoke DataFilter.. /// @@ -6395,7 +6449,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InvokeArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: The IN keyword must be followed by a non-empty list of expressions separated by commas, and also must be enclosed in parentheses.. /// @@ -6404,7 +6458,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InWithoutList", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: The items following the IN keyword must be separated by commas and be enclosed in parentheses.. /// @@ -6413,7 +6467,7 @@ internal class Strings { return ResourceManager.GetString("Expr_InWithoutParentheses", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: Invalid usage of 'Is' operator. Correct syntax: <expression> Is [Not] Null.. /// @@ -6422,7 +6476,7 @@ internal class Strings { return ResourceManager.GetString("Expr_IsSyntax", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error in Lookup expression: Expecting keyword 'Parent' followed by a single column argument with possible relation qualifier: Parent[(<relation_name>)].<column_name>.. /// @@ -6431,7 +6485,7 @@ internal class Strings { return ResourceManager.GetString("Expr_LookupArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to Kind property of provided DateTime argument, does not match 'hours' and 'minutes' arguments.. /// @@ -6440,7 +6494,7 @@ internal class Strings { return ResourceManager.GetString("Expr_MismatchKindandTimeSpan", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: Missing operand after '{0}' operator.. /// @@ -6449,7 +6503,7 @@ internal class Strings { return ResourceManager.GetString("Expr_MissingOperand", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error: Missing operand before '{0}' operator.. /// @@ -6458,7 +6512,7 @@ internal class Strings { return ResourceManager.GetString("Expr_MissingOperandBefore", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression is missing the closing parenthesis.. /// @@ -6467,7 +6521,7 @@ internal class Strings { return ResourceManager.GetString("Expr_MissingRightParen", resourceCulture); } } - + /// /// Looks up a localized string similar to Only constant expressions are allowed in the expression list for the IN operator.. /// @@ -6476,7 +6530,7 @@ internal class Strings { return ResourceManager.GetString("Expr_NonConstantArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to The feature not implemented. {0}.. /// @@ -6485,7 +6539,7 @@ internal class Strings { return ResourceManager.GetString("Expr_NYI", resourceCulture); } } - + /// /// Looks up a localized string similar to Value is either too large or too small for Type '{0}'.. /// @@ -6494,7 +6548,7 @@ internal class Strings { return ResourceManager.GetString("Expr_Overflow", resourceCulture); } } - + /// /// Looks up a localized string similar to Syntax error in the expression.. /// @@ -6503,7 +6557,7 @@ internal class Strings { return ResourceManager.GetString("Expr_Syntax", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression has too many closing parentheses.. /// @@ -6512,7 +6566,7 @@ internal class Strings { return ResourceManager.GetString("Expr_TooManyRightParentheses", resourceCulture); } } - + /// /// Looks up a localized string similar to Type mismatch in expression '{0}'.. /// @@ -6521,7 +6575,7 @@ internal class Strings { return ResourceManager.GetString("Expr_TypeMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot perform '{0}' operation on {1} and {2}.. /// @@ -6530,7 +6584,7 @@ internal class Strings { return ResourceManager.GetString("Expr_TypeMismatchInBinop", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find column [{0}].. /// @@ -6539,7 +6593,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnboundName", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains undefined function call {0}().. /// @@ -6548,7 +6602,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UndefinedFunction", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot interpret token '{0}' at position {1}.. /// @@ -6557,7 +6611,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnknownToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Expected {0}, but actual token at the position {2} is {1}.. /// @@ -6566,7 +6620,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnknownToken1", resourceCulture); } } - + /// /// Looks up a localized string similar to The table [{0}] involved in more than one relation. You must explicitly mention a relation name in the expression '{1}'.. /// @@ -6575,7 +6629,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnresolvedRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to The expression contains unsupported operator '{0}'.. /// @@ -6584,7 +6638,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnsupportedOperator", resourceCulture); } } - + /// /// Looks up a localized string similar to A DataColumn of type '{0}' does not support expression.. /// @@ -6593,7 +6647,7 @@ internal class Strings { return ResourceManager.GetString("Expr_UnsupportedType", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection that holds custom user information.. /// @@ -6602,7 +6656,7 @@ internal class Strings { return ResourceManager.GetString("ExtendedPropertiesDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to create enclave session as attestation server is busy.. /// @@ -6611,7 +6665,7 @@ internal class Strings { return ResourceManager.GetString("FailToCreateEnclaveSession", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation information failed. The attestation information has an invalid format. Contact Customer Support Services. Error details: '{0}'.. /// @@ -6620,7 +6674,7 @@ internal class Strings { return ResourceManager.GetString("FailToParseAttestationInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. The token has an invalid format. Contact Customer Support Services. Error details: '{0}'.. /// @@ -6629,7 +6683,7 @@ internal class Strings { return ResourceManager.GetString("FailToParseAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to For accept and reject changes, indicates what kind of cascading should take place across this relation.. /// @@ -6638,7 +6692,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintAcceptRejectRuleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the child columns of this constraint.. /// @@ -6647,7 +6701,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintChildColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to For deletions, indicates what kind of cascading should take place across this relation.. /// @@ -6656,7 +6710,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintDeleteRuleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the parent columns of this constraint.. /// @@ -6665,7 +6719,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintParentColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to For updates, indicates what kind of cascading should take place across this relation.. /// @@ -6674,7 +6728,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyConstraintUpdateRuleDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the child table of this constraint.. /// @@ -6683,7 +6737,7 @@ internal class Strings { return ResourceManager.GetString("ForeignKeyRelatedTableDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to The attestation service returned an expired HGS root certificate for attestation URL '{0}'. Check the HGS root certificate configured for your HGS instance.. /// @@ -6692,7 +6746,7 @@ internal class Strings { return ResourceManager.GetString("GetAttestationSigningCertificateFailedInvalidCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to The obtained HGS root certificate for attestation URL '{0}' has an invalid format. Verify the attestation URL is correct and the HGS server is online and fully initialized. For more information contact Customer Support Services. Error details: '{1}'.. /// @@ -6701,7 +6755,7 @@ internal class Strings { return ResourceManager.GetString("GetAttestationSigningCertificateRequestFailedFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. Cannot retrieve a public key from the attestation public key endpoint, or the retrieved key has an invalid format. Error details: '{0}'.. /// @@ -6710,7 +6764,7 @@ internal class Strings { return ResourceManager.GetString("GetAttestationTokenSigningKeysFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Signature verification of the enclave's Diffie-Hellman key failed. Contact Customer Support Services.. /// @@ -6719,7 +6773,7 @@ internal class Strings { return ResourceManager.GetString("GetSharedSecretFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Global Transactions are not enabled for this Azure SQL Database. Please contact Azure SQL Database support for assistance.. /// @@ -6728,7 +6782,7 @@ internal class Strings { return ResourceManager.GetString("GT_Disabled", resourceCulture); } } - + /// /// Looks up a localized string similar to The currently loaded System.Transactions.dll does not support Global Transactions. Please upgrade to .NET Framework 4.6.1 or later.. /// @@ -6737,7 +6791,7 @@ internal class Strings { return ResourceManager.GetString("GT_UnsupportedSysTxVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to There are no records in the SqlDataRecord enumeration. To send a table-valued parameter with no rows, use a null reference for the value instead.. /// @@ -6746,7 +6800,7 @@ internal class Strings { return ResourceManager.GetString("IEnumerableOfSqlDataRecordHasNoRows", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed due to an error while decoding the enclave public key obtained from SQL Server. Contact Customer Support Services.. /// @@ -6755,7 +6809,7 @@ internal class Strings { return ResourceManager.GetString("InvalidArgumentToBase64UrlDecoder", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed due to an error while computing a hash of the enclave public key obtained from SQL Server. Contact Customer Support Services.. /// @@ -6764,7 +6818,7 @@ internal class Strings { return ResourceManager.GetString("InvalidArgumentToSHA256", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of the attestation token has failed during signature validation. Exception: '{0}'.. /// @@ -6773,7 +6827,7 @@ internal class Strings { return ResourceManager.GetString("InvalidAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of an attestation token failed. Claim '{0}' in the token has an invalid value of '{1}'. Verify the attestation policy. If the policy is correct, contact Customer Support Services.. /// @@ -6782,7 +6836,7 @@ internal class Strings { return ResourceManager.GetString("InvalidClaimInAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid column ordinals in schema table. ColumnOrdinals, if present, must not have duplicates or gaps.. /// @@ -6791,7 +6845,7 @@ internal class Strings { return ResourceManager.GetString("InvalidSchemaTableOrdinals", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates the columns of this constraint.. /// @@ -6800,7 +6854,7 @@ internal class Strings { return ResourceManager.GetString("KeyConstraintColumnsDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Indicates if this constraint is a primary key.. /// @@ -6809,7 +6863,7 @@ internal class Strings { return ResourceManager.GetString("KeyConstraintIsPrimaryKeyDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to ReadOnly Data is Modified.. /// @@ -6818,7 +6872,7 @@ internal class Strings { return ResourceManager.GetString("Load_ReadOnlyDataModified", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime: system.data.localdb configuration file section is of unknown type.. /// @@ -6827,7 +6881,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_BadConfigSectionType", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime: Cannot create named instance.. /// @@ -6836,7 +6890,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_CreateFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime: Cannot load SQLUserInstance.dll.. /// @@ -6845,7 +6899,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_FailedGetDLLHandle", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime: Invalid instance version specification found in the configuration file.. /// @@ -6854,7 +6908,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_InvalidVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid SQLUserInstance.dll found at the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -6863,7 +6917,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_MethodNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot obtain Local Database Runtime error message. /// @@ -6872,7 +6926,7 @@ internal class Strings { return ResourceManager.GetString("LocalDB_UnobtainableMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection name '{0}' matches at least two collections with the same name but with different case, but does not match any of them exactly.. /// @@ -6881,7 +6935,7 @@ internal class Strings { return ResourceManager.GetString("MDF_AmbiguousCollectionName", resourceCulture); } } - + /// /// Looks up a localized string similar to There are multiple collections named '{0}'.. /// @@ -6890,7 +6944,7 @@ internal class Strings { return ResourceManager.GetString("MDF_CollectionNameISNotUnique", resourceCulture); } } - + /// /// Looks up a localized string similar to The collection '{0}' is missing from the metadata XML.. /// @@ -6899,7 +6953,7 @@ internal class Strings { return ResourceManager.GetString("MDF_DataTableDoesNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataSourceInformation table must contain exactly one row.. /// @@ -6908,7 +6962,7 @@ internal class Strings { return ResourceManager.GetString("MDF_IncorrectNumberOfDataSourceInformationRows", resourceCulture); } } - + /// /// Looks up a localized string similar to '{2}' is not a valid value for the '{1}' restriction of the '{0}' schema collection.. /// @@ -6917,7 +6971,7 @@ internal class Strings { return ResourceManager.GetString("MDF_InvalidRestrictionValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The metadata XML is invalid.. /// @@ -6926,7 +6980,7 @@ internal class Strings { return ResourceManager.GetString("MDF_InvalidXml", resourceCulture); } } - + /// /// Looks up a localized string similar to The metadata XML is invalid. The {1} column of the {0} collection must contain a non-empty string.. /// @@ -6935,7 +6989,7 @@ internal class Strings { return ResourceManager.GetString("MDF_InvalidXmlInvalidValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The metadata XML is invalid. The {0} collection must contain a {1} column and it must be a string column.. /// @@ -6944,7 +6998,7 @@ internal class Strings { return ResourceManager.GetString("MDF_InvalidXmlMissingColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to One of the required DataSourceInformation tables columns is missing.. /// @@ -6953,7 +7007,7 @@ internal class Strings { return ResourceManager.GetString("MDF_MissingDataSourceInformationColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to One or more of the required columns of the restrictions collection is missing.. /// @@ -6962,7 +7016,7 @@ internal class Strings { return ResourceManager.GetString("MDF_MissingRestrictionColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to A restriction exists for which there is no matching row in the restrictions collection.. /// @@ -6971,7 +7025,7 @@ internal class Strings { return ResourceManager.GetString("MDF_MissingRestrictionRow", resourceCulture); } } - + /// /// Looks up a localized string similar to The schema table contains no columns.. /// @@ -6980,7 +7034,7 @@ internal class Strings { return ResourceManager.GetString("MDF_NoColumns", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to build the '{0}' collection because execution of the SQL query failed. See the inner exception for details.. /// @@ -6989,7 +7043,7 @@ internal class Strings { return ResourceManager.GetString("MDF_QueryFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to More restrictions were provided than the requested schema ('{0}') supports.. /// @@ -6998,7 +7052,7 @@ internal class Strings { return ResourceManager.GetString("MDF_TooManyRestrictions", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to build schema collection '{0}';. /// @@ -7007,7 +7061,7 @@ internal class Strings { return ResourceManager.GetString("MDF_UnableToBuildCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested collection ({0}) is not defined.. /// @@ -7016,7 +7070,7 @@ internal class Strings { return ResourceManager.GetString("MDF_UndefinedCollection", resourceCulture); } } - + /// /// Looks up a localized string similar to The population mechanism '{0}' is not defined.. /// @@ -7025,7 +7079,7 @@ internal class Strings { return ResourceManager.GetString("MDF_UndefinedPopulationMechanism", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested collection ({0}) is not supported by this version of the provider.. /// @@ -7034,7 +7088,7 @@ internal class Strings { return ResourceManager.GetString("MDF_UnsupportedVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDbType.Structured type is only supported for multiple valued types.. /// @@ -7043,7 +7097,7 @@ internal class Strings { return ResourceManager.GetString("MetaType_SingleValuedStructNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The validation of the attestation token failed. Claim '{0}' is missing in the token. Verify the attestation policy. If the policy is correct, contact Customer Support Services.. /// @@ -7052,7 +7106,7 @@ internal class Strings { return ResourceManager.GetString("MissingClaimInAttestationToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Simple type '{0}' has already be declared with different '{1}'.. /// @@ -7061,7 +7115,7 @@ internal class Strings { return ResourceManager.GetString("NamedSimpleType_InvalidDuplicateNamedSimpleTypeDelaration", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified value is not valid in the '{0}' enumeration.. /// @@ -7070,7 +7124,7 @@ internal class Strings { return ResourceManager.GetString("net_invalid_enum", resourceCulture); } } - + /// /// Looks up a localized string similar to DateType column for field '{0}' in schema table is null. DataType must be non-null.. /// @@ -7079,7 +7133,7 @@ internal class Strings { return ResourceManager.GetString("NullSchemaTableDataTypeNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - unable to allocate an environment handle.. /// @@ -7088,7 +7142,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_CantAllocateEnvironmentHandle", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - unable to enable connection pooling.... /// @@ -7097,7 +7151,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_CantEnableConnectionpooling", resourceCulture); } } - + /// /// Looks up a localized string similar to Can't set property on an open connection.. /// @@ -7106,7 +7160,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_CantSetPropertyOnOpenConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection is closed.. /// @@ -7115,7 +7169,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_ConnectionClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} [{1}] {2}. /// @@ -7124,7 +7178,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_ExceptionMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - no error information available. /// @@ -7133,7 +7187,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_ExceptionNoInfoMsg", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - unable to get descriptor handle.. /// @@ -7142,7 +7196,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_FailedToGetDescriptorHandle", resourceCulture); } } - + /// /// Looks up a localized string similar to "The ODBC managed provider requires that the TABLE_NAME restriction be specified and non-null for the GetSchema indexes collection.. /// @@ -7151,7 +7205,7 @@ internal class Strings { return ResourceManager.GetString("ODBC_GetSchemaRestrictionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - unable to map type.. /// @@ -7160,7 +7214,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_GetTypeMapping_UnknownType", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework Odbc Data Provider requires Microsoft Data Access Components(MDAC) version 2.6 or later. Version {0} was found currently installed.. /// @@ -7169,7 +7223,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_MDACWrongVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid negative argument!. /// @@ -7178,7 +7232,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_NegativeArgument", resourceCulture); } } - + /// /// Looks up a localized string similar to No valid mapping for a SQL_TRANSACTION '{0}' to a System.Data.IsolationLevel enumeration value.. /// @@ -7187,7 +7241,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_NoMappingForSqlTransactionLevel", resourceCulture); } } - + /// /// Looks up a localized string similar to Not in a transaction. /// @@ -7196,7 +7250,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_NotInTransaction", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by the .NET Framework Odbc Data Provider.. /// @@ -7205,7 +7259,7 @@ internal class Strings { return ResourceManager.GetString("ODBC_NotSupportedEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Use IsDBNull when DBNull.Value data is expected.. /// @@ -7214,7 +7268,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_NullData", resourceCulture); } } - + /// /// Looks up a localized string similar to OdbcCommandBuilder.DeriveParameters failed because the OdbcCommand.CommandText property value is an invalid multipart name. /// @@ -7223,7 +7277,7 @@ internal class Strings { return ResourceManager.GetString("ODBC_ODBCCommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to An internal connection does not have an owner.. /// @@ -7232,7 +7286,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_OpenConnectionNoOwner", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid OdbcType enumeration value={0}.. /// @@ -7241,7 +7295,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_UnknownOdbcType", resourceCulture); } } - + /// /// Looks up a localized string similar to Unknown SQL type - {0}.. /// @@ -7250,7 +7304,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_UnknownSQLType", resourceCulture); } } - + /// /// Looks up a localized string similar to Unknown URT type - {0}.. /// @@ -7259,7 +7313,7 @@ internal class Strings { return ResourceManager.GetString("Odbc_UnknownURTType", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter for which to automatically generate OdbcCommands. /// @@ -7268,7 +7322,7 @@ internal class Strings { return ResourceManager.GetString("OdbcCommandBuilder_DataAdapter", resourceCulture); } } - + /// /// Looks up a localized string similar to The character used in a text command as the opening quote for quoting identifiers that contain special characters.. /// @@ -7277,7 +7331,7 @@ internal class Strings { return ResourceManager.GetString("OdbcCommandBuilder_QuotePrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to The character used in a text command as the closing quote for quoting identifiers that contain special characters.. /// @@ -7286,7 +7340,7 @@ internal class Strings { return ResourceManager.GetString("OdbcCommandBuilder_QuoteSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Information used to connect to a Data Source.. /// @@ -7295,7 +7349,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_ConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection string exceeds maximum allowed length of {0}.. /// @@ -7304,7 +7358,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_ConnectionStringTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to Current connection timeout value, not settable in the ConnectionString.. /// @@ -7313,7 +7367,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_ConnectionTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Current data source catalog value, 'Database=X' in the connection string.. /// @@ -7322,7 +7376,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_Database", resourceCulture); } } - + /// /// Looks up a localized string similar to Current data source, 'Server=X' in the connection string.. /// @@ -7331,7 +7385,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_DataSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Current ODBC driver.. /// @@ -7340,7 +7394,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_Driver", resourceCulture); } } - + /// /// Looks up a localized string similar to Version of the product accessed by the ODBC Driver.. /// @@ -7349,7 +7403,7 @@ internal class Strings { return ResourceManager.GetString("OdbcConnection_ServerVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter native type.. /// @@ -7358,7 +7412,7 @@ internal class Strings { return ResourceManager.GetString("OdbcParameter_OdbcType", resourceCulture); } } - + /// /// Looks up a localized string similar to 'Asynchronous Processing' is not a supported feature of the .NET Framework Data OLE DB Provider(Microsoft.Data.OleDb).. /// @@ -7367,7 +7421,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_AsynchronousNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Accessor validation was deferred and was performed while the method returned data. The binding was invalid for this column or parameter.. /// @@ -7376,7 +7430,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_BadAccessor", resourceCulture); } } - + /// /// Looks up a localized string similar to Microsoft.Data.OleDb.OleDbDataAdapter internal error: invalid parameter accessor: {0} {1}.. /// @@ -7385,7 +7439,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_BadStatus_ParamAcc", resourceCulture); } } - + /// /// Looks up a localized string similar to OleDbDataAdapter internal error: invalid row set accessor: Ordinal={0} Status={1}.. /// @@ -7394,7 +7448,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_BadStatusRowAccessor", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not determine the server's decimal separator. Non-integer numeric literals can not be created.. /// @@ -7403,7 +7457,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CanNotDetermineDecimalSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to The data value could not be converted for reasons other than sign mismatch or data overflow. For example, the data was corrupted in the data store but the row was still retrievable.. /// @@ -7412,7 +7466,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CantConvertValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider could not allocate memory in which to return {0} data.. /// @@ -7421,7 +7475,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CantCreate", resourceCulture); } } - + /// /// Looks up a localized string similar to Command parameter[{0}] '{1}' is invalid.. /// @@ -7430,7 +7484,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterBadAccessor", resourceCulture); } } - + /// /// Looks up a localized string similar to Command parameter[{0}] '{1}' data value could not be converted for reasons other than sign mismatch or data overflow.. /// @@ -7439,7 +7493,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterCantConvertValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion failed for command parameter[{0}] '{1}' because the data value overflowed the type used by the provider.. /// @@ -7448,7 +7502,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterDataOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter[{0}] '{1}' has no default value.. /// @@ -7457,7 +7511,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterDefault", resourceCulture); } } - + /// /// Looks up a localized string similar to Error occurred with parameter[{0}]: {1}.. /// @@ -7466,7 +7520,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterError", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion failed for command parameter[{0}] '{1}' because the data value was signed and the type used by the provider was unsigned.. /// @@ -7475,7 +7529,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterSignMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Provider encountered an error while sending command parameter[{0}] '{1}' value and stopped processing.. /// @@ -7484,7 +7538,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandParameterUnavailable", resourceCulture); } } - + /// /// Looks up a localized string similar to The ICommandText interface is not supported by the '{0}' provider. Use CommandType.TableDirect instead.. /// @@ -7493,7 +7547,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_CommandTextNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to load the XML file specified in configuration setting '{0}'.. /// @@ -7502,7 +7556,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ConfigUnableToLoadXmlMetaDataFile", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' configuration setting has the wrong number of values.. /// @@ -7511,7 +7565,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ConfigWrongNumberOfValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Format of the initialization string does not conform to the OLE DB specification. Starting around char[{0}] in the connection string.. /// @@ -7520,7 +7574,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ConnectionStringSyntax", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion failed because the {0} data value overflowed the type specified for the {0} value part in the consumer's buffer.. /// @@ -7529,7 +7583,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_DataOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to DBTYPE_VECTOR data is not supported by the .NET Framework Data OLE DB Provider(Microsoft.Data.OleDb).. /// @@ -7538,7 +7592,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_DBBindingGetVector", resourceCulture); } } - + /// /// Looks up a localized string similar to IErrorInfo.GetDescription failed with {0}.. /// @@ -7547,7 +7601,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_FailedGetDescription", resourceCulture); } } - + /// /// Looks up a localized string similar to IErrorInfo.GetSource failed with {0}.. /// @@ -7556,7 +7610,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_FailedGetSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to retrieve the IRow interface from the ADODB.Record object.. /// @@ -7565,7 +7619,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_Fill_EmptyRecord", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to retrieve the '{0}' interface from the ADODB.RecordSet object.. /// @@ -7574,7 +7628,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_Fill_EmptyRecordSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Object is not an ADODB.RecordSet or an ADODB.Record.. /// @@ -7583,7 +7637,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_Fill_NotADODB", resourceCulture); } } - + /// /// Looks up a localized string similar to OleDbDataAdapter internal error: [get] Unknown OLE DB data type: 0x{0} ({1}).. /// @@ -7592,7 +7646,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_GVtUnknown", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot construct the ReservedWords schema collection because the provider does not support IDBInfo.. /// @@ -7601,7 +7655,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_IDBInfoNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The OLE DB Provider specified in the ConnectionString is too long.. /// @@ -7610,7 +7664,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_InvalidProviderSpecified", resourceCulture); } } - + /// /// Looks up a localized string similar to No restrictions are expected for the DbInfoKeywords OleDbSchemaGuid.. /// @@ -7619,7 +7673,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_InvalidRestrictionsDbInfoKeywords", resourceCulture); } } - + /// /// Looks up a localized string similar to No restrictions are expected for the DbInfoLiterals OleDbSchemaGuid.. /// @@ -7628,7 +7682,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_InvalidRestrictionsDbInfoLiteral", resourceCulture); } } - + /// /// Looks up a localized string similar to No restrictions are expected for the schema guid OleDbSchemaGuid.. /// @@ -7637,7 +7691,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_InvalidRestrictionsSchemaGuids", resourceCulture); } } - + /// /// Looks up a localized string similar to Type does not support the OLE DB interface ISourcesRowset. /// @@ -7646,7 +7700,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ISourcesRowsetNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework Data Providers require Microsoft Data Access Components(MDAC). Please install Microsoft Data Access Components(MDAC) version 2.6 or later.. /// @@ -7655,7 +7709,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_MDACNotAvailable", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework OleDb Data Provider requires Microsoft Data Access Components(MDAC) version 2.6 or later. Version {0} was found currently installed.. /// @@ -7664,7 +7718,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_MDACWrongVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework Data Provider for OLEDB (Microsoft.Data.OleDb) does not support the Microsoft OLE DB Provider for ODBC Drivers (MSDASQL). Use the .NET Framework Data Provider for ODBC (System.Data.Odbc).. /// @@ -7673,7 +7727,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_MSDASQLNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to No error message available, result code: {0}.. /// @@ -7682,7 +7736,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoErrorInformation", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' failed with no error message available, result code: {1}.. /// @@ -7691,7 +7745,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoErrorInformation2", resourceCulture); } } - + /// /// Looks up a localized string similar to Unspecified error: {0}. /// @@ -7700,7 +7754,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoErrorMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to An OLE DB Provider was not specified in the ConnectionString. An example would be, 'Provider=SQLOLEDB;'.. /// @@ -7709,7 +7763,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoProviderSpecified", resourceCulture); } } - + /// /// Looks up a localized string similar to The ICommandWithParameters interface is not supported by the '{0}' provider. Command parameters are unsupported with the current provider.. /// @@ -7718,7 +7772,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoProviderSupportForParameters", resourceCulture); } } - + /// /// Looks up a localized string similar to Retrieving procedure parameter information is not supported by the '{0}' provider.. /// @@ -7727,7 +7781,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NoProviderSupportForSProcResetParameters", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by the .NET Framework OleDb Data Provider.. /// @@ -7736,7 +7790,7 @@ internal class Strings { return ResourceManager.GetString("OLEDB_NotSupportedEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} OleDbSchemaGuid is not a supported schema by the '{1}' provider.. /// @@ -7745,7 +7799,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_NotSupportedSchemaTable", resourceCulture); } } - + /// /// Looks up a localized string similar to OleDbCommandBuilder.DeriveParameters failed because the OleDbCommandBuilder.CommandText property value is an invalid multipart name. /// @@ -7754,7 +7808,7 @@ internal class Strings { return ResourceManager.GetString("OLEDB_OLEDBCommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to The .NET Framework Data Provider for OLEDB will not allow the OLE DB Provider to prompt the user in a non-interactive environment.. /// @@ -7763,7 +7817,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PossiblePromptNotUserInteractive", resourceCulture); } } - + /// /// Looks up a localized string similar to The ColumnID element was invalid.. /// @@ -7772,7 +7826,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyBadColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to The value of Options was invalid.. /// @@ -7781,7 +7835,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyBadOption", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to initialize the '{0}' property for one of the following reasons: /// The value data type was not the data type of the property or was not null. For example, the property was DBPROP_MEMORYUSAGE, which has a data type of Int32, and the data type was Int64. @@ -7793,7 +7847,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyBadValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}'property's value was not set because doing so would have conflicted with an existing property.. /// @@ -7802,7 +7856,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyConflicting", resourceCulture); } } - + /// /// Looks up a localized string similar to A '{0}' property was specified to be applied to all columns but could not be applied to one or more of them.. /// @@ -7811,7 +7865,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotAllSettable", resourceCulture); } } - + /// /// Looks up a localized string similar to (Reserved).. /// @@ -7820,7 +7874,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotAvailable", resourceCulture); } } - + /// /// Looks up a localized string similar to The optional '{0}' property's value was not set to the specified value and setting the property to the specified value was not possible.. /// @@ -7829,7 +7883,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotSet", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' property was read-only, or the consumer attempted to set values of properties in the Initialization property group after the data source object was initialized. Consumers can set the value of a read-only property to its current value. This status is also returned if a settable column property could not be set for the particular column.. /// @@ -7838,7 +7892,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotSettable", resourceCulture); } } - + /// /// Looks up a localized string similar to The property's value was not set because the provider did not support the '{0}' property, or the consumer attempted to get or set values of properties not in the Initialization property group and the data source object is uninitialized.. /// @@ -7847,7 +7901,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider returned an unknown DBPROPSTATUS_ value '{0}'.. /// @@ -7856,7 +7910,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_PropertyStatusUnknown", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' provider is not registered on the local machine.. /// @@ -7865,7 +7919,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ProviderUnavailable", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' interface is not supported by the '{1}' provider. GetOleDbSchemaTable is unavailable with the current provider.. /// @@ -7874,7 +7928,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_SchemaRowsetsNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion failed because the {0} data value was signed and the type specified for the {0} value part in the consumer's buffer was unsigned.. /// @@ -7883,7 +7937,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_SignMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to OleDbDataAdapter internal error: [set] Unknown OLE DB data type: 0x{0} ({1}).. /// @@ -7892,7 +7946,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_SVtUnknown", resourceCulture); } } - + /// /// Looks up a localized string similar to The OleDbDataReader.Read must be used from the same thread on which is was created if that thread's ApartmentState was not ApartmentState.MTA.. /// @@ -7901,7 +7955,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_ThreadApartmentState", resourceCulture); } } - + /// /// Looks up a localized string similar to The ITransactionLocal interface is not supported by the '{0}' provider. Local transactions are unavailable with the current provider.. /// @@ -7910,7 +7964,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_TransactionsNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider could not determine the {0} value. For example, the row was just created, the default for the {0} column was not available, and the consumer had not yet set a new {0} value.. /// @@ -7919,7 +7973,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_Unavailable", resourceCulture); } } - + /// /// Looks up a localized string similar to OLE DB Provider returned an unexpected status value of {0}.. /// @@ -7928,7 +7982,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_UnexpectedStatusValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter[{0}]: the OleDbType property is uninitialized: OleDbType.{1}.. /// @@ -7937,7 +7991,7 @@ internal class Strings { return ResourceManager.GetString("OleDb_UninitializedParameters", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter for which to automatically generate OleDbCommands. /// @@ -7946,7 +8000,7 @@ internal class Strings { return ResourceManager.GetString("OleDbCommandBuilder_DataAdapter", resourceCulture); } } - + /// /// Looks up a localized string similar to The decimal separator used in numeric literals.. /// @@ -7955,7 +8009,7 @@ internal class Strings { return ResourceManager.GetString("OleDbCommandBuilder_DecimalSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to The prefix string wrapped around sql objects. /// @@ -7964,7 +8018,7 @@ internal class Strings { return ResourceManager.GetString("OleDbCommandBuilder_QuotePrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to The suffix string wrapped around sql objects. /// @@ -7973,7 +8027,7 @@ internal class Strings { return ResourceManager.GetString("OleDbCommandBuilder_QuoteSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Information used to connect to a Data Source.. /// @@ -7982,7 +8036,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_ConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Current connection timeout value, 'Connect Timeout=X' in the ConnectionString.. /// @@ -7991,7 +8045,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_ConnectionTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Current data source catalog value, 'Initial Catalog=X' in the connection string.. /// @@ -8000,7 +8054,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_Database", resourceCulture); } } - + /// /// Looks up a localized string similar to Current data source, 'Data Source=X' in the connection string.. /// @@ -8009,7 +8063,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_DataSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Current OLE DB provider ProgID, 'Provider=X' in the connection string.. /// @@ -8018,7 +8072,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_Provider", resourceCulture); } } - + /// /// Looks up a localized string similar to Version of the product accessed by the OLE DB Provider.. /// @@ -8027,7 +8081,7 @@ internal class Strings { return ResourceManager.GetString("OleDbConnection_ServerVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter native type.. /// @@ -8036,7 +8090,7 @@ internal class Strings { return ResourceManager.GetString("OleDbParameter_OleDbType", resourceCulture); } } - + /// /// Looks up a localized string similar to Occurs whenever a property for this control changes.. /// @@ -8045,7 +8099,7 @@ internal class Strings { return ResourceManager.GetString("propertyChangedEventDescr", resourceCulture); } } - + /// /// Looks up a localized string similar to Min ({0}) must be less than or equal to max ({1}) in a Range object.. /// @@ -8054,7 +8108,7 @@ internal class Strings { return ResourceManager.GetString("Range_Argument", resourceCulture); } } - + /// /// Looks up a localized string similar to This is a null range.. /// @@ -8063,7 +8117,7 @@ internal class Strings { return ResourceManager.GetString("Range_NullRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Collection was modified; enumeration operation might not execute.. /// @@ -8072,7 +8126,7 @@ internal class Strings { return ResourceManager.GetString("RbTree_EnumerationBroken", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable internal index is corrupted: '{0}'.. /// @@ -8081,7 +8135,7 @@ internal class Strings { return ResourceManager.GetString("RbTree_InvalidState", resourceCulture); } } - + /// /// Looks up a localized string similar to MinimumCapacity must be non-negative.. /// @@ -8090,7 +8144,7 @@ internal class Strings { return ResourceManager.GetString("RecordManager_MinimumCapacity", resourceCulture); } } - + /// /// Looks up a localized string similar to Security Warning: The negotiated {0} is an insecure protocol and is supported for backward compatibility only. The recommended protocol version is TLS 1.2 and later.. /// @@ -8099,7 +8153,7 @@ internal class Strings { return ResourceManager.GetString("SEC_ProtocolWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to I/O Error detected in read/write operation. /// @@ -8108,7 +8162,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_1", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// @@ -8117,7 +8171,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_10", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout error. /// @@ -8126,7 +8180,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_11", resourceCulture); } } - + /// /// Looks up a localized string similar to No server name supplied. /// @@ -8135,7 +8189,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_12", resourceCulture); } } - + /// /// Looks up a localized string similar to TerminateListener() has been called. /// @@ -8144,7 +8198,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_13", resourceCulture); } } - + /// /// Looks up a localized string similar to Win9x not supported. /// @@ -8153,7 +8207,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_14", resourceCulture); } } - + /// /// Looks up a localized string similar to Function not supported. /// @@ -8162,7 +8216,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_15", resourceCulture); } } - + /// /// Looks up a localized string similar to Shared-Memory heap error. /// @@ -8171,7 +8225,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_16", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find an ip/ipv6 type address to connect. /// @@ -8180,7 +8234,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_17", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection has been closed by peer. /// @@ -8189,7 +8243,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_18", resourceCulture); } } - + /// /// Looks up a localized string similar to Physical connection is not usable. /// @@ -8198,7 +8252,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_19", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection was terminated. /// @@ -8207,7 +8261,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_2", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection has been closed. /// @@ -8216,7 +8270,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_20", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption is enforced but there is no valid certificate. /// @@ -8225,7 +8279,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_21", resourceCulture); } } - + /// /// Looks up a localized string similar to Couldn't load library. /// @@ -8234,7 +8288,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_22", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot open a new thread in server process. /// @@ -8243,7 +8297,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_23", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot post event to completion port. /// @@ -8252,7 +8306,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_24", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection string is not valid. /// @@ -8261,7 +8315,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_25", resourceCulture); } } - + /// /// Looks up a localized string similar to Error Locating Server/Instance Specified. /// @@ -8270,7 +8324,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_26", resourceCulture); } } - + /// /// Looks up a localized string similar to Error getting enabled protocols list from registry. /// @@ -8279,7 +8333,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_27", resourceCulture); } } - + /// /// Looks up a localized string similar to Server doesn't support requested protocol. /// @@ -8288,7 +8342,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_28", resourceCulture); } } - + /// /// Looks up a localized string similar to Shared Memory is not supported for clustered server connectivity. /// @@ -8297,7 +8351,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_29", resourceCulture); } } - + /// /// Looks up a localized string similar to Asynchronous operations not supported. /// @@ -8306,7 +8360,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_3", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt bind to shared memory segment. /// @@ -8315,7 +8369,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_30", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption(ssl/tls) handshake failed. /// @@ -8324,7 +8378,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_31", resourceCulture); } } - + /// /// Looks up a localized string similar to Packet size too large for SSL Encrypt/Decrypt operations. /// @@ -8333,7 +8387,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_32", resourceCulture); } } - + /// /// Looks up a localized string similar to SSRP error. /// @@ -8342,7 +8396,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_33", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not connect to the Shared Memory pipe. /// @@ -8351,7 +8405,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_34", resourceCulture); } } - + /// /// Looks up a localized string similar to An internal exception was caught. /// @@ -8360,7 +8414,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_35", resourceCulture); } } - + /// /// Looks up a localized string similar to The Shared Memory dll used to connect to SQL Server 2000 was not found. /// @@ -8369,7 +8423,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_36", resourceCulture); } } - + /// /// Looks up a localized string similar to The SQL Server 2000 Shared Memory client dll appears to be invalid/corrupted. /// @@ -8378,7 +8432,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_37", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot open a Shared Memory connection to SQL Server 2000. /// @@ -8387,7 +8441,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_38", resourceCulture); } } - + /// /// Looks up a localized string similar to Shared memory connectivity to SQL Server 2000 is either disabled or not available on this machine. /// @@ -8396,7 +8450,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_39", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// @@ -8405,7 +8459,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_4", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not open a connection to SQL Server. /// @@ -8414,7 +8468,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_40", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot open a Shared Memory connection to a remote SQL server. /// @@ -8423,7 +8477,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_41", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not establish dedicated administrator connection (DAC) on default port. Make sure that DAC is enabled. /// @@ -8432,7 +8486,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_42", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred while obtaining the dedicated administrator connection (DAC) port. Make sure that SQL Browser is running, or check the error log for the port number. /// @@ -8441,7 +8495,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_43", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not compose Service Principal Name (SPN) for Windows Integrated Authentication. Possible causes are server(s) incorrectly specified to connection API calls, Domain Name System (DNS) lookup failure or memory shortage. /// @@ -8450,7 +8504,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_44", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting with the MultiSubnetFailover connection option to a SQL Server instance configured with more than 64 IP addresses is not supported.. /// @@ -8459,7 +8513,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_47", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting to a named SQL Server instance using the MultiSubnetFailover connection option is not supported.. /// @@ -8468,7 +8522,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_48", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting to a SQL Server instance using the MultiSubnetFailover connection option is only supported when using the TCP protocol.. /// @@ -8477,7 +8531,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_49", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid parameter(s) found. /// @@ -8486,7 +8540,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_5", resourceCulture); } } - + /// /// Looks up a localized string similar to Local Database Runtime error occurred. . /// @@ -8495,7 +8549,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_50", resourceCulture); } } - + /// /// Looks up a localized string similar to An instance name was not specified while connecting to a Local Database Runtime. Specify an instance name in the format (localdb)\instance_name.. /// @@ -8504,7 +8558,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_51", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.. /// @@ -8513,7 +8567,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_52", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Local Database Runtime registry configuration found. Verify that SQL Server Express is properly installed.. /// @@ -8522,7 +8576,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_53", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to locate the registry entry for SQLUserInstance.dll file path. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -8531,7 +8585,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_54", resourceCulture); } } - + /// /// Looks up a localized string similar to Registry value contains an invalid SQLUserInstance.dll file path. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -8540,7 +8594,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_55", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to load the SQLUserInstance.dll from the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -8549,7 +8603,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_56", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid SQLUserInstance.dll found at the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.. /// @@ -8558,7 +8612,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_57", resourceCulture); } } - + /// /// Looks up a localized string similar to Unsupported protocol specified. /// @@ -8567,7 +8621,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_6", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid connection found when setting up new session protocol. /// @@ -8576,7 +8630,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_7", resourceCulture); } } - + /// /// Looks up a localized string similar to Protocol not supported. /// @@ -8585,7 +8639,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_8", resourceCulture); } } - + /// /// Looks up a localized string similar to Associating port with I/O completion mechanism failed. /// @@ -8594,7 +8648,7 @@ internal class Strings { return ResourceManager.GetString("SNI_ERROR_9", resourceCulture); } } - + /// /// Looks up a localized string similar to HTTP Provider. /// @@ -8603,7 +8657,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN0", resourceCulture); } } - + /// /// Looks up a localized string similar to Named Pipes Provider. /// @@ -8612,7 +8666,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN1", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// @@ -8621,7 +8675,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN10", resourceCulture); } } - + /// /// Looks up a localized string similar to SQL Network Interfaces. /// @@ -8630,7 +8684,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN11", resourceCulture); } } - + /// /// Looks up a localized string similar to Session Provider. /// @@ -8639,7 +8693,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN2", resourceCulture); } } - + /// /// Looks up a localized string similar to Sign Provider. /// @@ -8648,7 +8702,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN3", resourceCulture); } } - + /// /// Looks up a localized string similar to Shared Memory Provider. /// @@ -8657,7 +8711,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN4", resourceCulture); } } - + /// /// Looks up a localized string similar to SMux Provider. /// @@ -8666,7 +8720,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN5", resourceCulture); } } - + /// /// Looks up a localized string similar to SSL Provider. /// @@ -8675,7 +8729,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN6", resourceCulture); } } - + /// /// Looks up a localized string similar to TCP Provider. /// @@ -8684,7 +8738,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN7", resourceCulture); } } - + /// /// Looks up a localized string similar to VIA Provider. /// @@ -8693,7 +8747,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN8", resourceCulture); } } - + /// /// Looks up a localized string similar to CTAIP Provider. /// @@ -8702,7 +8756,7 @@ internal class Strings { return ResourceManager.GetString("SNI_PN9", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection open and login was successful, but then an error occurred while enlisting the connection into the current distributed transaction.. /// @@ -8711,7 +8765,7 @@ internal class Strings { return ResourceManager.GetString("Snix_AutoEnlist", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred during connection clean-up.. /// @@ -8720,7 +8774,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Close", resourceCulture); } } - + /// /// Looks up a localized string similar to A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.. /// @@ -8729,7 +8783,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Connect", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection open and login was successful, but then an error occurred while enabling MARS for this connection.. /// @@ -8738,7 +8792,7 @@ internal class Strings { return ResourceManager.GetString("Snix_EnableMars", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred when sending the request to the server.. /// @@ -8747,7 +8801,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Execute", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to establish a MARS session in preparation to send the request to the server.. /// @@ -8756,7 +8810,7 @@ internal class Strings { return ResourceManager.GetString("Snix_GetMarsSession", resourceCulture); } } - + /// /// Looks up a localized string similar to A connection was successfully established with the server, but then an error occurred during the login process.. /// @@ -8765,7 +8819,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Login", resourceCulture); } } - + /// /// Looks up a localized string similar to A connection was successfully established with the server, but then an error occurred when obtaining the security/SSPI context information for integrated security login.. /// @@ -8774,7 +8828,7 @@ internal class Strings { return ResourceManager.GetString("Snix_LoginSspi", resourceCulture); } } - + /// /// Looks up a localized string similar to A connection was successfully established with the server, but then an error occurred during the pre-login handshake.. /// @@ -8783,7 +8837,7 @@ internal class Strings { return ResourceManager.GetString("Snix_PreLogin", resourceCulture); } } - + /// /// Looks up a localized string similar to The client was unable to establish a connection because of an error during connection initialization process before login. Possible causes include the following: the client tried to connect to an unsupported version of SQL Server; the server was too busy to accept new connections; or there was a resource limitation (insufficient memory or maximum allowed connections) on the server.. /// @@ -8792,7 +8846,7 @@ internal class Strings { return ResourceManager.GetString("Snix_PreLoginBeforeSuccessfullWrite", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred during SSPI handshake.. /// @@ -8801,7 +8855,7 @@ internal class Strings { return ResourceManager.GetString("Snix_ProcessSspi", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred when receiving results from the server.. /// @@ -8810,7 +8864,7 @@ internal class Strings { return ResourceManager.GetString("Snix_Read", resourceCulture); } } - + /// /// Looks up a localized string similar to A transport-level error has occurred while sending information to the server.. /// @@ -8819,7 +8873,7 @@ internal class Strings { return ResourceManager.GetString("Snix_SendRows", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of '{0}' must match the length of '{1}'.. /// @@ -8828,7 +8882,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ArgumentLengthMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to This command requires an asynchronous connection. Set "Asynchronous Processing=true" in the connection string.. /// @@ -8837,7 +8891,7 @@ internal class Strings { return ResourceManager.GetString("SQL_AsyncConnectionRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to The asynchronous operation has already completed.. /// @@ -8846,7 +8900,7 @@ internal class Strings { return ResourceManager.GetString("SQL_AsyncOperationCompleted", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication' with 'Integrated Security'.. /// @@ -8855,7 +8909,7 @@ internal class Strings { return ResourceManager.GetString("SQL_AuthenticationAndIntegratedSecurity", resourceCulture); } } - + /// /// Looks up a localized string similar to Batching updates is not supported on the context connection.. /// @@ -8864,7 +8918,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BatchedUpdatesNotAvailableOnContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlBulkCopy.WriteToServer failed because the SqlBulkCopy.DestinationTableName is an invalid multipart name. /// @@ -8873,7 +8927,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkCopyDestinationTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to The given value{0} of type {1} from the data source cannot be converted to type {2} for Column {3} [{4}] Row {5}.. /// @@ -8882,7 +8936,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadCannotConvertValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The given value{0} of type {1} from the data source cannot be converted to type {2} for Column {3} [{4}].. /// @@ -8891,7 +8945,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadCannotConvertValueWithoutRowNo", resourceCulture); } } - + /// /// Looks up a localized string similar to Must not specify SqlBulkCopyOption.UseInternalTransaction and pass an external Transaction at the same time.. /// @@ -8900,7 +8954,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadConflictingTransactionOption", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected existing transaction.. /// @@ -8909,7 +8963,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadExistingTransaction", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot access destination table '{0}'.. /// @@ -8918,7 +8972,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidDestinationTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Function must not be called during event.. /// @@ -8927,7 +8981,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidOperationInsideEvent", resourceCulture); } } - + /// /// Looks up a localized string similar to The given column order hint is not valid.. /// @@ -8936,7 +8990,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidOrderHint", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout Value '{0}' is less than 0.. /// @@ -8945,7 +8999,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Value cannot be converted to SqlVariant.. /// @@ -8954,7 +9008,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadInvalidVariantValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The locale id '{0}' of the source column '{1}' and the locale id '{2}' of the destination column '{3}' do not match.. /// @@ -8963,7 +9017,7 @@ internal class Strings { return ResourceManager.GetString("Sql_BulkLoadLcidMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to The mapped collection is in use and cannot be accessed at this time;. /// @@ -8972,7 +9026,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadMappingInaccessible", resourceCulture); } } - + /// /// Looks up a localized string similar to Mappings must be either all name or all ordinal based.. /// @@ -8981,7 +9035,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadMappingsNamesOrOrdinalsOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to The DestinationTableName property must be set before calling this method.. /// @@ -8990,7 +9044,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadMissingDestinationTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to obtain column collation information for the destination table. If the table is not in the current database the name must be qualified using the database name (e.g. [mydb]..[mytable](e.g. [mydb]..[mytable]); this also applies to temporary-tables (e.g. #mytable would be specified as tempdb..#mytable).. /// @@ -8999,7 +9053,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadNoCollation", resourceCulture); } } - + /// /// Looks up a localized string similar to The given ColumnMapping does not match up with any column in the source or destination.. /// @@ -9008,7 +9062,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadNonMatchingColumnMapping", resourceCulture); } } - + /// /// Looks up a localized string similar to The given ColumnName '{0}' does not match up with any column in data source.. /// @@ -9017,7 +9071,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadNonMatchingColumnName", resourceCulture); } } - + /// /// Looks up a localized string similar to Column '{0}' does not allow DBNull.Value.. /// @@ -9026,7 +9080,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadNotAllowDBNull", resourceCulture); } } - + /// /// Looks up a localized string similar to The column '{0}' was specified more than once.. /// @@ -9035,7 +9089,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadOrderHintDuplicateColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to The sorted column '{0}' is not valid in the destination table.. /// @@ -9044,7 +9098,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadOrderHintInvalidColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Attempt to invoke bulk copy on an object that has a pending operation.. /// @@ -9053,7 +9107,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadPendingOperation", resourceCulture); } } - + /// /// Looks up a localized string similar to String or binary data would be truncated in table '{0}', column '{1}'. Truncated value: '{2}'.. /// @@ -9062,7 +9116,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadStringTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to A column order hint cannot have an unspecified sort order.. /// @@ -9071,7 +9125,7 @@ internal class Strings { return ResourceManager.GetString("SQL_BulkLoadUnspecifiedSortOrder", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to instantiate a SqlAuthenticationInitializer with type '{0}'.. /// @@ -9080,7 +9134,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotCreateAuthInitializer", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to instantiate an authentication provider with type '{1}' for '{0}'.. /// @@ -9089,7 +9143,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotCreateAuthProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find an authentication provider for '{0}'.. /// @@ -9098,7 +9152,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotFindAuthProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to read the config section for authentication providers.. /// @@ -9107,7 +9161,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotGetAuthProviderConfig", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to get the address of the distributed transaction coordinator for the server, from the server. Is DTC enabled on the server?. /// @@ -9116,7 +9170,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotGetDTCAddress", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider '{0}' threw an exception while initializing.. /// @@ -9125,7 +9179,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotInitializeAuthProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} cannot be changed while async operation is in progress.. /// @@ -9134,7 +9188,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CannotModifyPropertyAsyncOperationInProgress", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot create normalizer for '{0}'.. /// @@ -9143,7 +9197,7 @@ internal class Strings { return ResourceManager.GetString("Sql_CanotCreateNormalizer", resourceCulture); } } - + /// /// Looks up a localized string similar to Incorrect authentication parameters specified with certificate authentication.. /// @@ -9152,7 +9206,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Certificate", resourceCulture); } } - + /// /// Looks up a localized string similar to The '{0}' argument must not be null or empty.. /// @@ -9161,7 +9215,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ChangePasswordArgumentMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to ChangePassword can only be used with SQL authentication, not with integrated security.. /// @@ -9170,7 +9224,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ChangePasswordConflictsWithSSPI", resourceCulture); } } - + /// /// Looks up a localized string similar to ChangePassword requires SQL Server 9.0 or later.. /// @@ -9179,7 +9233,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ChangePasswordRequiresYukon", resourceCulture); } } - + /// /// Looks up a localized string similar to The keyword '{0}' must not be specified in the connectionString argument to ChangePassword.. /// @@ -9188,7 +9242,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ChangePasswordUseOfUnallowedKey", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested operation cannot be completed because the connection has been broken.. /// @@ -9197,7 +9251,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ConnectionDoomed", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection cannot be used because there is an ongoing operation that must be finished.. /// @@ -9206,7 +9260,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ConnectionLockedForBcpEvent", resourceCulture); } } - + /// /// Looks up a localized string similar to The only additional connection string keyword that may be used when requesting the context connection is the Type System Version keyword.. /// @@ -9215,7 +9269,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextAllowsLimitedKeywords", resourceCulture); } } - + /// /// Looks up a localized string similar to The context connection does not support Type System Version=SQL Server 2000.. /// @@ -9224,7 +9278,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextAllowsOnlyTypeSystem2005", resourceCulture); } } - + /// /// Looks up a localized string similar to The context connection is already in use.. /// @@ -9233,7 +9287,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextConnectionIsInUse", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested operation requires a SqlClr context, which is only available when running in the Sql Server process.. /// @@ -9242,7 +9296,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextUnavailableOutOfProc", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested operation requires a Sql Server execution thread. The current thread was started by user code or other non-Sql Server engine code.. /// @@ -9251,7 +9305,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ContextUnavailableWhileInProc", resourceCulture); } } - + /// /// Looks up a localized string similar to Either Credential or both 'User ID' and 'Password' (or 'UID' and 'PWD') connection string keywords must be specified, if 'Authentication={0}'.. /// @@ -9260,7 +9314,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CredentialsNotProvided", resourceCulture); } } - + /// /// Looks up a localized string similar to The instance of SQL Server you attempted to connect to does not support CTAIP.. /// @@ -9269,7 +9323,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CTAIPNotSupportedByServer", resourceCulture); } } - + /// /// Looks up a localized string similar to The Collation specified by SQL Server is not supported.. /// @@ -9278,7 +9332,7 @@ internal class Strings { return ResourceManager.GetString("SQL_CultureIdError", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords.. /// @@ -9287,7 +9341,7 @@ internal class Strings { return ResourceManager.GetString("SQL_DeviceFlowWithUsernamePassword", resourceCulture); } } - + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; . /// @@ -9296,7 +9350,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_Login_Begin", resourceCulture); } } - + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; . /// @@ -9305,7 +9359,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_Login_ProcessConnectionAuth", resourceCulture); } } - + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; [Post-Login] complete={4}; . /// @@ -9314,7 +9368,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_PostLogin", resourceCulture); } } - + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0};. /// @@ -9323,7 +9377,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_PreLogin_Begin", resourceCulture); } } - + /// /// Looks up a localized string similar to The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; . /// @@ -9332,7 +9386,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Duration_PreLoginHandshake", resourceCulture); } } - + /// /// Looks up a localized string similar to The instance of SQL Server you attempted to connect to requires encryption but this machine does not support it.. /// @@ -9341,7 +9395,7 @@ internal class Strings { return ResourceManager.GetString("SQL_EncryptionNotSupportedByClient", resourceCulture); } } - + /// /// Looks up a localized string similar to The instance of SQL Server you attempted to connect to does not support encryption.. /// @@ -9350,7 +9404,7 @@ internal class Strings { return ResourceManager.GetString("SQL_EncryptionNotSupportedByServer", resourceCulture); } } - + /// /// Looks up a localized string similar to Number of fields in record '{0}' does not match the number in the original record.. /// @@ -9359,7 +9413,7 @@ internal class Strings { return ResourceManager.GetString("SQL_EnumeratedRecordFieldCountChanged", resourceCulture); } } - + /// /// Looks up a localized string similar to Metadata for field '{0}' of record '{1}' did not match the original record's metadata.. /// @@ -9368,7 +9422,7 @@ internal class Strings { return ResourceManager.GetString("SQL_EnumeratedRecordMetaDataChanged", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified data length {0} exceeds the allowed maximum length of {1}.. /// @@ -9377,7 +9431,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExceedsMaxDataLength", resourceCulture); } } - + /// /// Looks up a localized string similar to ClientConnectionId:{0}. /// @@ -9386,7 +9440,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExClientConnectionId", resourceCulture); } } - + /// /// Looks up a localized string similar to Error Number:{0},State:{1},Class:{2}. /// @@ -9395,7 +9449,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExErrorNumberStateClass", resourceCulture); } } - + /// /// Looks up a localized string similar to ClientConnectionId before routing:{0}. /// @@ -9404,7 +9458,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExOriginalClientConnectionId", resourceCulture); } } - + /// /// Looks up a localized string similar to Routing Destination:{0}. /// @@ -9413,7 +9467,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ExRoutingDestination", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout expired. The connection has been broken as a result.. /// @@ -9422,7 +9476,7 @@ internal class Strings { return ResourceManager.GetString("SQL_FatalTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Instance failure.. /// @@ -9431,7 +9485,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InstanceFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Integrated' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords.. /// @@ -9440,7 +9494,7 @@ internal class Strings { return ResourceManager.GetString("SQL_IntegratedWithUserIDAndPassword", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Interactive' with 'Password' or 'PWD' connection string keywords.. /// @@ -9449,7 +9503,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InteractiveWithPassword", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. /// @@ -9458,7 +9512,7 @@ internal class Strings { return ResourceManager.GetString("Sql_InternalError", resourceCulture); } } - + /// /// Looks up a localized string similar to Buffer offset '{1}' plus the bytes available '{0}' is greater than the length of the passed in buffer.. /// @@ -9467,7 +9521,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidBufferSizeOrIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to Data length '{0}' is less than 0.. /// @@ -9476,7 +9530,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidDataLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid internal packet size:. /// @@ -9485,7 +9539,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidInternalPacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of the value for the connection parameter <{0}> exceeds the maximum allowed 65535 characters.. /// @@ -9494,7 +9548,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidOptionLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 'Packet Size'. The value must be an integer >= 512 and <= 32768.. /// @@ -9503,7 +9557,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidPacketSizeValue", resourceCulture); } } - + /// /// Looks up a localized string similar to The length of the parameter '{0}' exceeds the limit of 128 characters.. /// @@ -9512,7 +9566,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidParameterNameLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 3 part name format for TypeName.. /// @@ -9521,7 +9575,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidParameterTypeNameFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to Server {0}, database {1} is not configured for database mirroring.. /// @@ -9530,7 +9584,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidPartnerConfiguration", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to read when no data is present.. /// @@ -9539,7 +9593,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidRead", resourceCulture); } } - + /// /// Looks up a localized string similar to The server certificate failed application validation.. /// @@ -9548,7 +9602,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidServerCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to The SqlDbType '{0}' is invalid for {1}. Only {2} is supported.. /// @@ -9557,7 +9611,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidSqlDbTypeWithOneAllowedType", resourceCulture); } } - + /// /// Looks up a localized string similar to Unsupported SQL Server version. The .NET Framework SqlClient Data Provider can only be used with SQL Server versions 7.0 and later.. /// @@ -9566,7 +9620,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidSQLServerVersionUnknown", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid SSPI packet size.. /// @@ -9575,7 +9629,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidSSPIPacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Packet Size.. /// @@ -9584,7 +9638,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidTDSPacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to The SQL Server instance returned an invalid or unsupported protocol version during login negotiation.. /// @@ -9593,7 +9647,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidTDSVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 3 part name format for UdtTypeName.. /// @@ -9602,7 +9656,7 @@ internal class Strings { return ResourceManager.GetString("SQL_InvalidUdt3PartNameFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords.. /// @@ -9611,7 +9665,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ManagedIdentityWithPassword", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection does not support MultipleActiveResultSets.. /// @@ -9620,7 +9674,7 @@ internal class Strings { return ResourceManager.GetString("SQL_MarsUnsupportedOnConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to MetaData parameter array must have length equivalent to ParameterDirection array argument.. /// @@ -9629,7 +9683,7 @@ internal class Strings { return ResourceManager.GetString("Sql_MismatchedMetaDataDirectionArrayLengths", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDbType.SmallMoney overflow. Value '{0}' is out of range. Must be between -214,748.3648 and 214,748.3647.. /// @@ -9638,7 +9692,7 @@ internal class Strings { return ResourceManager.GetString("SQL_MoneyOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to authenticate the user {0} in Active Directory (Authentication={1}).. /// @@ -9647,7 +9701,7 @@ internal class Strings { return ResourceManager.GetString("SQL_MSALFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to Error code 0x{0}; state {1}. /// @@ -9656,7 +9710,7 @@ internal class Strings { return ResourceManager.GetString("SQL_MSALInnerException", resourceCulture); } } - + /// /// Looks up a localized string similar to Nested TransactionScopes are not supported.. /// @@ -9665,7 +9719,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NestedTransactionScopesNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetBytes on column '{0}'. The GetBytes function can only be used on columns of type Text, NText, or Image.. /// @@ -9674,7 +9728,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NonBlobColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetChars on column '{0}'. The GetChars function can only be used on columns of type Text, NText, Xml, VarChar or NVarChar.. /// @@ -9683,7 +9737,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NonCharColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to SSE Instance re-direction is not supported for non-local user instances.. /// @@ -9692,7 +9746,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NonLocalSSEInstance", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid command sent to ExecuteXmlReader. The command must return an Xml result.. /// @@ -9701,7 +9755,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NonXmlResult", resourceCulture); } } - + /// /// Looks up a localized string similar to The requested operation is not available on the context connection.. /// @@ -9710,7 +9764,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NotAvailableOnContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Notifications are not available on the context connection.. /// @@ -9719,7 +9773,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NotificationsNotAvailableOnContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Notifications require SQL Server 9.0 or later.. /// @@ -9728,7 +9782,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NotificationsRequireYukon", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by the .NET Framework SqlClient Data Provider.. /// @@ -9737,7 +9791,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NotSupportedEnumerationValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Command parameter must have a non null and non empty command text.. /// @@ -9746,7 +9800,7 @@ internal class Strings { return ResourceManager.GetString("Sql_NullCommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid transaction or invalid name for a point at which to save within the transaction.. /// @@ -9755,7 +9809,7 @@ internal class Strings { return ResourceManager.GetString("SQL_NullEmptyTransactionName", resourceCulture); } } - + /// /// Looks up a localized string similar to Open result count exceeded.. /// @@ -9764,7 +9818,7 @@ internal class Strings { return ResourceManager.GetString("SQL_OpenResultCountExceeded", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cancelled by user.. /// @@ -9773,7 +9827,7 @@ internal class Strings { return ResourceManager.GetString("SQL_OperationCancelled", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter '{0}' cannot be null or empty.. /// @@ -9782,7 +9836,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParameterCannotBeEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to Parameter '{0}' exceeds the size limit for the sql_variant datatype.. /// @@ -9791,7 +9845,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParameterInvalidVariant", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} type parameter '{1}' must have a valid type name.. /// @@ -9800,7 +9854,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParameterTypeNameRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error.. /// @@ -9809,7 +9863,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingError", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Authentication Library Type: {1}. /// @@ -9818,7 +9872,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorAuthLibraryType", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Feature Id: {1}. /// @@ -9827,7 +9881,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorFeatureId", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Length: {1}. /// @@ -9836,7 +9890,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Offset: {1}. /// @@ -9845,7 +9899,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorOffset", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Status: {1}. /// @@ -9854,7 +9908,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorStatus", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Token : {1}. /// @@ -9863,7 +9917,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorToken", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}, Value: {1}. /// @@ -9872,7 +9926,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal connection fatal error. Error state: {0}. /// @@ -9881,7 +9935,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ParsingErrorWithState", resourceCulture); } } - + /// /// Looks up a localized string similar to The command execution cannot proceed due to a pending asynchronous operation already in progress.. /// @@ -9890,7 +9944,7 @@ internal class Strings { return ResourceManager.GetString("SQL_PendingBeginXXXExists", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred with a prior row sent to the SqlPipe. SendResultsEnd must be called before anything else can be sent.. /// @@ -9899,7 +9953,7 @@ internal class Strings { return ResourceManager.GetString("SQL_PipeErrorRequiresSendEnd", resourceCulture); } } - + /// /// Looks up a localized string similar to Precision value '{0}' is either less than 0 or greater than the maximum allowed precision of 38.. /// @@ -9908,7 +9962,7 @@ internal class Strings { return ResourceManager.GetString("SQL_PrecisionValueOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Scale value '{0}' is either less than 0 or greater than the maximum allowed scale of 38.. /// @@ -9917,7 +9971,7 @@ internal class Strings { return ResourceManager.GetString("SQL_ScaleValueOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Device Code Flow' has been specified in the connection string.. /// @@ -9926,7 +9980,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingCredentialWithDeviceFlow", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Integrated' has been specified in the connection string.. /// @@ -9935,7 +9989,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingCredentialWithIntegrated", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Interactive' has been specified in the connection string.. /// @@ -9944,7 +9998,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingCredentialWithInteractive", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string.. /// @@ -9953,7 +10007,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingCredentialWithManagedIdentity", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set.. /// @@ -9962,7 +10016,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingDeviceFlowWithCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Integrated', if the Credential property has been set.. /// @@ -9971,7 +10025,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingIntegratedWithCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Interactive', if the Credential property has been set.. /// @@ -9980,7 +10034,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingInteractiveWithCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set.. /// @@ -9989,7 +10043,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SettingManagedIdentityWithCredential", resourceCulture); } } - + /// /// Looks up a localized string similar to A severe error occurred on the current command. The results, if any, should be discarded.. /// @@ -9998,7 +10052,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SevereError", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDbType.SmallDateTime overflow. Value '{0}' is out of range. Must be between 1/1/1900 12:00:00 AM and 6/6/2079 11:59:59 PM.. /// @@ -10007,7 +10061,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SmallDateTimeOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to The {0} enumeration value, {1}, is not supported by SQL Server 7.0 or SQL Server 2000.. /// @@ -10016,7 +10070,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SnapshotNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Memory allocation for internal connection failed.. /// @@ -10025,7 +10079,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SNIPacketAllocationFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlCommand.DeriveParameters failed because the SqlCommand.CommandText property value is an invalid multipart name. /// @@ -10034,7 +10088,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlCommandCommandText", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' cannot be called when the record is read only.. /// @@ -10043,7 +10097,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlRecordReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cannot be completed because the record is read only.. /// @@ -10052,7 +10106,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlRecordReadOnly2", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call method {0} when SqlResultSet is closed.. /// @@ -10061,7 +10115,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cannot be completed because the SqlResultSet is closed.. /// @@ -10070,7 +10124,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetClosed2", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cannot be completed because the command that created the SqlResultSet has been dissociated from the original connection. SqlResultSet is closed.. /// @@ -10079,7 +10133,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetCommandNotInSameConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlResultSet could not be created for the given query with the desired options.. /// @@ -10088,7 +10142,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetNoAcceptableCursor", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call method {0} when the current row is deleted. /// @@ -10097,7 +10151,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetRowDeleted", resourceCulture); } } - + /// /// Looks up a localized string similar to Operation cannot be completed because the current row is deleted. /// @@ -10106,7 +10160,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlResultSetRowDeleted2", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' cannot be called when the SqlDataRecord is read only.. /// @@ -10115,7 +10169,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SqlUpdatableRecordReadOnly", resourceCulture); } } - + /// /// Looks up a localized string similar to The target principal name is incorrect. Cannot generate SSPI context.. /// @@ -10124,7 +10178,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SSPIGenerateError", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot initialize SSPI package.. /// @@ -10133,7 +10187,7 @@ internal class Strings { return ResourceManager.GetString("SQL_SSPIInitializeError", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetStream on column '{0}'. The GetStream function can only be used on columns of type Binary, Image, Udt or VarBinary.. /// @@ -10142,7 +10196,7 @@ internal class Strings { return ResourceManager.GetString("SQL_StreamNotSupportOnColumnType", resourceCulture); } } - + /// /// Looks up a localized string similar to The Stream does not support reading.. /// @@ -10151,7 +10205,7 @@ internal class Strings { return ResourceManager.GetString("SQL_StreamReadNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The Stream does not support seeking.. /// @@ -10160,7 +10214,7 @@ internal class Strings { return ResourceManager.GetString("SQL_StreamSeekNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to The Stream does not support writing.. /// @@ -10169,7 +10223,7 @@ internal class Strings { return ResourceManager.GetString("SQL_StreamWriteNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Processing of results from SQL Server failed because of an invalid multipart name. /// @@ -10178,7 +10232,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TDSParserTableName", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetTextReader on column '{0}'. The GetTextReader function can only be used on columns of type Char, NChar, NText, NVarChar, Text or VarChar.. /// @@ -10187,7 +10241,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TextReaderNotSupportOnColumnType", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.. /// @@ -10196,7 +10250,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout", resourceCulture); } } - + /// /// Looks up a localized string similar to Active Directory Device Code Flow authentication timed out. The user took too long to respond to the authentication request.. /// @@ -10205,7 +10259,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_Active_Directory_DeviceFlow_Authentication", resourceCulture); } } - + /// /// Looks up a localized string similar to Active Directory Interactive authentication timed out. The user took too long to respond to the authentication request.. /// @@ -10214,7 +10268,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_Active_Directory_Interactive_Authentication", resourceCulture); } } - + /// /// Looks up a localized string similar to Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.. /// @@ -10223,7 +10277,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_Execution", resourceCulture); } } - + /// /// Looks up a localized string similar to This failure occurred while attempting to connect to the {0} server.. /// @@ -10232,7 +10286,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_FailoverInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed at the start of the login phase. This could be because of insufficient time provided for connection timeout.. /// @@ -10241,7 +10295,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_Login_Begin", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed while attempting to authenticate the login. This could be because the server failed to authenticate the user or the server was unable to respond back in time.. /// @@ -10250,7 +10304,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_Login_ProcessConnectionAuth", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections.. /// @@ -10259,7 +10313,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PostLogin", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed at the start of the pre-login phase. This could be because of insufficient time provided for connection timeout.. /// @@ -10268,7 +10322,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PreLogin_Begin", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time.. /// @@ -10277,7 +10331,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PreLogin_ConsumeHandshake", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed while attempting to create and initialize a socket to the server. This could be either because the server was unreachable or unable to respond back in time.. /// @@ -10286,7 +10340,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PreLogin_InitializeConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Connection Timeout Expired. The timeout period elapsed while making a pre-login handshake request. This could be because the server was unable to respond back in time.. /// @@ -10295,7 +10349,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_PreLogin_SendHandshake", resourceCulture); } } - + /// /// Looks up a localized string similar to This failure occurred while attempting to connect to the routing destination. The duration spent while attempting to connect to the original server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; [Post-Login] complete={4}; . /// @@ -10304,7 +10358,7 @@ internal class Strings { return ResourceManager.GetString("SQL_Timeout_RoutingDestinationInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDbType.Time overflow. Value '{0}' is out of range. Must be between 00:00:00.0000000 and 23:59:59.9999999.. /// @@ -10313,7 +10367,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TimeOverflow", resourceCulture); } } - + /// /// Looks up a localized string similar to Scale value '{0}' is either less than 0 or greater than the maximum allowed scale of 7.. /// @@ -10322,7 +10376,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TimeScaleValueOutOfRange", resourceCulture); } } - + /// /// Looks up a localized string similar to Too many values.. /// @@ -10331,7 +10385,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TooManyValues", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlParameter.TypeName is an invalid multipart name. /// @@ -10340,7 +10394,7 @@ internal class Strings { return ResourceManager.GetString("SQL_TypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlParameter.UdtTypeName is an invalid multipart name. /// @@ -10349,7 +10403,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UDTTypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected server event: {0}.. /// @@ -10358,7 +10412,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnexpectedSmiEvent", resourceCulture); } } - + /// /// Looks up a localized string similar to Unrecognized System.Transactions.IsolationLevel enumeration value: {0}.. /// @@ -10367,7 +10421,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnknownSysTxIsolationLevel", resourceCulture); } } - + /// /// Looks up a localized string similar to The authentication '{0}' is not supported.. /// @@ -10376,7 +10430,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnsupportedAuthentication", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider '{0}' does not support authentication '{1}'.. /// @@ -10385,7 +10439,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnsupportedAuthenticationByProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Unsupported authentication specified in this context: {0}. /// @@ -10394,7 +10448,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnsupportedAuthenticationSpecified", resourceCulture); } } - + /// /// Looks up a localized string similar to SQL authentication method '{0}' is not supported.. /// @@ -10403,7 +10457,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UnsupportedSqlAuthenticationMethod", resourceCulture); } } - + /// /// Looks up a localized string similar to User Instance and Failover are not compatible options. Please choose only one of the two in the connection string.. /// @@ -10412,7 +10466,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UserInstanceFailoverNotCompatible", resourceCulture); } } - + /// /// Looks up a localized string similar to A user instance was requested in the connection string but the server specified does not support this option.. /// @@ -10421,7 +10475,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UserInstanceFailure", resourceCulture); } } - + /// /// Looks up a localized string similar to User instances are not allowed when running in the Sql Server process.. /// @@ -10430,7 +10484,7 @@ internal class Strings { return ResourceManager.GetString("SQL_UserInstanceNotAvailableInProc", resourceCulture); } } - + /// /// Looks up a localized string similar to Expecting argument of type {1}, but received type {0}.. /// @@ -10439,7 +10493,7 @@ internal class Strings { return ResourceManager.GetString("SQL_WrongType", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to GetXmlReader on column '{0}'. The GetXmlReader function can only be used on columns of type Xml.. /// @@ -10448,7 +10502,7 @@ internal class Strings { return ResourceManager.GetString("SQL_XmlReaderNotSupportOnColumnType", resourceCulture); } } - + /// /// Looks up a localized string similar to Notification values used by Microsoft SQL Server.. /// @@ -10457,7 +10511,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommand_Notification", resourceCulture); } } - + /// /// Looks up a localized string similar to Automatic enlistment in notifications used by Microsoft SQL Server.. /// @@ -10466,7 +10520,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommand_NotificationAutoEnlist", resourceCulture); } } - + /// /// Looks up a localized string similar to The DataAdapter for which to automatically generate SqlCommands. /// @@ -10475,7 +10529,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommandBuilder_DataAdapter", resourceCulture); } } - + /// /// Looks up a localized string similar to The decimal separator used in numeric literals.. /// @@ -10484,7 +10538,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommandBuilder_DecimalSeparator", resourceCulture); } } - + /// /// Looks up a localized string similar to The character used in a text command as the opening quote for quoting identifiers that contain special characters.. /// @@ -10493,7 +10547,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommandBuilder_QuotePrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to The character used in a text command as the closing quote for quoting identifiers that contain special characters.. /// @@ -10502,7 +10556,7 @@ internal class Strings { return ResourceManager.GetString("SqlCommandBuilder_QuoteSuffix", resourceCulture); } } - + /// /// Looks up a localized string similar to Access token to use for authentication.. /// @@ -10511,7 +10565,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_AccessToken", resourceCulture); } } - + /// /// Looks up a localized string similar to State of connection, synchronous or asynchronous. 'Asynchronous Processing=x' in the connection string.. /// @@ -10520,7 +10574,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_Asynchronous", resourceCulture); } } - + /// /// Looks up a localized string similar to A guid to represent the physical connection.. /// @@ -10529,7 +10583,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ClientConnectionId", resourceCulture); } } - + /// /// Looks up a localized string similar to Information used to connect to a DataSource, such as 'Data Source=x;Initial Catalog=x;Integrated Security=SSPI'.. /// @@ -10538,7 +10592,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ConnectionString", resourceCulture); } } - + /// /// Looks up a localized string similar to Current connection timeout value, 'Connect Timeout=X' in the ConnectionString.. /// @@ -10547,7 +10601,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ConnectionTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to User Id and secure password to use for authentication.. /// @@ -10556,7 +10610,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_Credential", resourceCulture); } } - + /// /// Looks up a localized string similar to Custom column encryption key store providers.. /// @@ -10565,7 +10619,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_CustomColumnEncryptionKeyStoreProviders", resourceCulture); } } - + /// /// Looks up a localized string similar to Current SQL Server database, 'Initial Catalog=X' in the connection string.. /// @@ -10574,7 +10628,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_Database", resourceCulture); } } - + /// /// Looks up a localized string similar to Current SqlServer that the connection is opened to, 'Data Source=X' in the connection string.. /// @@ -10583,7 +10637,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_DataSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Network packet size, 'Packet Size=x' in the connection string.. /// @@ -10592,7 +10646,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_PacketSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Information used to connect for replication.. /// @@ -10601,7 +10655,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_Replication", resourceCulture); } } - + /// /// Looks up a localized string similar to Server Process Id (SPID) of the active connection.. /// @@ -10610,7 +10664,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ServerProcessId", resourceCulture); } } - + /// /// Looks up a localized string similar to Version of the SQL Server accessed by the SqlConnection.. /// @@ -10619,7 +10673,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_ServerVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Collect statistics for this connection.. /// @@ -10628,7 +10682,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_StatisticsEnabled", resourceCulture); } } - + /// /// Looks up a localized string similar to Workstation Id, 'Workstation ID=x' in the connection string.. /// @@ -10637,7 +10691,7 @@ internal class Strings { return ResourceManager.GetString("SqlConnection_WorkstationId", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot convert object of type '{0}' to object of type '{1}'.. /// @@ -10646,7 +10700,7 @@ internal class Strings { return ResourceManager.GetString("SqlConvert_ConvertFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection is broken and recovery is not possible. The client driver attempted to recover the connection one or more times and all attempts failed. Increase the value of ConnectRetryCount to increase the number of recovery attempts.. /// @@ -10655,7 +10709,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_AllAttemptsFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to The server did not preserve SSL encryption during a recovery attempt, connection recovery is not possible.. /// @@ -10664,7 +10718,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_EncryptionChanged", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid ConnectRetryCount value (should be 0-255).. /// @@ -10673,7 +10727,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_InvalidConnectRetryCountValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid ConnectRetryInterval value (should be 1-60).. /// @@ -10682,7 +10736,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_InvalidConnectRetryIntervalValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Next reconnection attempt will exceed query timeout. Reconnection was terminated.. /// @@ -10691,7 +10745,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_NextAttemptWillExceedQueryTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to The server did not acknowledge a recovery attempt, connection recovery is not possible.. /// @@ -10700,7 +10754,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_NoCRAckAtReconnection", resourceCulture); } } - + /// /// Looks up a localized string similar to The server did not preserve the exact client TDS version requested during a recovery attempt, connection recovery is not possible.. /// @@ -10709,7 +10763,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_TDSVestionNotPreserved", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.. /// @@ -10718,7 +10772,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_UnrecoverableClient", resourceCulture); } } - + /// /// Looks up a localized string similar to The connection is broken and recovery is not possible. The connection is marked by the server as unrecoverable. No attempt was made to restore the connection.. /// @@ -10727,7 +10781,7 @@ internal class Strings { return ResourceManager.GetString("SQLCR_UnrecoverableServer", resourceCulture); } } - + /// /// Looks up a localized string similar to Failure while attempting to promote transaction.. /// @@ -10736,7 +10790,7 @@ internal class Strings { return ResourceManager.GetString("SqlDelegatedTransaction_PromotionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to To add a command to existing dependency object.. /// @@ -10745,7 +10799,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_AddCommandDependency", resourceCulture); } } - + /// /// Looks up a localized string similar to The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported. Please enable the Service Broker for this database if you wish to use notifications.. /// @@ -10754,7 +10808,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_DatabaseBrokerDisabled", resourceCulture); } } - + /// /// Looks up a localized string similar to When using SqlDependency without providing an options value, SqlDependency.Start() must be called prior to execution of a command added to the SqlDependency instance.. /// @@ -10763,7 +10817,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_DefaultOptionsButNoStart", resourceCulture); } } - + /// /// Looks up a localized string similar to Command is already associated with another dependency object. Can not overwrite.. /// @@ -10772,7 +10826,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_Duplicate", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDependency does not support calling Start() with different connection strings having the same server, user, and database in the same app domain.. /// @@ -10781,7 +10835,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_DuplicateStart", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDependency.OnChange does not support multiple event registrations for the same delegate.. /// @@ -10790,7 +10844,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_EventNoDuplicate", resourceCulture); } } - + /// /// Looks up a localized string similar to Property to indicate if this dependency is invalid.. /// @@ -10799,7 +10853,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_HasChanges", resourceCulture); } } - + /// /// Looks up a localized string similar to A string that uniquely identifies this dependency object.. /// @@ -10808,7 +10862,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_Id", resourceCulture); } } - + /// /// Looks up a localized string similar to No SqlDependency exists for the key.. /// @@ -10817,7 +10871,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_IdMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Timeout specified is invalid. Timeout cannot be < 0.. /// @@ -10826,7 +10880,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_InvalidTimeout", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDependency.Start has been called for the server the command is executing against more than once, but there is no matching server/user/database Start() call for current command.. /// @@ -10835,7 +10889,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_NoMatchingServerDatabaseStart", resourceCulture); } } - + /// /// Looks up a localized string similar to When using SqlDependency without providing an options value, SqlDependency.Start() must be called for each server that is being executed against.. /// @@ -10844,7 +10898,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_NoMatchingServerStart", resourceCulture); } } - + /// /// Looks up a localized string similar to Event that can be used to subscribe for change notifications.. /// @@ -10853,7 +10907,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_OnChange", resourceCulture); } } - + /// /// Looks up a localized string similar to Dependency object used to receive query notifications.. /// @@ -10862,7 +10916,7 @@ internal class Strings { return ResourceManager.GetString("SqlDependency_SqlDependency", resourceCulture); } } - + /// /// Looks up a localized string similar to The process cannot access the file specified because it has been opened in another transaction.. /// @@ -10871,7 +10925,7 @@ internal class Strings { return ResourceManager.GetString("SqlFileStream_FileAlreadyInTransaction", resourceCulture); } } - + /// /// Looks up a localized string similar to An invalid parameter was passed to the function.. /// @@ -10880,7 +10934,7 @@ internal class Strings { return ResourceManager.GetString("SqlFileStream_InvalidParameter", resourceCulture); } } - + /// /// Looks up a localized string similar to The path name is not valid.. /// @@ -10889,7 +10943,7 @@ internal class Strings { return ResourceManager.GetString("SqlFileStream_InvalidPath", resourceCulture); } } - + /// /// Looks up a localized string similar to The path name is invalid or does not point to a disk file.. /// @@ -10898,7 +10952,7 @@ internal class Strings { return ResourceManager.GetString("SqlFileStream_PathNotValidDiskResource", resourceCulture); } } - + /// /// Looks up a localized string similar to The dbType {0} is invalid for this constructor.. /// @@ -10907,7 +10961,7 @@ internal class Strings { return ResourceManager.GetString("SqlMetaData_InvalidSqlDbTypeForConstructorFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to The name is too long.. /// @@ -10916,7 +10970,7 @@ internal class Strings { return ResourceManager.GetString("SqlMetaData_NameTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to GetMetaData is not valid for this SqlDbType.. /// @@ -10925,7 +10979,7 @@ internal class Strings { return ResourceManager.GetString("SqlMetaData_NoMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to The sort order and ordinal must either both be specified, or neither should be specified (SortOrder.Unspecified and -1). The values given were: order = {0}, ordinal = {1}.. /// @@ -10934,7 +10988,7 @@ internal class Strings { return ResourceManager.GetString("SqlMetaData_SpecifyBothSortOrderAndOrdinal", resourceCulture); } } - + /// /// Looks up a localized string similar to SQL Type has already been loaded with data.. /// @@ -10943,7 +10997,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_AlreadyFilledMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Arithmetic Overflow.. /// @@ -10952,7 +11006,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_ArithOverflowMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The buffer is insufficient. Read or write operation failed.. /// @@ -10961,7 +11015,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_BufferInsufficientMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to access a closed XmlReader.. /// @@ -10970,7 +11024,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_ClosedXmlReaderMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Two strings to be compared have different collation.. /// @@ -10979,7 +11033,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_CompareDiffCollationMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Two strings to be concatenated have different collation.. /// @@ -10988,7 +11042,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_ConcatDiffCollationMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion overflows.. /// @@ -10997,7 +11051,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_ConversionOverflowMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.. /// @@ -11006,7 +11060,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_DateTimeOverflowMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Divide by zero error encountered.. /// @@ -11015,7 +11069,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_DivideByZeroMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The input wasn't in a correct format.. /// @@ -11024,7 +11078,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_FormatMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid array size.. /// @@ -11033,7 +11087,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidArraySizeMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid SqlDateTime.. /// @@ -11042,7 +11096,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidDateTimeMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Argument to GetDayOfWeek must be integer between 1 and 7.. /// @@ -11051,7 +11105,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidFirstDayMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid flag value.. /// @@ -11060,7 +11114,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidFlagMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when the stream is closed.. /// @@ -11069,7 +11123,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidOpStreamClosed", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when the stream non-readable.. /// @@ -11078,7 +11132,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidOpStreamNonReadable", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when the stream is non-seekable.. /// @@ -11087,7 +11141,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidOpStreamNonSeekable", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attempt to call {0} when the stream non-writable.. /// @@ -11096,7 +11150,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidOpStreamNonWritable", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid numeric precision/scale.. /// @@ -11105,7 +11159,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_InvalidPrecScaleMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to The SqlBytes and SqlChars don't support length of more than 2GB in this version.. /// @@ -11114,7 +11168,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_LenTooLargeMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Message. /// @@ -11123,7 +11177,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_MessageString", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no buffer. Read or write operation failed.. /// @@ -11132,7 +11186,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NoBufferMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to SQL Type has not been loaded with data.. /// @@ -11141,7 +11195,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NotFilledMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Null. /// @@ -11150,7 +11204,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NullString", resourceCulture); } } - + /// /// Looks up a localized string similar to Data is Null. This method or property cannot be called on Null values.. /// @@ -11159,7 +11213,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NullValueMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion from SqlDecimal to Decimal overflows.. /// @@ -11168,7 +11222,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_NumeToDecOverflowMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set to non-zero length, because current value is Null.. /// @@ -11177,7 +11231,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_SetNonZeroLenOnNullMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlType error.. /// @@ -11186,7 +11240,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_SqlTypeMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Stream has been closed or disposed.. /// @@ -11195,7 +11249,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_StreamClosedMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred while reading.. /// @@ -11204,7 +11258,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_StreamErrorMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Subclass did not override a required method.. /// @@ -11213,7 +11267,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_SubclassMustOverride", resourceCulture); } } - + /// /// Looks up a localized string similar to A time zone was specified. SqlDateTime does not support time zones.. /// @@ -11222,7 +11276,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_TimeZoneSpecifiedMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Data returned is larger than 2Gb in size. Use SequentialAccess command behavior in order to get all of the data.. /// @@ -11231,7 +11285,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_TruncationMaxDataMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Numeric arithmetic causes truncation.. /// @@ -11240,7 +11294,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_TruncationMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot write to non-zero offset, because current value is Null.. /// @@ -11249,7 +11303,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_WriteNonZeroOffsetOnNullMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot write from an offset that is larger than current length. It would leave uninitialized data in the buffer.. /// @@ -11258,7 +11312,7 @@ internal class Strings { return ResourceManager.GetString("SqlMisc_WriteOffsetLargerThanLenMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting to a mirrored SQL Server instance using the MultiSubnetFailover connection option is not supported.. /// @@ -11267,7 +11321,7 @@ internal class Strings { return ResourceManager.GetString("SQLMSF_FailoverPartnerNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to This SqlCommand object is already associated with another SqlDependency object.. /// @@ -11276,7 +11330,7 @@ internal class Strings { return ResourceManager.GetString("SQLNotify_AlreadyHasCommand", resourceCulture); } } - + /// /// Looks up a localized string similar to Notification Error. Type={0}, Info={1}, Source={2}.. /// @@ -11285,7 +11339,7 @@ internal class Strings { return ResourceManager.GetString("SQLNotify_ErrorFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlDependency object cannot be created when running inside the SQL Server process.. /// @@ -11294,7 +11348,7 @@ internal class Strings { return ResourceManager.GetString("SqlNotify_SqlDepCannotBeCreatedInProc", resourceCulture); } } - + /// /// Looks up a localized string similar to DBNull value for parameter '{0}' is not supported. Table-valued parameters cannot be DBNull.. /// @@ -11303,7 +11357,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_DBNullNotSupportedForTVP", resourceCulture); } } - + /// /// Looks up a localized string similar to Precision '{0}' required to send all values in column '{1}' exceeds the maximum supported precision '{2}'. The values must all fit in a single precision.. /// @@ -11312,7 +11366,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_InvalidTableDerivedPrecisionForTvp", resourceCulture); } } - + /// /// Looks up a localized string similar to Offset in variable length data types.. /// @@ -11321,7 +11375,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_Offset", resourceCulture); } } - + /// /// Looks up a localized string similar to Name of the parameter, like '@p1'. /// @@ -11330,7 +11384,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_ParameterName", resourceCulture); } } - + /// /// Looks up a localized string similar to The parameter native type.. /// @@ -11339,7 +11393,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_SqlDbType", resourceCulture); } } - + /// /// Looks up a localized string similar to The server's name for the type.. /// @@ -11348,7 +11402,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_TypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to TypeName specified for parameter '{0}'. TypeName must only be set for Structured parameters.. /// @@ -11357,7 +11411,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_UnexpectedTypeNameForNonStruct", resourceCulture); } } - + /// /// Looks up a localized string similar to ParameterDirection '{0}' specified for parameter '{1}' is not supported. Table-valued parameters only support ParameterDirection.Input.. /// @@ -11366,7 +11420,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_UnsupportedTVPOutputParameter", resourceCulture); } } - + /// /// Looks up a localized string similar to XmlSchemaCollectionDatabase. /// @@ -11375,7 +11429,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_XmlSchemaCollectionDatabase", resourceCulture); } } - + /// /// Looks up a localized string similar to XmlSchemaCollectionName. /// @@ -11384,7 +11438,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_XmlSchemaCollectionName", resourceCulture); } } - + /// /// Looks up a localized string similar to XmlSchemaCollectionOwningSchema. /// @@ -11393,7 +11447,7 @@ internal class Strings { return ResourceManager.GetString("SqlParameter_XmlSchemaCollectionOwningSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to A result set is currently being sent to the pipe. End the current result set before calling {0}.. /// @@ -11402,7 +11456,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_AlreadyHasAnOpenResultSet", resourceCulture); } } - + /// /// Looks up a localized string similar to SqlPipe does not support executing a command with a connection that is not a context connection.. /// @@ -11411,7 +11465,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_CommandHookedUpToNonContextConnection", resourceCulture); } } - + /// /// Looks up a localized string similar to Result set has not been initiated. Call SendResultSetStart before calling {0}.. /// @@ -11420,7 +11474,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_DoesNotHaveAnOpenResultSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not use the pipe while it is busy with another operation.. /// @@ -11429,7 +11483,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_IsBusy", resourceCulture); } } - + /// /// Looks up a localized string similar to Message length {0} exceeds maximum length supported of 4000.. /// @@ -11438,7 +11492,7 @@ internal class Strings { return ResourceManager.GetString("SqlPipe_MessageTooLong", resourceCulture); } } - + /// /// Looks up a localized string similar to The sort ordinal {0} was specified twice.. /// @@ -11447,7 +11501,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_DuplicateSortOrdinal", resourceCulture); } } - + /// /// Looks up a localized string similar to The size of column '{0}' is not supported. The size is {1}.. /// @@ -11456,7 +11510,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_InvalidDataColumnMaxLength", resourceCulture); } } - + /// /// Looks up a localized string similar to The type of column '{0}' is not supported. The type is '{1}'. /// @@ -11465,7 +11519,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_InvalidDataColumnType", resourceCulture); } } - + /// /// Looks up a localized string similar to The sort ordinal {0} was not specified.. /// @@ -11474,7 +11528,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_MissingSortOrdinal", resourceCulture); } } - + /// /// Looks up a localized string similar to There are not enough fields in the Structured type. Structured types must have at least one field.. /// @@ -11483,7 +11537,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_NotEnoughColumnsInStructuredType", resourceCulture); } } - + /// /// Looks up a localized string similar to The sort ordinal {0} on field {1} exceeds the total number of fields.. /// @@ -11492,7 +11546,7 @@ internal class Strings { return ResourceManager.GetString("SqlProvider_SortOrdinalGreaterThanFieldCount", resourceCulture); } } - + /// /// Looks up a localized string similar to Connecting to a mirrored SQL Server instance using the ApplicationIntent ReadOnly connection option is not supported.. /// @@ -11501,7 +11555,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_FailoverNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid routing information received.. /// @@ -11510,7 +11564,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_InvalidRoutingInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Two or more redirections have occurred. Only one redirection per login is allowed.. /// @@ -11519,7 +11573,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_RecursiveRoutingNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Server provided routing information, but timeout already expired.. /// @@ -11528,7 +11582,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_TimeoutAfterRoutingInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Unexpected routing information received.. /// @@ -11537,7 +11591,7 @@ internal class Strings { return ResourceManager.GetString("SQLROR_UnexpectedRoutingInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Structured, multiple-valued types can only be used for parameters, and cannot be nested within another type.. /// @@ -11546,7 +11600,7 @@ internal class Strings { return ResourceManager.GetString("SQLTVP_TableTypeCanOnlyBeParameter", resourceCulture); } } - + /// /// Looks up a localized string similar to The provider has failed to load the following assembly: {0}. /// @@ -11555,7 +11609,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_CantLoadAssembly", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to get Type Info for {0},{1}. /// @@ -11564,7 +11618,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InvalidDbId", resourceCulture); } } - + /// /// Looks up a localized string similar to UDT size must be less than {1}, size: {0}. /// @@ -11573,7 +11627,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InvalidSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified type is not registered on the target server.{0}.. /// @@ -11582,7 +11636,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InvalidSqlType", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' is an invalid user defined type, reason: {1}.. /// @@ -11591,7 +11645,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdt_InvalidUdtMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to UdtTypeName property must be set for UDT parameters.. /// @@ -11600,7 +11654,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InvalidUdtTypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to UDT parameters not permitted in the where clause unless part of the primary key.. /// @@ -11609,7 +11663,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_InWhereClause", resourceCulture); } } - + /// /// Looks up a localized string similar to range: 0-8000. /// @@ -11618,7 +11672,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_MaxByteSizeValue", resourceCulture); } } - + /// /// Looks up a localized string similar to unexpected error encountered in SqlClient data provider. {0}. /// @@ -11627,7 +11681,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_Unexpected", resourceCulture); } } - + /// /// Looks up a localized string similar to UdtTypeName property must be set only for UDT parameters.. /// @@ -11636,7 +11690,7 @@ internal class Strings { return ResourceManager.GetString("SQLUDT_UnexpectedUdtTypeName", resourceCulture); } } - + /// /// Looks up a localized string similar to Native format can't be supported.. /// @@ -11645,7 +11699,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_CannotSupportNative", resourceCulture); } } - + /// /// Looks up a localized string similar to does not implement IBinarySerialize. /// @@ -11654,7 +11708,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_CannotSupportUserDefined", resourceCulture); } } - + /// /// Looks up a localized string similar to Serialization without mapping is not yet supported.. /// @@ -11663,7 +11717,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_MaplessNotYetSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to supports both in-memory and user-defined formats. /// @@ -11672,7 +11726,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_MultipleSerFormats", resourceCulture); } } - + /// /// Looks up a localized string similar to Multiple valued assembly references must have a nonzero Assembly Id.. /// @@ -11681,7 +11735,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_MultivaluedAssemblyId", resourceCulture); } } - + /// /// Looks up a localized string similar to The type of field '{0}' is marked as explicit layout which is not allowed in Native format. /// @@ -11690,7 +11744,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NativeFormatExplictLayoutNotAllowed", resourceCulture); } } - + /// /// Looks up a localized string similar to Native format does not support fields (directly or through another field) of type '{0}'. /// @@ -11699,7 +11753,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NativeFormatNoFieldSupport", resourceCulture); } } - + /// /// Looks up a localized string similar to Native UDT specifies a max byte size. /// @@ -11708,7 +11762,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NativeUdtMaxByteSize", resourceCulture); } } - + /// /// Looks up a localized string similar to Native UDT not sequential layout due to type '{0}'. /// @@ -11717,7 +11771,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NativeUdtNotSequentialLayout", resourceCulture); } } - + /// /// Looks up a localized string similar to field '{0}' is marked non-serialized. /// @@ -11726,7 +11780,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NonSerializableField", resourceCulture); } } - + /// /// Looks up a localized string similar to does not have a public constructor. /// @@ -11735,7 +11789,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NoPublicConstructor", resourceCulture); } } - + /// /// Looks up a localized string similar to no public constructors. /// @@ -11744,7 +11798,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NoPublicConstructors", resourceCulture); } } - + /// /// Looks up a localized string similar to does not implement INullable. /// @@ -11753,7 +11807,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NotNullable", resourceCulture); } } - + /// /// Looks up a localized string similar to not serializable. /// @@ -11762,7 +11816,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NotSerializable", resourceCulture); } } - + /// /// Looks up a localized string similar to no UDT attribute. /// @@ -11771,7 +11825,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NoUdtAttribute", resourceCulture); } } - + /// /// Looks up a localized string similar to 'public static x Null { get; }' method is missing. /// @@ -11780,7 +11834,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_NullPropertyMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to 'public static x Parse(System.Data.SqlTypes.SqlString)' method is missing. /// @@ -11789,7 +11843,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_ParseMethodMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to 'public override string ToString()' method is missing. /// @@ -11798,7 +11852,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_ToStringMethodMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Type is not public. /// @@ -11807,7 +11861,7 @@ internal class Strings { return ResourceManager.GetString("SqlUdtReason_TypeNotPublic", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot get value because it is DBNull.. /// @@ -11816,7 +11870,7 @@ internal class Strings { return ResourceManager.GetString("StrongTyping_CananotAccessDBNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove relation since it is built in to this dataSet.. /// @@ -11825,7 +11879,7 @@ internal class Strings { return ResourceManager.GetString("StrongTyping_CananotRemoveRelation", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot remove column since it is built in to this dataSet.. /// @@ -11834,7 +11888,7 @@ internal class Strings { return ResourceManager.GetString("StrongTyping_CannotRemoveColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Attestation information was not returned by SQL Server. Enclave type is '{0}' and enclave attestation URL is '{1}'.. /// @@ -11843,7 +11897,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationInfoNotReturnedFromSQLServer", resourceCulture); } } - + /// /// Looks up a localized string similar to Error occurred when generating enclave package. Attestation Protocol has not been specified in the connection string, but the query requires enclave computations.. /// @@ -11852,7 +11906,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationProtocolNotSpecifiedForGeneratingEnclavePackage", resourceCulture); } } - + /// /// Looks up a localized string similar to You have specified the attestation protocol in the connection string, but the SQL Server instance in use does not support enclave based computations.. /// @@ -11861,7 +11915,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationProtocolNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to initialize connection. The attestation protocol '{0}' does not support the enclave type '{1}'.. /// @@ -11870,7 +11924,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationProtocolNotSupportEnclaveType", resourceCulture); } } - + /// /// Looks up a localized string similar to You have specified the enclave attestation URL in the connection string, but the SQL Server instance in use does not support enclave based computations.. /// @@ -11879,7 +11933,7 @@ internal class Strings { return ResourceManager.GetString("TCE_AttestationURLNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} should be identical on all commands ({1}, {2}, {3}, {4}) when doing batch updates.. /// @@ -11888,7 +11942,7 @@ internal class Strings { return ResourceManager.GetString("TCE_BatchedUpdateColumnEncryptionSettingMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to instantiate an enclave provider with type '{1}' for name '{0}'. Error message: {2} . /// @@ -11897,7 +11951,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CannotCreateSqlColumnEncryptionEnclaveProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to read the configuration section for enclave providers. Make sure the section is correctly formatted in your application configuration file. Error Message: {0}. /// @@ -11906,7 +11960,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CannotGetSqlColumnEncryptionEnclaveProviderConfig", resourceCulture); } } - + /// /// Looks up a localized string similar to Key store providers cannot be set more than once.. /// @@ -11915,7 +11969,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CanOnlyCallOnce", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate with thumbprint '{0}' not found in certificate store '{1}' in certificate location '{2}'.. /// @@ -11924,7 +11978,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CertificateNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate with thumbprint '{0}' not found in certificate store '{1}' in certificate location '{2}'. Verify the certificate path in the column master key definition in the database is correct, and the certificate has been imported correctly into the certificate location/store.. /// @@ -11933,7 +11987,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CertificateNotFoundSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate specified in key path '{0}' does not have a private key to encrypt a column encryption key. Verify the certificate is imported correctly.. /// @@ -11942,7 +11996,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CertificateWithNoPrivateKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate specified in key path '{0}' does not have a private key to decrypt a column encryption key. Verify the certificate is imported correctly.. /// @@ -11951,7 +12005,7 @@ internal class Strings { return ResourceManager.GetString("TCE_CertificateWithNoPrivateKeySysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt column '{0}'.. /// @@ -11960,7 +12014,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ColumnDecryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Encrypted column encryption keys not found when trying to send the keys to the enclave.. /// @@ -11969,7 +12023,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ColumnEncryptionKeysNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. The signature returned by SQL Server for enclave-enabled column master key, specified at key path '{0}', cannot be null or empty.. /// @@ -11978,7 +12032,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ColumnMasterKeySignatureNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to The signature returned by SQL Server for the column master key, specified in key path '{0}', is invalid (does not match the computed signature). Recreate column master key metadata, making sure the signature inside the metadata is computed using the column master key being referenced in the metadata. If the error persists, please contact Microsoft for assistance.. /// @@ -11987,7 +12041,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ColumnMasterKeySignatureVerificationFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Specifies an attestation protocol for its corresponding enclave attestation service.. /// @@ -11996,7 +12050,7 @@ internal class Strings { return ResourceManager.GetString("TCE_DbConnectionString_AttestationProtocol", resourceCulture); } } - + /// /// Looks up a localized string similar to Default column encryption setting for all the commands on the connection.. /// @@ -12005,7 +12059,7 @@ internal class Strings { return ResourceManager.GetString("TCE_DbConnectionString_ColumnEncryptionSetting", resourceCulture); } } - + /// /// Looks up a localized string similar to Specifies an endpoint of an enclave attestation service, which will be used to verify whether the enclave, configured in the SQL Server instance for computations on database columns encrypted using Always Encrypted, is valid and secure.. /// @@ -12014,7 +12068,7 @@ internal class Strings { return ResourceManager.GetString("TCE_DbConnectionString_EnclaveAttestationUrl", resourceCulture); } } - + /// /// Looks up a localized string similar to Decryption failed. The last 10 bytes of the encrypted column encryption key are: '{0}'. The first 10 bytes of ciphertext are: '{1}'.. /// @@ -12023,7 +12077,7 @@ internal class Strings { return ResourceManager.GetString("TCE_DecryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Empty argument '{0}' specified when constructing an object of type '{1}'. '{0}' cannot be empty.. /// @@ -12032,7 +12086,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyArgumentInConstructorInternal", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Argument '{0}' cannot be empty when executing method '{1}.{2}'.. /// @@ -12041,7 +12095,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyArgumentInternal", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty certificate thumbprint specified in certificate path '{0}'.. /// @@ -12050,7 +12104,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCertificateThumbprint", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty certificate thumbprint specified in certificate path '{0}'.. /// @@ -12059,7 +12113,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCertificateThumbprintSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty key identifier specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12068,7 +12122,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCngKeyId", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty key identifier specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12077,7 +12131,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCngKeyIdSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty Microsoft Cryptography API: Next Generation (CNG) provider name specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12086,7 +12140,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCngName", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty Microsoft Cryptography API: Next Generation (CNG) provider name specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12095,7 +12149,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCngNameSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty column encryption key specified.. /// @@ -12104,7 +12158,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyColumnEncryptionKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty key identifier specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12113,7 +12167,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCspKeyId", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty key identifier specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12122,7 +12176,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCspKeyIdSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Empty Microsoft cryptographic service provider (CSP) name specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12131,7 +12185,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCspName", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty Microsoft cryptographic service provider (CSP) name specified in column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12140,7 +12194,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyCspNameSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Empty encrypted column encryption key specified.. /// @@ -12149,7 +12203,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyEncryptedColumnEncryptionKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key store provider name specified. Key store provider names cannot be null or empty.. /// @@ -12158,7 +12212,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EmptyProviderName", resourceCulture); } } - + /// /// Looks up a localized string similar to You have specified the enclave attestation URL and attestation protocol in the connection string, but the SQL Server instance in use does not support enclave based computations.. /// @@ -12167,7 +12221,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveComputationsNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to No enclave provider found for enclave type '{0}' and attestation protocol '{1}'. Please specify the correct attestation protocol in the connection string. . /// @@ -12176,7 +12230,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveProviderNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Executing a query requires enclave computations, but the application configuration is missing the enclave provider section.. /// @@ -12185,7 +12239,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveProvidersNotConfiguredForEnclaveBasedQuery", resourceCulture); } } - + /// /// Looks up a localized string similar to You have specified the enclave attestation URL in the connection string, but the SQL Server instance did not return an enclave type. Please make sure the enclave type is correctly configured in your instance.. /// @@ -12194,7 +12248,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveTypeNotReturned", resourceCulture); } } - + /// /// Looks up a localized string similar to The enclave type '{0}' returned from the server is not supported.. /// @@ -12203,7 +12257,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveTypeNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Enclave type received from SQL Server is null or empty when executing a query requiring enclave computations.. /// @@ -12212,7 +12266,7 @@ internal class Strings { return ResourceManager.GetString("TCE_EnclaveTypeNullForEnclaveBasedQuery", resourceCulture); } } - + /// /// Looks up a localized string similar to Error encountered while generating package to be sent to enclave. Error message: {0}. /// @@ -12221,7 +12275,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ExceptionWhenGeneratingEnclavePackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Failed to encrypt byte package to be sent to the enclave. Error Message: {0} . /// @@ -12230,7 +12284,7 @@ internal class Strings { return ResourceManager.GetString("TCE_FailedToEncryptRegisterRulesBytePackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. The buffer specified by argument '{0}' for method '{1}.{2}' has insufficient space.. /// @@ -12239,7 +12293,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InsufficientBuffer", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified ciphertext's encryption algorithm version '{0}' does not match the expected encryption algorithm version '{1}'.. /// @@ -12248,7 +12302,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidAlgorithmVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified encrypted column encryption key contains an invalid encryption algorithm version '{0}'. Expected version is '{1}'.. /// @@ -12257,7 +12311,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidAlgorithmVersionInEncryptedCEK", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid attestation parameters specified by the enclave provider for enclave type '{0}'. Error occurred when converting the value '{1}' of parameter '{2}' to unsigned int. Error Message: {3}. /// @@ -12266,7 +12320,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidAttestationParameterUnableToConvertToUnsignedInt", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified ciphertext has an invalid authentication tag.. /// @@ -12275,7 +12329,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidAuthenticationTag", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid certificate location '{0}' in certificate path '{1}'. Use the following format: <certificate location>{4}<certificate store>{4}<certificate thumbprint>, where <certificate location> is either '{2}' or '{3}'.. /// @@ -12284,7 +12338,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateLocation", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid certificate location '{0}' in certificate path '{1}'. Use the following format: <certificate location>{4}<certificate store>{4}<certificate thumbprint>, where <certificate location> is either '{2}' or '{3}'.. /// @@ -12293,7 +12347,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateLocationSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid certificate path: '{0}'. Use the following format: <certificate location>{3}<certificate store>{3}<certificate thumbprint>, where <certificate location> is either '{1}' or '{2}'.. /// @@ -12302,7 +12356,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificatePath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid certificate path: '{0}'. Use the following format: <certificate location>{3}<certificate store>{3}<certificate thumbprint>, where <certificate location> is either '{1}' or '{2}'.. /// @@ -12311,7 +12365,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificatePathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key signature does not match the signature computed with the column master key (certificate) in '{0}'. The encrypted column encryption key may be corrupt, or the specified path may be incorrect.. /// @@ -12320,7 +12374,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateSignature", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid certificate store '{0}' specified in certificate path '{1}'. Expected value: '{2}'.. /// @@ -12329,7 +12383,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateStore", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid certificate store '{0}' specified in certificate path '{1}'. Expected value: '{2}'.. /// @@ -12338,7 +12392,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCertificateStoreSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's ciphertext length: {0} does not match the ciphertext length: {1} when using column master key (certificate) in '{2}'. The encrypted column encryption key may be corrupt, or the specified certificate path may be incorrect.. /// @@ -12347,7 +12401,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCiphertextLengthInEncryptedCEK", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's ciphertext length: {0} does not match the ciphertext length: {1} when using column master key (asymmetric key) in '{2}'. The encrypted column encryption key may be corrupt, or the specified Microsoft Cryptography API: Next Generation (CNG) provider path may be incorrect.. /// @@ -12356,7 +12410,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCiphertextLengthInEncryptedCEKCng", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's ciphertext length: {0} does not match the ciphertext length: {1} when using column master key (asymmetric key) in '{2}'. The encrypted column encryption key may be corrupt, or the specified Microsoft Cryptographic Service provider (CSP) path may be incorrect.. /// @@ -12365,7 +12419,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCiphertextLengthInEncryptedCEKCsp", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified ciphertext has an invalid size of {0} bytes, which is below the minimum {1} bytes required for decryption.. /// @@ -12374,7 +12428,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCipherTextSize", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred while opening the Microsoft Cryptography API: Next Generation (CNG) key: '{0}'. Verify that the CNG provider name '{1}' is valid, installed on the machine, and the key '{2}' exists.. /// @@ -12383,7 +12437,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCngKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. An error occurred while opening the Microsoft Cryptography API: Next Generation (CNG) key: '{0}'. Verify that the CNG provider name '{1}' is valid, installed on the machine, and the key '{2}' exists.. /// @@ -12392,7 +12446,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCngKeySysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12401,7 +12455,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCngPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid column master key path: '{0}'. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{1}<Key Identifier>.. /// @@ -12410,7 +12464,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCngPathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key identifier: '{0}'. Verify that the key identifier in column master key path: '{1}' is valid and exists in the CSP.. /// @@ -12419,7 +12473,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspKeyId", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid key identifier: '{0}'. Verify that the key identifier in column master key path: '{1}' is valid and exists in the CSP.. /// @@ -12428,7 +12482,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspKeyIdSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Microsoft cryptographic service provider (CSP) name: '{0}'. Verify that the CSP provider name in column master key path: '{1}' is valid and installed on the machine.. /// @@ -12437,7 +12491,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspName", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid Microsoft cryptographic service provider (CSP) name: '{0}'. Verify that the CSP provider name in column master key path: '{1}' is valid and installed on the machine.. /// @@ -12446,7 +12500,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspNameSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12455,7 +12509,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid column master key path: '{0}'. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{1}<Key Identifier>.. /// @@ -12464,7 +12518,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCspPathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key store provider name '{0}'. '{1}' prefix is reserved for system key store providers.. /// @@ -12473,7 +12527,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidCustomKeyStoreProviderName", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. The given database id '{0}' is not valid. Error occurred when converting the database id to unsigned int. Error Message: {1}. /// @@ -12482,7 +12536,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidDatabaseIdUnableToCastToUnsignedInt", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Error occurred when populating enclave metadata. The referenced column encryption key ordinal '{0}' is missing in the encryption metadata returned by SQL Server. Max ordinal is '{1}'. . /// @@ -12491,7 +12545,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidEncryptionKeyOrdinalEnclaveMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Error occurred when populating parameter metadata. The referenced column encryption key ordinal '{0}' is missing in the encryption metadata returned by SQL Server. Max ordinal is '{1}'. . /// @@ -12500,7 +12554,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidEncryptionKeyOrdinalParameterMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption type '{1}' specified for the column in the database is either invalid or corrupted. Valid encryption types for algorithm '{0}' are: {2}.. /// @@ -12509,7 +12563,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidEncryptionType", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key encryption algorithm specified: '{0}'. Expected value: '{1}'.. /// @@ -12518,7 +12572,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeyEncryptionAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Invalid key encryption algorithm specified: '{0}'. Expected value: '{1}'.. /// @@ -12527,7 +12581,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeyEncryptionAlgorithmSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. The given key id '{0}' is not valid. Error occurred when converting the key id to unsigned short. Error Message: {1}. /// @@ -12536,7 +12590,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeyIdUnableToCastToUnsignedShort", resourceCulture); } } - + /// /// Looks up a localized string similar to The column encryption key has been successfully decrypted but it's length: {1} does not match the length: {2} for algorithm '{0}'. Verify the encrypted value of the column encryption key in the database.. /// @@ -12545,7 +12599,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeySize", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key store provider name: '{0}'. A key store provider name must denote either a system key store provider or a registered custom key store provider. Valid system key store provider names are: {1}. Valid (currently registered) custom key store provider names are: {2}. Please verify key store provider information in column master key definitions in the database, and verify all custom key store providers used in your application are registered properly.. /// @@ -12554,7 +12608,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidKeyStoreProviderName", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key signature does not match the signature computed with the column master key (asymmetric key) in '{0}'. The encrypted column encryption key may be corrupt, or the specified path may be incorrect.. /// @@ -12563,7 +12617,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidSignature", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's signature length: {0} does not match the signature length: {1} when using column master key (certificate) in '{2}'. The encrypted column encryption key may be corrupt, or the specified certificate path may be incorrect.. /// @@ -12572,7 +12626,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidSignatureInEncryptedCEK", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's signature length: {0} does not match the signature length: {1} when using column master key (asymmetric key) in '{2}'. The encrypted column encryption key may be corrupt, or the specified Microsoft Cryptography API: Next Generation (CNG) provider path may be incorrect.. /// @@ -12581,7 +12635,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidSignatureInEncryptedCEKCng", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified encrypted column encryption key's signature length: {0} does not match the signature length: {1} when using column master key (asymmetric key) in '{2}'. The encrypted column encryption key may be corrupt, or the specified Microsoft cryptographic service provider (CSP) path may be incorrect.. /// @@ -12590,7 +12644,7 @@ internal class Strings { return ResourceManager.GetString("TCE_InvalidSignatureInEncryptedCEKCsp", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt a column encryption key using key store provider: '{0}'. Verify the properties of the column encryption key and its column master key in your database. The last 10 bytes of the encrypted column encryption key are: '{1}'.. /// @@ -12599,7 +12653,7 @@ internal class Strings { return ResourceManager.GetString("TCE_KeyDecryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt a column encryption key using key store provider: '{0}'. The last 10 bytes of the encrypted column encryption key are: '{1}'.. /// @@ -12608,7 +12662,7 @@ internal class Strings { return ResourceManager.GetString("TCE_KeyDecryptionFailedCertStore", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified certificate path has {0} bytes, which exceeds maximum length of {1} bytes.. /// @@ -12617,7 +12671,7 @@ internal class Strings { return ResourceManager.GetString("TCE_LargeCertificatePathLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Specified certificate path has {0} bytes, which exceeds maximum length of {1} bytes.. /// @@ -12626,7 +12680,7 @@ internal class Strings { return ResourceManager.GetString("TCE_LargeCertificatePathLengthSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Error occurred when parsing the results of '{0}'. The attestation information resultset is expected to contain only one row, but it contains multiple rows.. /// @@ -12635,7 +12689,7 @@ internal class Strings { return ResourceManager.GetString("TCE_MultipleRowsReturnedForAttestationInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Error occurred when generating enclave package. Attestation URL has not been specified in the connection string, but the query requires enclave computations. Enclave type is '{0}'. . /// @@ -12644,7 +12698,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NoAttestationUrlSpecifiedForEnclaveBasedQueryGeneratingEnclavePackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Error occurred when reading '{0}' resultset. Attestation URL has not been specified in the connection string, but the query requires enclave computations. Enclave type is '{1}'. . /// @@ -12653,7 +12707,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NoAttestationUrlSpecifiedForEnclaveBasedQuerySpDescribe", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} instance in use does not support column encryption.. /// @@ -12662,7 +12716,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NotSupportedByServer", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Null argument '{0}' specified when constructing an object of type '{1}'. '{0}' cannot be null.. /// @@ -12671,7 +12725,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullArgumentInConstructorInternal", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Argument '{0}' cannot be null when executing method '{1}.{2}'.. /// @@ -12680,7 +12734,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullArgumentInternal", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate path cannot be null. Use the following format: <certificate location>{2}<certificate store>{2}<certificate thumbprint>, where <certificate location> is either '{0}' or '{1}'.. /// @@ -12689,7 +12743,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCertificatePath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Certificate path cannot be null. Use the following format: <certificate location>{2}<certificate store>{2}<certificate thumbprint>, where <certificate location> is either '{0}' or '{1}'.. /// @@ -12698,7 +12752,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCertificatePathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Ciphertext value cannot be null.. /// @@ -12707,7 +12761,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCipherText", resourceCulture); } } - + /// /// Looks up a localized string similar to Column master key path cannot be null. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{0}<Key Identifier>.. /// @@ -12716,7 +12770,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCngPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Column master key path cannot be null. Use the following format for a key stored in a Microsoft Cryptography API: Next Generation (CNG) provider: <CNG Provider Name>{0}<Key Identifier>.. /// @@ -12725,7 +12779,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCngPathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Encryption algorithm cannot be null. Valid algorithms are: {0}.. /// @@ -12734,7 +12788,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullColumnEncryptionAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Column encryption key cannot be null.. /// @@ -12743,7 +12797,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullColumnEncryptionKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Column encryption key cannot be null.. /// @@ -12752,7 +12806,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullColumnEncryptionKeySysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Column master key path cannot be null. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{0}<Key Identifier>.. /// @@ -12761,7 +12815,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCspPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Column master key path cannot be null. Use the following format for a key stored in a Microsoft cryptographic service provider (CSP): <CSP Provider Name>{0}<Key Identifier>.. /// @@ -12770,7 +12824,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCspPathSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Column encryption key store provider dictionary cannot be null. Expecting a non-null value.. /// @@ -12779,7 +12833,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullCustomKeyStoreProviderDictionary", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Enclave package is null during execution of an enclave based query. Enclave type is '{0}' and enclaveAttestationUrl is '{1}'.. /// @@ -12788,7 +12842,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullEnclavePackageForEnclaveBasedQuery", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Enclave session is null during query execution. Enclave type is '{0}' and enclaveAttestationUrl is '{1}'.. /// @@ -12797,7 +12851,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullEnclaveSessionDuringQueryExecution", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to communicate with the enclave. Null enclave session information received from the enclave provider. Enclave type is '{0}' and enclave attestation URL is '{1}'.. /// @@ -12806,7 +12860,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullEnclaveSessionReturnedFromProvider", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Encrypted column encryption key cannot be null.. /// @@ -12815,7 +12869,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullEncryptedColumnEncryptionKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Key encryption algorithm cannot be null.. /// @@ -12824,7 +12878,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullKeyEncryptionAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Key encryption algorithm cannot be null.. /// @@ -12833,7 +12887,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullKeyEncryptionAlgorithmSysErr", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Plaintext value cannot be null.. /// @@ -12842,7 +12896,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullPlainText", resourceCulture); } } - + /// /// Looks up a localized string similar to Null reference specified for key store provider '{0}'. Expecting a non-null value.. /// @@ -12851,7 +12905,7 @@ internal class Strings { return ResourceManager.GetString("TCE_NullProviderValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. Failed to serialize keys to be sent to the enclave. The start offset specified by argument '{0}' for method {1}.{2} is out of bounds.. /// @@ -12860,7 +12914,7 @@ internal class Strings { return ResourceManager.GetString("TCE_OffsetOutOfBounds", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt parameter '{0}'.. /// @@ -12869,7 +12923,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamDecryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to encrypt parameter '{0}'.. /// @@ -12878,7 +12932,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamEncryptionFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Metadata for parameter '{1}' in statement or procedure '{2}' is missing in resultset returned by {0}.. /// @@ -12887,7 +12941,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamEncryptionMetaDataMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot set {0} for {3} '{1}' because encryption is not enabled for the statement or procedure '{2}'.. /// @@ -12896,7 +12950,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamInvalidForceColumnEncryptionSetting", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot execute statement or procedure '{1}' because {2} was set for {3} '{0}' and the database expects this parameter to be sent as plaintext. This may be due to a configuration error.. /// @@ -12905,7 +12959,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ParamUnExpectedEncryptionMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. Metadata for parameters for command '{1}' in a batch is missing in the resultset returned by {0}.. /// @@ -12914,7 +12968,7 @@ internal class Strings { return ResourceManager.GetString("TCE_ProcEncryptionMetaDataMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Retrieving encrypted column '{0}' with {1} is not supported.. /// @@ -12923,7 +12977,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SequentialAccessNotSupportedOnEncryptedColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal Error. SqlColumnEncryptionEnclaveProviderName cannot be null or empty.. /// @@ -12932,7 +12986,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlColumnEncryptionEnclaveProviderNameCannotBeEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to Column encryption setting for the command. Overrides the connection level default.. /// @@ -12941,7 +12995,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlCommand_ColumnEncryptionSetting", resourceCulture); } } - + /// /// Looks up a localized string similar to Defines the time-to-live of entries in the column encryption key cache.. /// @@ -12950,7 +13004,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlConnection_ColumnEncryptionKeyCacheTtl", resourceCulture); } } - + /// /// Looks up a localized string similar to Defines whether query metadata caching is enabled.. /// @@ -12959,7 +13013,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlConnection_ColumnEncryptionQueryMetadataCacheEnabled", resourceCulture); } } - + /// /// Looks up a localized string similar to Dictionary object containing SQL Server names and their trusted column master key paths.. /// @@ -12968,7 +13022,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlConnection_TrustedColumnMasterKeyPaths", resourceCulture); } } - + /// /// Looks up a localized string similar to Forces parameter to be encrypted before sending sensitive data to server. . /// @@ -12977,7 +13031,7 @@ internal class Strings { return ResourceManager.GetString("TCE_SqlParameter_ForceColumnEncryption", resourceCulture); } } - + /// /// Looks up a localized string similar to Retrieving encrypted column '{0}' as a {1} is not supported.. /// @@ -12986,7 +13040,7 @@ internal class Strings { return ResourceManager.GetString("TCE_StreamNotSupportOnEncryptedColumn", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to establish secure channel. Error Message: {0}. /// @@ -12995,7 +13049,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnableToEstablishSecureChannel", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to verify a column master key signature. Error message: {0} . /// @@ -13004,7 +13058,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnableToVerifyColumnMasterKeySignature", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. The result returned by '{0}' is invalid. The attestation information resultset is missing for enclave type '{1}'. . /// @@ -13013,7 +13067,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnexpectedDescribeParamFormatAttestationInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to Internal error. The result returned by '{0}' is invalid. The parameter metadata resultset is missing.. /// @@ -13022,7 +13076,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnexpectedDescribeParamFormatParameterMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption algorithm '{0}' for the column in the database is either invalid or corrupted. Valid algorithms are: {1}.. /// @@ -13031,7 +13085,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnknownColumnEncryptionAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption algorithm id '{0}' for the column in the database is either invalid or corrupted. Valid encryption algorithm ids are: {1}.. /// @@ -13040,7 +13094,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnknownColumnEncryptionAlgorithmId", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to decrypt a column encryption key. Invalid key store provider name: '{0}'. A key store provider name must denote either a system key store provider or a registered custom key store provider. Valid system key store provider names are: {1}. Valid (currently registered) custom key store provider names are: {2}. Please verify key store provider information in column master key definitions in the database, and verify all custom key store providers used in your application are registered properly.. /// @@ -13049,7 +13103,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnrecognizedKeyStoreProviderName", resourceCulture); } } - + /// /// Looks up a localized string similar to Encryption and decryption of data type '{0}' is not supported.. /// @@ -13058,7 +13112,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnsupportedDatatype", resourceCulture); } } - + /// /// Looks up a localized string similar to Normalization version '{0}' received from {2} is not supported. Valid normalization versions are: {1}.. /// @@ -13067,7 +13121,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UnsupportedNormalizationVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Column master key path '{0}' received from server '{1}' is not a trusted key path.. /// @@ -13076,7 +13130,7 @@ internal class Strings { return ResourceManager.GetString("TCE_UntrustedKeyPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot encrypt. Encrypting resulted in {0} bytes of ciphertext which exceeds the maximum allowed limit of {1} bytes. The specified plaintext value is likely too large (plaintext size is: {2} bytes).. /// @@ -13085,7 +13139,7 @@ internal class Strings { return ResourceManager.GetString("TCE_VeryLargeCiphertext", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to check if the enclave is running in the production mode. Contact Customer Support Services.. /// @@ -13094,7 +13148,7 @@ internal class Strings { return ResourceManager.GetString("VerifyEnclaveDebuggable", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not verify enclave policy due to a difference between the expected and actual values of the policy on property '{0}'. Actual: '{1}', Expected: '{2}'.. /// @@ -13103,7 +13157,7 @@ internal class Strings { return ResourceManager.GetString("VerifyEnclavePolicyFailedFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to Signature verification of the enclave report failed. The report signature does not match the signature computed using the HGS root certificate. Verify the DNS mapping for the endpoint. If correct, contact Customer Support Services.. /// @@ -13112,7 +13166,7 @@ internal class Strings { return ResourceManager.GetString("VerifyEnclaveReportFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to The enclave report received from SQL Server is not in the correct format. Contact Customer Support Services.. /// @@ -13121,7 +13175,7 @@ internal class Strings { return ResourceManager.GetString("VerifyEnclaveReportFormatFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to build a chain of trust between the enclave host's health report and the HGS root certificate for attestation URL '{0}' with status: '{1}'. Verify the attestation URL matches the URL configured on the SQL Server machine. If both the client and SQL Server use the same attestation service, contact Customer Support Services.. /// @@ -13130,7 +13184,7 @@ internal class Strings { return ResourceManager.GetString("VerifyHealthCertificateChainFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to The value of attribute '{0}' should be '{1}' or '{2}'.. /// @@ -13139,7 +13193,7 @@ internal class Strings { return ResourceManager.GetString("Xml_AttributeValues", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot convert '{0}' to type '{1}'.. /// @@ -13148,7 +13202,7 @@ internal class Strings { return ResourceManager.GetString("Xml_CannotConvert", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to proceed with deserialization. Data does not implement IXMLSerializable, therefore polymorphism is not supported.. /// @@ -13157,7 +13211,7 @@ internal class Strings { return ResourceManager.GetString("Xml_CanNotDeserializeObjectType", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet cannot instantiate an abstract ComplexType for the node {0}.. /// @@ -13166,7 +13220,7 @@ internal class Strings { return ResourceManager.GetString("Xml_CannotInstantiateAbstract", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet doesn't allow the circular reference in the ComplexType named '{0}'.. /// @@ -13175,7 +13229,7 @@ internal class Strings { return ResourceManager.GetString("Xml_CircularComplexType", resourceCulture); } } - + /// /// Looks up a localized string similar to Column name '{0}' is defined for different mapping types.. /// @@ -13184,7 +13238,7 @@ internal class Strings { return ResourceManager.GetString("Xml_ColumnConflict", resourceCulture); } } - + /// /// Looks up a localized string similar to DataTable does not support schema inference from Xml.. /// @@ -13193,7 +13247,7 @@ internal class Strings { return ResourceManager.GetString("Xml_DataTableInferenceNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Data type not defined.. /// @@ -13202,7 +13256,7 @@ internal class Strings { return ResourceManager.GetString("Xml_DatatypeNotDefined", resourceCulture); } } - + /// /// Looks up a localized string similar to The constraint name {0} is already used in the schema.. /// @@ -13211,7 +13265,7 @@ internal class Strings { return ResourceManager.GetString("Xml_DuplicateConstraint", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet will not serialize types that implement IDynamicMetaObjectProvider but do not also implement IXmlSerializable.. /// @@ -13220,7 +13274,7 @@ internal class Strings { return ResourceManager.GetString("Xml_DynamicWithoutXmlSerializable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find ElementType name='{0}'.. /// @@ -13229,7 +13283,7 @@ internal class Strings { return ResourceManager.GetString("Xml_ElementTypeNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet cannot expand entities. Use XmlValidatingReader and set the EntityHandling property accordingly.. /// @@ -13238,7 +13292,7 @@ internal class Strings { return ResourceManager.GetString("Xml_FoundEntity", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid XPath selection inside field node. Cannot find: {0}.. /// @@ -13247,7 +13301,7 @@ internal class Strings { return ResourceManager.GetString("Xml_InvalidField", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid 'Key' node inside constraint named: {0}.. /// @@ -13256,7 +13310,7 @@ internal class Strings { return ResourceManager.GetString("Xml_InvalidKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Prefix '{0}' is not valid, because it contains special characters.. /// @@ -13265,7 +13319,7 @@ internal class Strings { return ResourceManager.GetString("Xml_InvalidPrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid XPath selection inside selector node: {0}.. /// @@ -13274,7 +13328,7 @@ internal class Strings { return ResourceManager.GetString("Xml_InvalidSelector", resourceCulture); } } - + /// /// Looks up a localized string similar to IsDataSet attribute is missing in input Schema.. /// @@ -13283,7 +13337,7 @@ internal class Strings { return ResourceManager.GetString("Xml_IsDataSetAttributeMissingInSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Duplicated declaration '{0}'.. /// @@ -13292,7 +13346,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MergeDuplicateDeclaration", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Relation definition: different length keys.. /// @@ -13301,7 +13355,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MismatchKeyLength", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid {0} syntax: missing required '{1}' attribute.. /// @@ -13310,7 +13364,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MissingAttribute", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing '{0}' part in '{1}' constraint named '{2}'.. /// @@ -13319,7 +13373,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MissingRefer", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot load diffGram. The 'sql' node is missing.. /// @@ -13328,7 +13382,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MissingSQL", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot load diffGram. Table '{0}' is missing in the destination dataset.. /// @@ -13337,7 +13391,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MissingTable", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot proceed with serializing DataTable '{0}'. It contains a DataRow which has multiple parent rows on the same Foreign Key.. /// @@ -13346,7 +13400,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MultipleParentRows", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred with the multiple target converter while writing an Xml Schema. A null or empty string was returned.. /// @@ -13355,7 +13409,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MultipleTargetConverterEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to An error occurred with the multiple target converter while writing an Xml Schema. See the inner exception for details.. /// @@ -13364,7 +13418,7 @@ internal class Strings { return ResourceManager.GetString("Xml_MultipleTargetConverterError", resourceCulture); } } - + /// /// Looks up a localized string similar to Circular reference in self-nested table '{0}'.. /// @@ -13373,7 +13427,7 @@ internal class Strings { return ResourceManager.GetString("Xml_NestedCircular", resourceCulture); } } - + /// /// Looks up a localized string similar to Type '{0}' does not implement IXmlSerializable interface therefore can not proceed with serialization.. /// @@ -13382,7 +13436,7 @@ internal class Strings { return ResourceManager.GetString("Xml_PolymorphismNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Child table key is missing in relation '{0}'.. /// @@ -13391,7 +13445,7 @@ internal class Strings { return ResourceManager.GetString("Xml_RelationChildKeyMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Child table name is missing in relation '{0}'.. /// @@ -13400,7 +13454,7 @@ internal class Strings { return ResourceManager.GetString("Xml_RelationChildNameMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Parent table name is missing in relation '{0}'.. /// @@ -13409,7 +13463,7 @@ internal class Strings { return ResourceManager.GetString("Xml_RelationParentNameMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to Parent table key is missing in relation '{0}'.. /// @@ -13418,7 +13472,7 @@ internal class Strings { return ResourceManager.GetString("Xml_RelationTableKeyMissing", resourceCulture); } } - + /// /// Looks up a localized string similar to DataSet doesn't support 'union' or 'list' as simpleType.. /// @@ -13427,7 +13481,7 @@ internal class Strings { return ResourceManager.GetString("Xml_SimpleTypeNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot determine the DataSet Element. IsDataSet attribute exist more than once.. /// @@ -13436,7 +13490,7 @@ internal class Strings { return ResourceManager.GetString("Xml_TooManyIsDataSetAtributeInSchema", resourceCulture); } } - + /// /// Looks up a localized string similar to Undefined data type: '{0}'.. /// @@ -13445,7 +13499,7 @@ internal class Strings { return ResourceManager.GetString("Xml_UndefinedDatatype", resourceCulture); } } - + /// /// Looks up a localized string similar to Value '{1}' is invalid for attribute '{0}'.. /// diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx index 5efe3d9ad5..aaed6f0f0b 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx +++ b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx @@ -4584,4 +4584,22 @@ Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set. - + + Access token could not be acquired. + + + Unable to connect to the Managed Identity endpoint. Please check that you are running on an Azure resource that has Identity setup. + + + Tried to get token using Managed Identity. + + + Unable to connect to the Instance Metadata Service (IMDS). Skipping request to the Managed Identity token endpoint. + + + Received a non-retryable error. + + + Failed after 5 retries. + + \ No newline at end of file diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index 15622f107c..56e56902b6 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -1,5 +1,8 @@ -using System; -using System.Linq; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; using System.Net.Http; using System.Text.RegularExpressions; using System.Threading; @@ -7,9 +10,7 @@ namespace Microsoft.Data.SqlClient { - /// - /// - /// + /// public sealed class AzureManagedIdentityAuthenticationProvider : SqlAuthenticationProvider { // This is for unit testing @@ -17,46 +18,45 @@ public sealed class AzureManagedIdentityAuthenticationProvider : SqlAuthenticati // HttpClient is intended to be instantiated once and re-used throughout the life of an application. #if NETFRAMEWORK - private static readonly HttpClient DefaultHttpClient = new HttpClient(); + private static readonly HttpClient s_defaultHttpClient = new HttpClient(); #else - private static readonly HttpClient DefaultHttpClient = new HttpClient(new HttpClientHandler() { CheckCertificateRevocationList = true }); + private static readonly HttpClient s_defaultHttpClient = new HttpClient(new HttpClientHandler() { CheckCertificateRevocationList = true }); #endif - // Retry acquiring access token upto 20 times due to possible IMDS upgrade (Applies to VM only) - private const int AZURE_IMDS_MAX_RETRY = 20; private const string AzureSystemApiVersion = "&api-version=2019-08-01"; private const string AzureVmImdsApiVersion = "&api-version=2018-02-01"; + private const string AccessToken = "access_token"; + private const string Expiry = "expires_on"; + private const int FileTimeLength = 10; + + private const int DefaultRetryTimeout = 0; + private const int DefaultMaxRetryCount = 5; // Azure Instance Metadata Service (IMDS) endpoint private const string AzureVmImdsEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token"; // Timeout for Azure IMDS probe request internal const int AzureVmImdsProbeTimeoutInSeconds = 2; - internal readonly TimeSpan AzureVmImdsProbeTimeout = TimeSpan.FromSeconds(AzureVmImdsProbeTimeoutInSeconds); + internal readonly TimeSpan _azureVmImdsProbeTimeout = TimeSpan.FromSeconds(AzureVmImdsProbeTimeoutInSeconds); // Configurable timeout for MSI retry logic - internal readonly int _retryTimeoutInSeconds = 0; - - /// - /// - /// - /// - /// - public AzureManagedIdentityAuthenticationProvider(int retryTimeoutInSeconds = 0, HttpClient httpClient = null) + internal readonly int _retryTimeoutInSeconds = DefaultRetryTimeout; + internal readonly int _maxRetryCount = DefaultMaxRetryCount; + + /// + public AzureManagedIdentityAuthenticationProvider(int retryTimeoutInSeconds = DefaultRetryTimeout, int maxRetryCount = DefaultMaxRetryCount, HttpClient httpClient = null) { _retryTimeoutInSeconds = retryTimeoutInSeconds; _httpClient = httpClient; + _maxRetryCount = maxRetryCount; } - /// - /// - /// - /// - /// + // Reference: https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http + /// public override async Task AcquireTokenAsync(SqlAuthenticationParameters parameters) { // Use the httpClient specified in the constructor. If it was not specified in the constructor, use the default httpClient. - HttpClient httpClient = _httpClient ?? DefaultHttpClient; + HttpClient httpClient = _httpClient ?? s_defaultHttpClient; try { @@ -76,7 +76,7 @@ public override async Task AcquireTokenAsync(SqlAuthenti try { - internalTokenSource.CancelAfter(AzureVmImdsProbeTimeout); + internalTokenSource.CancelAfter(_azureVmImdsProbeTimeout); await httpClient.SendAsync(imdsProbeRequest, linkedTokenSource.Token).ConfigureAwait(false); } catch (OperationCanceledException) @@ -84,8 +84,8 @@ public override async Task AcquireTokenAsync(SqlAuthenti // request to IMDS timed out (internal cancellation token canceled), neither Azure VM IMDS nor App Services MSI are available if (internalTokenSource.Token.IsCancellationRequested) { - //throw new AzureServiceTokenProviderException(ConnectionString, parameters.Resource, parameters.Authority, - // $"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.MsiEndpointNotListening}"); + // Throw error: Tried to get token using Managed Identity. Unable to connect to the Instance Metadata Service (IMDS). Skipping request to the Managed Service Identity (MSI) token endpoint. + throw SQL.Azure_ManagedIdentityException($"{Strings.Azure_ManagedIdentityUsed} {Strings.Azure_MetadataEndpointNotListening}"); } throw; @@ -93,92 +93,75 @@ public override async Task AcquireTokenAsync(SqlAuthenti } } - // If managed identity is specified, include object ID parameter in request - string clientIdParameter = parameters.UserId != default + // If user assigned managed identity is specified, include object ID parameter in request + string objectIdParameter = parameters.UserId != default ? $"&object_id={parameters.UserId}" : string.Empty; // Craft request as per the MSI protocol var requestUrl = isAppServicesMsiAvailable - ? $"{msiEndpoint}?resource={parameters.Resource}{clientIdParameter}{AzureSystemApiVersion}" - : $"{AzureVmImdsEndpoint}?resource={parameters.Resource}{clientIdParameter}{AzureVmImdsApiVersion}"; + ? $"{msiEndpoint}?resource={parameters.Resource}{objectIdParameter}{AzureSystemApiVersion}" + : $"{AzureVmImdsEndpoint}?resource={parameters.Resource}{objectIdParameter}{AzureVmImdsApiVersion}"; - Func getRequestMessage = () => - { - HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); + HttpResponseMessage response = null; - if (isAppServicesMsiAvailable) - { - request.Headers.Add("X-IDENTITY-HEADER", msiHeader); - } - else + try + { + response = await httpClient.SendAsyncWithRetry(getRequestMessage, _retryTimeoutInSeconds, _maxRetryCount, default).ConfigureAwait(false); + HttpRequestMessage getRequestMessage() { - request.Headers.Add("Metadata", "true"); - } + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); - return request; - }; + if (isAppServicesMsiAvailable) + { + request.Headers.Add("X-IDENTITY-HEADER", msiHeader); + } + else + { + request.Headers.Add("Metadata", "true"); + } - HttpResponseMessage response = null; - try - { - response = await httpClient.SendAsyncWithRetry(getRequestMessage, _retryTimeoutInSeconds, default).ConfigureAwait(false); + return request; + } } catch (HttpRequestException) { - //throw new AzureServiceTokenProviderException(ConnectionString, resource, authority, - // $"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.RetryFailure} {AzureServiceTokenProviderException.MsiEndpointNotListening}"); + // Throw error: Tried to get token using Managed Service Identity. Failed after 5 retries. Unable to connect to the Managed Service Identity (MSI) endpoint. Please check that you are running on an Azure resource that has MSI setup. + throw SQL.Azure_ManagedIdentityException($"{Strings.Azure_ManagedIdentityUsed} {Strings.Azure_RetryFailure} {Strings.Azure_IdentityEndpointNotListening}"); } // If the response is successful, it should have JSON response with an access_token field if (response.IsSuccessStatusCode) { - //PrincipalUsed.IsAuthenticated = true; - - //string jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false); - - //// Parse the JSON response - //TokenResponse tokenResponse = TokenResponse.Parse(jsonResponse); + string jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + int accessTokenStartIndex = jsonResponse.IndexOf(AccessToken) + AccessToken.Length + 3; + var imdsAccessToken = jsonResponse.Substring(accessTokenStartIndex, jsonResponse.IndexOf('"', accessTokenStartIndex) - accessTokenStartIndex); + var expiresin = jsonResponse.Substring(jsonResponse.IndexOf(Expiry) + Expiry.Length + 3, FileTimeLength); + DateTime expiryTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(long.Parse(expiresin)); - //AccessToken token = AccessToken.Parse(tokenResponse.AccessToken); - - //// If token is null, then there has been a parsing issue, which means the access token format has changed - //if (token != null) - //{ - // PrincipalUsed.AppId = token.AppId; - // PrincipalUsed.TenantId = token.TenantId; - //} - - //return AppAuthenticationResult.Create(tokenResponse); - return null; + return new SqlAuthenticationToken(imdsAccessToken, expiryTime); } - //string errorStatusDetail = response.IsRetryableStatusCode() - // ? AzureServiceTokenProviderException.RetryFailure - // : AzureServiceTokenProviderException.NonRetryableError; + // RetryFailure : Failed after 5 retries. + // NonRetryableError : Received a non-retryable error. + string errorStatusDetail = response.IsRetryableStatusCode() + ? Strings.Azure_RetryFailure + : Strings.Azure_NonRetryableError; - //string errorText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + string errorText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); - //throw new Exception($"{errorStatusDetail} MSI ResponseCode: {response.StatusCode}, Response: {errorText}"); + throw SQL.Azure_ManagedIdentityException($"{errorStatusDetail} Identity Response Code: {response.StatusCode}, Response: {errorText}"); } catch (Exception exp) { if (exp is SqlException) throw; - - //throw new AzureServiceTokenProviderException(ConnectionString, resource, authority, - // $"{AzureServiceTokenProviderException.ManagedServiceIdentityUsed} {AzureServiceTokenProviderException.GenericErrorMessage} {exp.Message}"); + // Throw error: Access token could not be acquired. {exp.Message} + throw SQL.Azure_ManagedIdentityException($"{Strings.Azure_ManagedIdentityUsed} {Strings.Azure_GenericErrorMessage} {exp.Message}"); } - - //Cheena: Remove later - return null; } - /// - /// - /// - /// - /// + /// public override bool IsSupported(SqlAuthenticationMethod authentication) { return authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; @@ -187,12 +170,11 @@ public override bool IsSupported(SqlAuthenticationMethod authentication) internal static class SqlManagedIdentityRetryHelper { - internal const int MaxRetries = 5; internal const int DeltaBackOffInSeconds = 2; internal const string RetryTimeoutError = "Reached retry timeout limit set by MsiRetryTimeout parameter in connection string."; // for unit test purposes - internal static bool WaitBeforeRetry = true; + internal static bool s_waitBeforeRetry = true; internal static bool IsRetryableStatusCode(this HttpResponseMessage response) { @@ -203,7 +185,7 @@ internal static bool IsRetryableStatusCode(this HttpResponseMessage response) /// /// Implements recommended retry guidance here: https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#retry-guidance /// - internal static async Task SendAsyncWithRetry(this HttpClient httpClient, Func getRequest, int retryTimeoutInSeconds, CancellationToken cancellationToken) + internal static async Task SendAsyncWithRetry(this HttpClient httpClient, Func getRequest, int retryTimeoutInSeconds, int maxRetryCount, CancellationToken cancellationToken) { using (var timeoutTokenSource = new CancellationTokenSource()) using (var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(timeoutTokenSource.Token, cancellationToken)) @@ -228,21 +210,23 @@ internal static async Task SendAsyncWithRetry(this HttpClie { response = await httpClient.SendAsync(getRequest(), linkedTokenSource.Token).ConfigureAwait(false); - if (response.IsSuccessStatusCode || !response.IsRetryableStatusCode() || attempts == MaxRetries) + if (response.IsSuccessStatusCode || !response.IsRetryableStatusCode() || attempts == maxRetryCount) { break; } } catch (HttpRequestException) { - if (attempts == MaxRetries) + if (attempts == maxRetryCount) + { throw; + } } - if (WaitBeforeRetry) + if (s_waitBeforeRetry) { // use recommended exponential backoff strategy, and use linked token wait handle so caller or retry timeout is still able to cancel - backoffTimeInSecs = backoffTimeInSecs + (int)Math.Pow(DeltaBackOffInSeconds, attempts); + backoffTimeInSecs += (int)Math.Pow(DeltaBackOffInSeconds, attempts); linkedTokenSource.Token.WaitHandle.WaitOne(TimeSpan.FromSeconds(backoffTimeInSecs)); linkedTokenSource.Token.ThrowIfCancellationRequested(); } diff --git a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs index cc8bd1f3d4..5272bbdc58 100644 --- a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs @@ -17,6 +17,16 @@ public class SqlConnectionStringBuilderTest [InlineData("Attestation Protocol = HGS")] [InlineData("Authentication = Active Directory Password ")] [InlineData("Authentication = ActiveDirectoryPassword ")] + [InlineData("Authentication = Active Directory Integrated ")] + [InlineData("Authentication = ActiveDirectoryIntegrated ")] + [InlineData("Authentication = Active Directory Interactive ")] + [InlineData("Authentication = ActiveDirectoryInteractive ")] + [InlineData("Authentication = Active Directory Device Code Flow ")] + [InlineData("Authentication = ActiveDirectoryDeviceCodeFlow ")] + [InlineData("Authentication = Active Directory Service Principal ")] + [InlineData("Authentication = ActiveDirectoryServicePrincipal ")] + [InlineData("Authentication = Active Directory Managed Identity ")] + [InlineData("Authentication = ActiveDirectoryManagedIdentity ")] [InlineData("Command Timeout = 5")] [InlineData("Command Timeout = 15")] [InlineData("Command Timeout = 0")] @@ -55,7 +65,8 @@ public class SqlConnectionStringBuilderTest [InlineData("PersistSecurityInfo = true")] [InlineData("Pooling = no")] [InlineData("Pooling = false")] -#if netcoreapp // PoolBlockingPeriod is not supported in .NET Standard +#if netcoreapp + // PoolBlockingPeriod is not supported in .NET Standard [InlineData("PoolBlockingPeriod = Auto")] [InlineData("PoolBlockingperiod = NeverBlock")] #endif @@ -74,16 +85,6 @@ public void ConnectionStringTests(string connectionString) [Theory] [InlineData("Asynchronous Processing = True")] - [InlineData("Authentication = Active Directory Integrated ")] - [InlineData("Authentication = ActiveDirectoryIntegrated ")] - [InlineData("Authentication = Active Directory Interactive ")] - [InlineData("Authentication = ActiveDirectoryInteractive ")] - [InlineData("Authentication = Active Directory Device Code Flow ")] - [InlineData("Authentication = ActiveDirectoryDeviceCodeFlow ")] - [InlineData("Authentication = Active Directory Service Principal ")] - [InlineData("Authentication = ActiveDirectoryServicePrincipal ")] - [InlineData("Authentication = Active Directory Managed Identity ")] - [InlineData("Authentication = ActiveDirectoryManagedIdentity ")] [InlineData("Context Connection = false")] [InlineData("Network Library = dbmssocn")] [InlineData("Network = dbnmpntw")] From b9f9f3e2a883428b7fb94e6e0590ed01c1609030 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Thu, 17 Sep 2020 21:04:29 -0700 Subject: [PATCH 04/23] Fixes --- .../netfx/src/Microsoft.Data.SqlClient.csproj | 22 +++++-------------- .../ActiveDirectoryAuthenticationProvider.cs | 6 ++--- ...reManagedIdentityAuthenticationProvider.cs | 1 - 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj index 22a8d07392..3adff28d0d 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj @@ -321,16 +321,10 @@ - - Component - - - Component - + + - - Component - + @@ -338,9 +332,7 @@ - - Component - + @@ -410,9 +402,7 @@ - - Component - + @@ -516,4 +506,4 @@ - \ No newline at end of file + diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs index bfcb2cec87..59e003b51e 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs @@ -156,13 +156,13 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) result = app.AcquireTokenByIntegratedWindowsAuth(scopes) .WithCorrelationId(parameters.ConnectionId) .WithUsername(parameters.UserId) - .ExecuteAsync().GetAwaiter().GetResult(); + .ExecuteAsync().Result; } else { result = app.AcquireTokenByIntegratedWindowsAuth(scopes) .WithCorrelationId(parameters.ConnectionId) - .ExecuteAsync().GetAwaiter().GetResult(); + .ExecuteAsync().Result; } return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } @@ -174,7 +174,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) password.MakeReadOnly(); result = app.AcquireTokenByUsernamePassword(scopes, parameters.UserId, password) .WithCorrelationId(parameters.ConnectionId) - .ExecuteAsync().GetAwaiter().GetResult(); + .ExecuteAsync().Result; return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } else if (parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryInteractive || diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index 56e56902b6..dd58b10675 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -13,7 +13,6 @@ namespace Microsoft.Data.SqlClient /// public sealed class AzureManagedIdentityAuthenticationProvider : SqlAuthenticationProvider { - // This is for unit testing private readonly HttpClient _httpClient; // HttpClient is intended to be instantiated once and re-used throughout the life of an application. From 7c8910170e4d2ed31a7a69887022619df4347b39 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Fri, 18 Sep 2020 11:49:15 -0700 Subject: [PATCH 05/23] Review feedback addressed --- .../netfx/src/Microsoft.Data.SqlClient.csproj | 4 +-- .../ActiveDirectoryAuthenticationProvider.cs | 33 ++++++++----------- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj index 3adff28d0d..e3db948526 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj @@ -445,10 +445,10 @@ - + True True - Strings.resx + $(ResxFileName).resx diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs index 59e003b51e..36359e8392 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs @@ -3,16 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections; -using System.Collections.Generic; using System.Linq; using System.Security; -using System.Text; using System.Threading; using System.Threading.Tasks; using Microsoft.Identity.Client; using Microsoft.Identity.Client.Extensibility; -using static Microsoft.Data.SqlClient.ActiveDirectoryAuthentication; namespace Microsoft.Data.SqlClient { @@ -96,11 +92,11 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } - /* + /* * Today, MSAL.NET uses another redirect URI by default in desktop applications that run on Windows * (urn:ietf:wg:oauth:2.0:oob). In the future, we'll want to change this default, so we recommend * that you use https://login.microsoftonline.com/common/oauth2/nativeclient. - * + * * https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-desktop-app-registration#redirect-uris */ string redirectURI = "https://login.microsoftonline.com/common/oauth2/nativeclient"; @@ -116,7 +112,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) #if netstandard if (parentActivityOrWindowFunc != null) { - app = PublicClientApplicationBuilder.Create(AdoClientId) + app = PublicClientApplicationBuilder.Create(ActiveDirectoryAuthentication.AdoClientId) .WithAuthority(parameters.Authority) .WithClientName(Common.DbConnectionStringDefaults.ApplicationName) .WithClientVersion(Common.ADP.GetAssemblyVersion().ToString()) @@ -128,7 +124,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) #if netfx if (_iWin32WindowFunc != null) { - app = PublicClientApplicationBuilder.Create(AdoClientId) + app = PublicClientApplicationBuilder.Create(ActiveDirectoryAuthentication.AdoClientId) .WithAuthority(parameters.Authority) .WithClientName(Common.DbConnectionStringDefaults.ApplicationName) .WithClientVersion(Common.ADP.GetAssemblyVersion().ToString()) @@ -141,7 +137,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) else #endif { - app = PublicClientApplicationBuilder.Create(AdoClientId) + app = PublicClientApplicationBuilder.Create(ActiveDirectoryAuthentication.AdoClientId) .WithAuthority(parameters.Authority) .WithClientName(Common.DbConnectionStringDefaults.ApplicationName) .WithClientVersion(Common.ADP.GetAssemblyVersion().ToString()) @@ -164,7 +160,6 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) .WithCorrelationId(parameters.ConnectionId) .ExecuteAsync().Result; } - return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } else if (parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryPassword) { @@ -175,7 +170,6 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) result = app.AcquireTokenByUsernamePassword(scopes, parameters.UserId, password) .WithCorrelationId(parameters.ConnectionId) .ExecuteAsync().Result; - return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } else if (parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryInteractive || parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow) @@ -206,15 +200,16 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) { result = await AcquireTokenInteractiveDeviceFlowAsync(app, scopes, parameters.ConnectionId, parameters.UserId, parameters.AuthenticationMethod); } - return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); - } else { throw SQL.UnsupportedAuthenticationSpecified(parameters.AuthenticationMethod); } + + return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); }); + private async Task AcquireTokenInteractiveDeviceFlowAsync(IPublicClientApplication app, string[] scopes, Guid connectionId, string userId, SqlAuthenticationMethod authenticationMethod) { @@ -226,7 +221,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) * MSAL cannot detect if the user navigates away or simply closes the browser. Apps using this technique are encouraged * to define a timeout (via CancellationToken). We recommend a timeout of at least a few minutes, to take into account * cases where the user is prompted to change password or perform 2FA. - * + * * https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/System-Browser-on-.Net-Core#system-browser-experience */ cts.CancelAfter(180000); @@ -247,7 +242,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) { /* * We will use the MSAL Embedded or System web browser which changes by Default in MSAL according to this table: - * + * * Framework Embedded System Default * ------------------------------------------- * .NET Classic Yes Yes^ Embedded @@ -257,9 +252,9 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) * Xamarin.Android Yes Yes System * Xamarin.iOS Yes Yes System * Xamarin.Mac Yes No Embedded - * + * * ^ Requires "http://localhost" redirect URI - * + * * https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/MSAL.NET-uses-web-browser#at-a-glance */ return await app.AcquireTokenInteractive(scopes) @@ -285,11 +280,11 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) private Task DefaultDeviceFlowCallback(DeviceCodeResult result) { - // This will print the message on the console which tells the user where to go sign-in using + // This will print the message on the console which tells the user where to go sign-in using // a separate browser and the code to enter once they sign in. // The AcquireTokenWithDeviceCode() method will poll the server after firing this // device code callback to look for the successful login of the user via that browser. - // This background polling (whose interval and timeout data is also provided as fields in the + // This background polling (whose interval and timeout data is also provided as fields in the // deviceCodeCallback class) will occur until: // * The user has successfully logged in via browser and entered the proper code // * The timeout specified by the server for the lifetime of this code (typically ~15 minutes) has been reached From b26ebf2252562b5c43e905dc2f784dcb51c0d490 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Fri, 18 Sep 2020 14:01:23 -0700 Subject: [PATCH 06/23] Add Active Directory MSI keyword support --- .../ActiveDirectoryAuthenticationProvider.xml | 1 + .../SqlAuthenticationMethod.xml | 4 ++ .../netcore/ref/Microsoft.Data.SqlClient.cs | 2 + .../Data/Common/DbConnectionStringCommon.cs | 12 +++- ...uthenticationProviderManager.NetCoreApp.cs | 4 ++ .../SqlAuthenticationProviderManager.cs | 1 + .../Microsoft/Data/SqlClient/SqlConnection.cs | 62 +++++++++------- .../Data/SqlClient/SqlConnectionString.cs | 9 ++- .../SqlClient/SqlInternalConnectionTds.cs | 18 ++--- .../src/Microsoft/Data/SqlClient/SqlUtil.cs | 16 ++--- .../src/Microsoft/Data/SqlClient/TdsEnums.cs | 5 +- .../src/Microsoft/Data/SqlClient/TdsParser.cs | 4 ++ .../netcore/src/Resources/Strings.Designer.cs | 6 +- .../netcore/src/Resources/Strings.resx | 6 +- .../netfx/ref/Microsoft.Data.SqlClient.cs | 2 + .../Data/Common/DbConnectionStringCommon.cs | 12 +++- .../SqlAuthenticationProviderManager.cs | 4 ++ .../Microsoft/Data/SqlClient/SqlConnection.cs | 55 ++++++++++----- .../Data/SqlClient/SqlConnectionString.cs | 9 ++- .../SqlClient/SqlInternalConnectionTds.cs | 10 ++- .../src/Microsoft/Data/SqlClient/SqlUtil.cs | 16 ++--- .../src/Microsoft/Data/SqlClient/TdsEnums.cs | 3 + .../src/Microsoft/Data/SqlClient/TdsParser.cs | 4 ++ .../netfx/src/Resources/Strings.Designer.cs | 6 +- .../netfx/src/Resources/Strings.resx | 6 +- ...reManagedIdentityAuthenticationProvider.cs | 5 +- .../SqlConnectionStringBuilderTest.cs | 2 + .../ConnectivityTests/AADConnectionTest.cs | 70 +++++++++++++++++++ 28 files changed, 259 insertions(+), 95 deletions(-) diff --git a/doc/snippets/Microsoft.Data.SqlClient/ActiveDirectoryAuthenticationProvider.xml b/doc/snippets/Microsoft.Data.SqlClient/ActiveDirectoryAuthenticationProvider.xml index 41eb7236dd..1b4c472833 100644 --- a/doc/snippets/Microsoft.Data.SqlClient/ActiveDirectoryAuthenticationProvider.xml +++ b/doc/snippets/Microsoft.Data.SqlClient/ActiveDirectoryAuthenticationProvider.xml @@ -70,6 +70,7 @@ || || || +|| ## Examples The following example demonstrates providing a custom device flow callback to SqlClient for the Device Code Flow authentication method: diff --git a/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml b/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml index bebb2ce127..19927484fd 100644 --- a/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml +++ b/doc/snippets/Microsoft.Data.SqlClient/SqlAuthenticationMethod.xml @@ -37,5 +37,9 @@ The authentication method uses Active Directory Managed Identity. Use System Assigned or User Assigned Managed Identity to connect to SQL Database from Azure client environments that have enabled support for Managed Identity. For User Assigned Managed Identity, 'User Id' or 'UID' is required to be set to the object ID of the user identity. 7 + + Alias for "Active Directory Managed Identity" authentication method. Use System Assigned or User Assigned Managed Identity to connect to SQL Database from Azure client environments that have enabled support for Managed Identity. For User Assigned Managed Identity, 'User Id' or 'UID' is required to be set to the object ID of the user identity. + 8 + diff --git a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs index c528a86fdd..d715d6deca 100644 --- a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs +++ b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs @@ -93,6 +93,8 @@ public enum SqlAuthenticationMethod ActiveDirectoryDeviceCodeFlow = 6, /// ActiveDirectoryManagedIdentity = 7, + /// + ActiveDirectoryMSI = 8, /// NotSpecified = 0, /// diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index bd2f55a9d1..614ee6e744 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -104,7 +104,8 @@ internal static string ConvertToString(object value) const string ActiveDirectoryInteractiveString = "Active Directory Interactive"; const string ActiveDirectoryServicePrincipalString = "Active Directory Service Principal"; const string ActiveDirectoryDeviceCodeFlowString = "Active Directory Device Code Flow"; - const string ActiveDirectoryManagedIdentityString = "Active Directory Managed Identity"; + internal const string ActiveDirectoryManagedIdentityString = "Active Directory Managed Identity"; + internal const string ActiveDirectoryMSIString = "Active Directory MSI"; internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result) { @@ -154,6 +155,12 @@ internal static bool TryConvertToAuthenticationType(string value, out SqlAuthent result = SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; isSuccess = true; } + else if (StringComparer.InvariantCultureIgnoreCase.Equals(value, ActiveDirectoryMSIString) + || StringComparer.InvariantCultureIgnoreCase.Equals(value, Convert.ToString(SqlAuthenticationMethod.ActiveDirectoryMSI, CultureInfo.InvariantCulture))) + { + result = SqlAuthenticationMethod.ActiveDirectoryMSI; + isSuccess = true; + } else { result = DbConnectionStringDefaults.Authentication; @@ -502,6 +509,7 @@ internal static bool IsValidAuthenticationTypeValue(SqlAuthenticationMethod valu || value == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal || value == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow || value == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity + || value == SqlAuthenticationMethod.ActiveDirectoryMSI || value == SqlAuthenticationMethod.NotSpecified; } @@ -525,6 +533,8 @@ internal static string AuthenticationTypeToString(SqlAuthenticationMethod value) return ActiveDirectoryDeviceCodeFlowString; case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: return ActiveDirectoryManagedIdentityString; + case SqlAuthenticationMethod.ActiveDirectoryMSI: + return ActiveDirectoryMSIString; default: return null; } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs index 7f3d2ac147..01b617d5d8 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs @@ -42,6 +42,8 @@ static SqlAuthenticationProviderManager() Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, azureManagedIdentityAuthenticationProvider); + Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryMSI, azureManagedIdentityAuthenticationProvider); + } /// @@ -147,6 +149,8 @@ private static SqlAuthenticationMethod AuthenticationEnumFromString(string authe return SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; case ActiveDirectoryManagedIdentity: return SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + case ActiveDirectoryMSI: + return SqlAuthenticationMethod.ActiveDirectoryMSI; default: throw SQL.UnsupportedAuthentication(authentication); } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs index 508d016d27..969ff9945f 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs @@ -20,6 +20,7 @@ internal partial class SqlAuthenticationProviderManager private const string ActiveDirectoryServicePrincipal = "active directory service principal"; private const string ActiveDirectoryDeviceCodeFlow = "active directory device code flow"; private const string ActiveDirectoryManagedIdentity = "active directory managed identity"; + private const string ActiveDirectoryMSI = "active directory msi"; private readonly string _typeName; private readonly IReadOnlyCollection _authenticationsWithAppSpecifiedProvider; diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs index 8f309dda1e..082bec5c21 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs @@ -135,25 +135,25 @@ public SqlConnection(string connectionString, SqlCredential credential) : this() { throw ADP.InvalidMixedArgumentOfSecureCredentialAndIntegratedSecurity(); } - - if (UsesActiveDirectoryIntegrated(connectionOptions)) + else if (UsesActiveDirectoryIntegrated(connectionOptions)) { throw SQL.SettingCredentialWithIntegratedArgument(); } - - if (UsesActiveDirectoryInteractive(connectionOptions)) + else if (UsesActiveDirectoryInteractive(connectionOptions)) { throw SQL.SettingCredentialWithInteractiveArgument(); } - - if (UsesActiveDirectoryDeviceCodeFlow(connectionOptions)) + else if (UsesActiveDirectoryDeviceCodeFlow(connectionOptions)) { throw SQL.SettingCredentialWithDeviceFlowArgument(); } - - if (UsesActiveDirectoryManagedIdentity(connectionOptions)) + else if (UsesActiveDirectoryManagedIdentity(connectionOptions)) { - throw SQL.SettingCredentialWithManagedIdentityArgument(); + throw SQL.SettingCredentialWithManagedIdentityArgument(DbConnectionStringBuilderUtil.ActiveDirectoryManagedIdentityString); + } + else if (UsesActiveDirectoryMSI(connectionOptions)) + { + throw SQL.SettingCredentialWithManagedIdentityArgument(DbConnectionStringBuilderUtil.ActiveDirectoryMSIString); } Credential = credential; @@ -402,33 +402,38 @@ internal bool AsyncCommandInProgress private bool UsesActiveDirectoryIntegrated(SqlConnectionString opt) { - return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated : false; + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated; } private bool UsesActiveDirectoryInteractive(SqlConnectionString opt) { - return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive : false; + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive; } private bool UsesActiveDirectoryDeviceCodeFlow(SqlConnectionString opt) { - return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow : false; + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; } private bool UsesActiveDirectoryManagedIdentity(SqlConnectionString opt) { - return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity : false; + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + } + + private bool UsesActiveDirectoryMSI(SqlConnectionString opt) + { + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI; } private bool UsesAuthentication(SqlConnectionString opt) { - return opt != null ? opt.Authentication != SqlAuthenticationMethod.NotSpecified : false; + return opt != null && opt.Authentication != SqlAuthenticationMethod.NotSpecified; } // Does this connection use Integrated Security? private bool UsesIntegratedSecurity(SqlConnectionString opt) { - return opt != null ? opt.IntegratedSecurity : false; + return opt != null && opt.IntegratedSecurity; } // Does this connection use old style of clear userID or Password in connection string? @@ -477,7 +482,7 @@ public override string ConnectionString if (_credential != null) { // Check for Credential being used with Authentication=ActiveDirectoryIntegrated | ActiveDirectoryInteractive | - // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity. Since a different error string is used + // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity/ActiveDirectoryMSI. Since a different error string is used // for this case in ConnectionString setter vs in Credential setter, check for this error case before calling // CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential, which is common to both setters. if (UsesActiveDirectoryIntegrated(connectionOptions)) @@ -494,7 +499,11 @@ public override string ConnectionString } else if (UsesActiveDirectoryManagedIdentity(connectionOptions)) { - throw SQL.SettingManagedIdentityWithCredential(); + throw SQL.SettingManagedIdentityWithCredential(DbConnectionStringBuilderUtil.ActiveDirectoryManagedIdentityString); + } + else if (UsesActiveDirectoryMSI(connectionOptions)) + { + throw SQL.SettingManagedIdentityWithCredential(DbConnectionStringBuilderUtil.ActiveDirectoryMSIString); } CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential(connectionOptions); @@ -778,28 +787,33 @@ public SqlCredential Credential // check if the usage of credential has any conflict with the keys used in connection string if (value != null) { + var connectionOptions = (SqlConnectionString)ConnectionOptions; // Check for Credential being used with Authentication=ActiveDirectoryIntegrated | ActiveDirectoryInteractive | - // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity. Since a different error string is used + // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity/ActiveDirectoryMSI. Since a different error string is used // for this case in ConnectionString setter vs in Credential setter, check for this error case before calling // CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential, which is common to both setters. - if (UsesActiveDirectoryIntegrated((SqlConnectionString)ConnectionOptions)) + if (UsesActiveDirectoryIntegrated(connectionOptions)) { throw SQL.SettingCredentialWithIntegratedInvalid(); } - else if (UsesActiveDirectoryInteractive((SqlConnectionString)ConnectionOptions)) + else if (UsesActiveDirectoryInteractive(connectionOptions)) { throw SQL.SettingCredentialWithInteractiveInvalid(); } - else if (UsesActiveDirectoryDeviceCodeFlow((SqlConnectionString)ConnectionOptions)) + else if (UsesActiveDirectoryDeviceCodeFlow(connectionOptions)) { throw SQL.SettingCredentialWithDeviceFlowInvalid(); } - else if (UsesActiveDirectoryManagedIdentity((SqlConnectionString)ConnectionOptions)) + else if (UsesActiveDirectoryManagedIdentity(connectionOptions)) + { + throw SQL.SettingCredentialWithManagedIdentityInvalid(DbConnectionStringBuilderUtil.ActiveDirectoryManagedIdentityString); + } + else if (UsesActiveDirectoryMSI(connectionOptions)) { - throw SQL.SettingCredentialWithManagedIdentityInvalid(); + throw SQL.SettingCredentialWithManagedIdentityInvalid(DbConnectionStringBuilderUtil.ActiveDirectoryMSIString); } - CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential((SqlConnectionString)ConnectionOptions); + CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential(connectionOptions); if (_accessToken != null) { throw ADP.InvalidMixedUsageOfCredentialAndAccessToken(); diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs index a463b90597..7e58eaf4a2 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionString.cs @@ -476,9 +476,14 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G throw SQL.DeviceFlowWithUsernamePassword(); } - if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && (HasPasswordKeyword)) + if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && HasPasswordKeyword) { - throw SQL.ManagedIdentityWithPassword(); + throw SQL.ManagedIdentityWithPassword(DbConnectionStringBuilderUtil.ActiveDirectoryManagedIdentityString); + } + + if (Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI && HasPasswordKeyword) + { + throw SQL.ManagedIdentityWithPassword(DbConnectionStringBuilderUtil.ActiveDirectoryMSIString); } } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index 4ae1d7c81b..0ba651a24f 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -1316,7 +1316,8 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, }; } - if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity) + if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI) { requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; _federatedAuthenticationInfoRequested = true; @@ -2122,6 +2123,7 @@ internal void OnFedAuthInfo(SqlFedAuthInfo fedAuthInfo) || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI || (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated && _fedAuthRequired), "Credentials aren't provided for calling MSAL"); Debug.Assert(fedAuthInfo != null, "info should not be null."); @@ -2362,25 +2364,15 @@ internal SqlFedAuthToken GetFedAuthToken(SqlFedAuthInfo fedAuthInfo) break; case SqlAuthenticationMethod.ActiveDirectoryInteractive: case SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow: - if (_activeDirectoryAuthTimeoutRetryHelper.State == ActiveDirectoryAuthenticationTimeoutRetryState.Retrying) - { - _fedAuthToken = _activeDirectoryAuthTimeoutRetryHelper.CachedToken; - } - else - { - authParamsBuilder.WithUserId(ConnectionOptions.UserID); - Task.Run(() => _fedAuthToken = authProvider.AcquireTokenAsync(authParamsBuilder).Result.ToSqlFedAuthToken()).Wait(); - _activeDirectoryAuthTimeoutRetryHelper.CachedToken = _fedAuthToken; - } - break; case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: - username = TdsEnums.NTAUTHORITYANONYMOUSLOGON; + case SqlAuthenticationMethod.ActiveDirectoryMSI: if (_activeDirectoryAuthTimeoutRetryHelper.State == ActiveDirectoryAuthenticationTimeoutRetryState.Retrying) { _fedAuthToken = _activeDirectoryAuthTimeoutRetryHelper.CachedToken; } else { + authParamsBuilder.WithUserId(ConnectionOptions.UserID); Task.Run(() => _fedAuthToken = authProvider.AcquireTokenAsync(authParamsBuilder).Result.ToSqlFedAuthToken()).Wait(); _activeDirectoryAuthTimeoutRetryHelper.CachedToken = _fedAuthToken; } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs index 7b7c6ddde6..d3671cea58 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs @@ -281,9 +281,9 @@ internal static Exception DeviceFlowWithUsernamePassword() { return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_DeviceFlowWithUsernamePassword)); } - internal static Exception ManagedIdentityWithPassword() + internal static Exception ManagedIdentityWithPassword(string authenticationMode) { - return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword)); + return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword, authenticationMode)); } static internal Exception SettingIntegratedWithCredential() { @@ -297,9 +297,9 @@ static internal Exception SettingDeviceFlowWithCredential() { return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingDeviceFlowWithCredential)); } - static internal Exception SettingManagedIdentityWithCredential() + static internal Exception SettingManagedIdentityWithCredential(string authenticationMode) { - return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingManagedIdentityWithCredential)); + return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingManagedIdentityWithCredential, authenticationMode)); } static internal Exception SettingCredentialWithIntegratedArgument() { @@ -313,9 +313,9 @@ static internal Exception SettingCredentialWithDeviceFlowArgument() { return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithDeviceFlow)); } - static internal Exception SettingCredentialWithManagedIdentityArgument() + static internal Exception SettingCredentialWithManagedIdentityArgument(string authenticationMode) { - return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity)); + return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity, authenticationMode)); } static internal Exception SettingCredentialWithIntegratedInvalid() { @@ -329,9 +329,9 @@ static internal Exception SettingCredentialWithDeviceFlowInvalid() { return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithDeviceFlow)); } - static internal Exception SettingCredentialWithManagedIdentityInvalid() + static internal Exception SettingCredentialWithManagedIdentityInvalid(string authenticationMode) { - return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity)); + return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity, authenticationMode)); } internal static Exception NullEmptyTransactionName() { diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs index 8002356a1f..164606fe1c 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs @@ -1140,7 +1140,10 @@ public enum SqlAuthenticationMethod ActiveDirectoryDeviceCodeFlow, /// - ActiveDirectoryManagedIdentity + ActiveDirectoryManagedIdentity, + + /// + ActiveDirectoryMSI } // This enum indicates the state of TransparentNetworkIPResolution // The first attempt when TNIR is on should be sequential. If the first attempt failes next attempts should be parallel. diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs index 9d7f575ea1..70cecd2e3f 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs @@ -400,6 +400,9 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: SqlClientEventSource.Log.TryTraceEvent(" Active Directory Managed Identity authentication"); break; + case SqlAuthenticationMethod.ActiveDirectoryMSI: + SqlClientEventSource.Log.TryTraceEvent(" Active Directory MSI authentication"); + break; case SqlAuthenticationMethod.SqlPassword: SqlClientEventSource.Log.TryTraceEvent(" SQL Password authentication"); break; @@ -7809,6 +7812,7 @@ internal int WriteSessionRecoveryFeatureRequest(SessionData reconnectData, bool workflow = TdsEnums.MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW; break; case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + case SqlAuthenticationMethod.ActiveDirectoryMSI: workflow = TdsEnums.MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY; break; default: diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs index 3e18fe5fc6..aec209d3fd 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs @@ -2851,7 +2851,7 @@ internal class Strings { } /// - /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords.. + /// Looks up a localized string similar to Cannot use 'Authentication={0}' with 'Password' or 'PWD' connection string keywords.. /// internal static string SQL_ManagedIdentityWithPassword { get { @@ -3139,7 +3139,7 @@ internal class Strings { } /// - /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string.. + /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication={0}' has been specified in the connection string.. /// internal static string SQL_SettingCredentialWithManagedIdentity { get { @@ -3175,7 +3175,7 @@ internal class Strings { } /// - /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set.. + /// Looks up a localized string similar to Cannot use 'Authentication={0}', if the Credential property has been set.. /// internal static string SQL_SettingManagedIdentityWithCredential { get { diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx index 76d817db70..2b01c549e7 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx +++ b/src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx @@ -412,7 +412,7 @@ Cannot use 'Authentication=Active Directory Device Code Flow' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords. - Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords. + Cannot use 'Authentication={0}' with 'Password' or 'PWD' connection string keywords. The instance of SQL Server you attempted to connect to requires encryption but this machine does not support it. @@ -1906,13 +1906,13 @@ Cannot set the Credential property if 'Authentication=Active Directory Device Code Flow' has been specified in the connection string. - Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string. + Cannot set the Credential property if 'Authentication={0}' has been specified in the connection string. Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set. - Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set. + Cannot use 'Authentication={0}', if the Credential property has been set. Access token could not be acquired. diff --git a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs index f40f31abc7..eb9c7dce3d 100644 --- a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs +++ b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs @@ -111,6 +111,8 @@ public enum SqlAuthenticationMethod ActiveDirectoryDeviceCodeFlow = 6, /// ActiveDirectoryManagedIdentity = 7, + /// + ActiveDirectoryMSI = 8, /// NotSpecified = 0, /// diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index 186c0f4b10..bdf05aded1 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -522,7 +522,8 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj const string ActiveDirectoryInteractiveString = "Active Directory Interactive"; const string ActiveDirectoryServicePrincipalString = "Active Directory Service Principal"; const string ActiveDirectoryDeviceCodeFlowString = "Active Directory Device Code Flow"; - const string ActiveDirectoryManagedIdentityString = "Active Directory Managed Identity"; + internal const string ActiveDirectoryManagedIdentityString = "Active Directory Managed Identity"; + internal const string ActiveDirectoryMSIString = "Active Directory MSI"; const string SqlCertificateString = "Sql Certificate"; internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result) @@ -573,6 +574,12 @@ internal static bool TryConvertToAuthenticationType(string value, out SqlAuthent result = SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; isSuccess = true; } + else if (StringComparer.InvariantCultureIgnoreCase.Equals(value, ActiveDirectoryMSIString) + || StringComparer.InvariantCultureIgnoreCase.Equals(value, Convert.ToString(SqlAuthenticationMethod.ActiveDirectoryMSI, CultureInfo.InvariantCulture))) + { + result = SqlAuthenticationMethod.ActiveDirectoryMSI; + isSuccess = true; + } #if ADONET_CERT_AUTH else if (StringComparer.InvariantCultureIgnoreCase.Equals(value, SqlCertificateString) || StringComparer.InvariantCultureIgnoreCase.Equals(value, Convert.ToString(SqlAuthenticationMethod.SqlCertificate, CultureInfo.InvariantCulture))) { @@ -663,6 +670,7 @@ internal static bool IsValidAuthenticationTypeValue(SqlAuthenticationMethod valu || value == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal || value == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow || value == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity + || value == SqlAuthenticationMethod.ActiveDirectoryMSI #if ADONET_CERT_AUTH || value == SqlAuthenticationMethod.SqlCertificate #endif @@ -689,6 +697,8 @@ internal static string AuthenticationTypeToString(SqlAuthenticationMethod value) return ActiveDirectoryDeviceCodeFlowString; case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: return ActiveDirectoryManagedIdentityString; + case SqlAuthenticationMethod.ActiveDirectoryMSI: + return ActiveDirectoryMSIString; #if ADONET_CERT_AUTH case SqlAuthenticationMethod.SqlCertificate: return SqlCertificateString; diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs index 734ffc6aff..1bbecafe04 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.cs @@ -21,6 +21,7 @@ internal class SqlAuthenticationProviderManager private const string ActiveDirectoryServicePrincipal = "active directory service principal"; private const string ActiveDirectoryDeviceCodeFlow = "active directory device code flow"; private const string ActiveDirectoryManagedIdentity = "active directory managed identity"; + private const string ActiveDirectoryMSI = "active directory msi"; static SqlAuthenticationProviderManager() { @@ -49,6 +50,7 @@ static SqlAuthenticationProviderManager() Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, azureManagedIdentityAuthenticationProvider); + Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryMSI, azureManagedIdentityAuthenticationProvider); } public static readonly SqlAuthenticationProviderManager Instance; @@ -207,6 +209,8 @@ private static SqlAuthenticationMethod AuthenticationEnumFromString(string authe return SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; case ActiveDirectoryManagedIdentity: return SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + case ActiveDirectoryMSI: + return SqlAuthenticationMethod.ActiveDirectoryMSI; default: throw SQL.UnsupportedAuthentication(authentication); } diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs index d38974778b..c48a540746 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs @@ -333,7 +333,12 @@ public SqlConnection(string connectionString, SqlCredential credential) : this() if (UsesActiveDirectoryManagedIdentity(connectionOptions)) { - throw SQL.SettingCredentialWithManagedIdentityArgument(); + throw SQL.SettingCredentialWithManagedIdentityArgument(DbConnectionStringBuilderUtil.ActiveDirectoryManagedIdentityString); + } + + if (UsesActiveDirectoryMSI(connectionOptions)) + { + throw SQL.SettingCredentialWithManagedIdentityArgument(DbConnectionStringBuilderUtil.ActiveDirectoryMSIString); } Credential = credential; @@ -511,38 +516,43 @@ internal SqlConnectionAttestationProtocol AttestationProtocol // Is this connection is a Context Connection? private bool UsesContextConnection(SqlConnectionString opt) { - return opt != null ? opt.ContextConnection : false; + return opt != null && opt.ContextConnection; } private bool UsesActiveDirectoryIntegrated(SqlConnectionString opt) { - return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated : false; + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated; } private bool UsesActiveDirectoryInteractive(SqlConnectionString opt) { - return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive : false; + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive; } private bool UsesActiveDirectoryDeviceCodeFlow(SqlConnectionString opt) { - return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow : false; + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow; } private bool UsesActiveDirectoryManagedIdentity(SqlConnectionString opt) { - return opt != null ? opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity : false; + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + } + + private bool UsesActiveDirectoryMSI(SqlConnectionString opt) + { + return opt != null && opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI; } private bool UsesAuthentication(SqlConnectionString opt) { - return opt != null ? opt.Authentication != SqlAuthenticationMethod.NotSpecified : false; + return opt != null && opt.Authentication != SqlAuthenticationMethod.NotSpecified; } // Does this connection uses Integrated Security? private bool UsesIntegratedSecurity(SqlConnectionString opt) { - return opt != null ? opt.IntegratedSecurity : false; + return opt != null && opt.IntegratedSecurity; } // Does this connection uses old style of clear userID or Password in connection string? @@ -558,7 +568,7 @@ private bool UsesClearUserIdOrPassword(SqlConnectionString opt) private bool UsesCertificate(SqlConnectionString opt) { - return opt != null ? opt.UsesCertificate : false; + return opt != null && opt.UsesCertificate; } internal SqlConnectionString.TransactionBindingEnum TransactionBinding @@ -692,7 +702,7 @@ override public string ConnectionString if (_credential != null) { // Check for Credential being used with Authentication=ActiveDirectoryIntegrated | ActiveDirectoryInteractive | - // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity. Since a different error string is used + // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity/ActiveDirectoryMSI. Since a different error string is used // for this case in ConnectionString setter vs in Credential setter, check for this error case before calling // CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential, which is common to both setters. if (UsesActiveDirectoryIntegrated(connectionOptions)) @@ -709,7 +719,11 @@ override public string ConnectionString } else if (UsesActiveDirectoryManagedIdentity(connectionOptions)) { - throw SQL.SettingManagedIdentityWithCredential(); + throw SQL.SettingManagedIdentityWithCredential(DbConnectionStringBuilderUtil.ActiveDirectoryManagedIdentityString); + } + else if (UsesActiveDirectoryMSI(connectionOptions)) + { + throw SQL.SettingManagedIdentityWithCredential(DbConnectionStringBuilderUtil.ActiveDirectoryMSIString); } CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential(connectionOptions); @@ -1025,28 +1039,33 @@ public SqlCredential Credential // check if the usage of credential has any conflict with the keys used in connection string if (value != null) { + var connectionOptions = (SqlConnectionString)ConnectionOptions; // Check for Credential being used with Authentication=ActiveDirectoryIntegrated | ActiveDirectoryInteractive | - // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity. Since a different error string is used + // ActiveDirectoryDeviceCodeFlow | ActiveDirectoryManagedIdentity/ActiveDirectoryMSI. Since a different error string is used // for this case in ConnectionString setter vs in Credential setter, check for this error case before calling // CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential, which is common to both setters. - if (UsesActiveDirectoryIntegrated((SqlConnectionString)ConnectionOptions)) + if (UsesActiveDirectoryIntegrated(connectionOptions)) { throw SQL.SettingCredentialWithIntegratedInvalid(); } - else if (UsesActiveDirectoryInteractive((SqlConnectionString)ConnectionOptions)) + else if (UsesActiveDirectoryInteractive(connectionOptions)) { throw SQL.SettingCredentialWithInteractiveInvalid(); } - else if (UsesActiveDirectoryDeviceCodeFlow((SqlConnectionString)ConnectionOptions)) + else if (UsesActiveDirectoryDeviceCodeFlow(connectionOptions)) { throw SQL.SettingCredentialWithDeviceFlowInvalid(); } - else if (UsesActiveDirectoryManagedIdentity((SqlConnectionString)ConnectionOptions)) + else if (UsesActiveDirectoryManagedIdentity(connectionOptions)) + { + throw SQL.SettingCredentialWithManagedIdentityInvalid(DbConnectionStringBuilderUtil.ActiveDirectoryManagedIdentityString); + } + else if (UsesActiveDirectoryMSI(connectionOptions)) { - throw SQL.SettingCredentialWithManagedIdentityInvalid(); + throw SQL.SettingCredentialWithManagedIdentityInvalid(DbConnectionStringBuilderUtil.ActiveDirectoryMSIString); } - CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential((SqlConnectionString)ConnectionOptions); + CheckAndThrowOnInvalidCombinationOfConnectionStringAndSqlCredential(connectionOptions); if (_accessToken != null) { throw ADP.InvalidMixedUsageOfCredentialAndAccessToken(); diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs index 0940f4e181..2b3ffa9d70 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnectionString.cs @@ -568,9 +568,14 @@ internal SqlConnectionString(string connectionString) : base(connectionString, G throw SQL.DeviceFlowWithUsernamePassword(); } - if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && (HasPasswordKeyword)) + if (Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity && HasPasswordKeyword) { - throw SQL.ManagedIdentityWithPassword(); + throw SQL.ManagedIdentityWithPassword(DbConnectionStringBuilderUtil.ActiveDirectoryManagedIdentityString); + } + + if (Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI && HasPasswordKeyword) + { + throw SQL.ManagedIdentityWithPassword(DbConnectionStringBuilderUtil.ActiveDirectoryMSIString); } #if ADONET_CERT_AUTH diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index 40fa178959..e250902f76 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -1587,7 +1587,8 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, fedAuthRequiredPreLoginResponse = _fedAuthRequired }; } - if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity) + if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI) { requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; _federatedAuthenticationInfoRequested = true; @@ -1979,7 +1980,8 @@ private bool ShouldDisableTnir(SqlConnectionString connectionOptions) connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive || connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal || connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow || - connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity || + connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI; // Check if the user had explicitly specified the TNIR option in the connection string or the connection string builder. // If the user has specified the option in the connection string explicitly, then we shouldn't disable TNIR. @@ -2566,6 +2568,7 @@ internal void OnFedAuthInfo(SqlFedAuthInfo fedAuthInfo) || _credential != null || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow || (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated && _fedAuthRequired), "Credentials aren't provided for calling MSAL"); @@ -2782,7 +2785,6 @@ internal SqlFedAuthToken GetFedAuthToken(SqlFedAuthInfo fedAuthInfo) switch (ConnectionOptions.Authentication) { case SqlAuthenticationMethod.ActiveDirectoryIntegrated: - case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: username = TdsEnums.NTAUTHORITYANONYMOUSLOGON; if (_activeDirectoryAuthTimeoutRetryHelper.State == ActiveDirectoryAuthenticationTimeoutRetryState.Retrying) { @@ -2796,6 +2798,8 @@ internal SqlFedAuthToken GetFedAuthToken(SqlFedAuthInfo fedAuthInfo) break; case SqlAuthenticationMethod.ActiveDirectoryInteractive: case SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow: + case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + case SqlAuthenticationMethod.ActiveDirectoryMSI: if (_activeDirectoryAuthTimeoutRetryHelper.State == ActiveDirectoryAuthenticationTimeoutRetryState.Retrying) { fedAuthToken = _activeDirectoryAuthTimeoutRetryHelper.CachedToken; diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs index 89e78f1b77..3e0fec242e 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs @@ -333,9 +333,9 @@ static internal Exception DeviceFlowWithUsernamePassword() { return ADP.Argument(StringsHelper.GetString(Strings.SQL_DeviceFlowWithUsernamePassword)); } - static internal Exception ManagedIdentityWithPassword() + static internal Exception ManagedIdentityWithPassword(string authenticationMode) { - return ADP.Argument(StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword)); + return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword, authenticationMode)); } static internal Exception SettingIntegratedWithCredential() { @@ -349,9 +349,9 @@ static internal Exception SettingDeviceFlowWithCredential() { return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingDeviceFlowWithCredential)); } - static internal Exception SettingManagedIdentityWithCredential() + static internal Exception SettingManagedIdentityWithCredential(string authenticationMode) { - return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingManagedIdentityWithCredential)); + return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingManagedIdentityWithCredential, authenticationMode)); } static internal Exception SettingCredentialWithIntegratedArgument() { @@ -365,9 +365,9 @@ static internal Exception SettingCredentialWithDeviceFlowArgument() { return ADP.Argument(StringsHelper.GetString(Strings.SQL_SettingCredentialWithDeviceFlow)); } - static internal Exception SettingCredentialWithManagedIdentityArgument() + static internal Exception SettingCredentialWithManagedIdentityArgument(string authenticationMode) { - return ADP.Argument(StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity)); + return ADP.Argument(StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity, authenticationMode)); } static internal Exception SettingCredentialWithIntegratedInvalid() { @@ -381,9 +381,9 @@ static internal Exception SettingCredentialWithDeviceFlowInvalid() { return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingCredentialWithDeviceFlow)); } - static internal Exception SettingCredentialWithManagedIdentityInvalid() + static internal Exception SettingCredentialWithManagedIdentityInvalid(string authenticationMode) { - return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity)); + return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_SettingCredentialWithManagedIdentity, authenticationMode)); } static internal Exception InvalidSQLServerVersionUnknown() { diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs index c9d1858309..5e422fef74 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsEnums.cs @@ -1102,6 +1102,9 @@ public enum SqlAuthenticationMethod /// ActiveDirectoryManagedIdentity, + + /// + ActiveDirectoryMSI, #if ADONET_CERT_AUTH SqlCertificate #endif diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs index ba77bb930d..bb4ab023ef 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs @@ -551,6 +551,9 @@ internal void ProcessPendingAck(TdsParserStateObject stateObj) case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: SqlClientEventSource.Log.TryTraceEvent(" Active Directory Managed Identity authentication"); break; + case SqlAuthenticationMethod.ActiveDirectoryMSI: + SqlClientEventSource.Log.TryTraceEvent(" Active Directory MSI authentication"); + break; case SqlAuthenticationMethod.SqlPassword: SqlClientEventSource.Log.TryTraceEvent(" SQL Password authentication"); break; @@ -8573,6 +8576,7 @@ internal int WriteSessionRecoveryFeatureRequest(SessionData reconnectData, bool workflow = TdsEnums.MSALWORKFLOW_ACTIVEDIRECTORYDEVICECODEFLOW; break; case SqlAuthenticationMethod.ActiveDirectoryManagedIdentity: + case SqlAuthenticationMethod.ActiveDirectoryMSI: workflow = TdsEnums.MSALWORKFLOW_ACTIVEDIRECTORYMANAGEDIDENTITY; break; default: diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs index 65a1262dff..acfa8b7778 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.Designer.cs @@ -9658,7 +9658,7 @@ internal class Strings { } /// - /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords.. + /// Looks up a localized string similar to Cannot use 'Authentication={0}' with 'Password' or 'PWD' connection string keywords.. /// internal static string SQL_ManagedIdentityWithPassword { get { @@ -10000,7 +10000,7 @@ internal class Strings { } /// - /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string.. + /// Looks up a localized string similar to Cannot set the Credential property if 'Authentication={0}' has been specified in the connection string.. /// internal static string SQL_SettingCredentialWithManagedIdentity { get { @@ -10036,7 +10036,7 @@ internal class Strings { } /// - /// Looks up a localized string similar to Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set.. + /// Looks up a localized string similar to Cannot use 'Authentication={0}', if the Credential property has been set.. /// internal static string SQL_SettingManagedIdentityWithCredential { get { diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx index aaed6f0f0b..3c2d2c8e0d 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx +++ b/src/Microsoft.Data.SqlClient/netfx/src/Resources/Strings.resx @@ -2503,7 +2503,7 @@ Cannot use 'Authentication=Active Directory Device Code Flow' with 'User ID', 'UID', 'Password' or 'PWD' connection string keywords. - Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords. + Cannot use 'Authentication={0}' with 'Password' or 'PWD' connection string keywords. Cannot use 'Authentication=Active Directory Integrated', if the Credential property has been set. @@ -4576,13 +4576,13 @@ Cannot set the Credential property if 'Authentication=Active Directory Device Code Flow' has been specified in the connection string. - Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string. + Cannot set the Credential property if 'Authentication={0}' has been specified in the connection string. Cannot use 'Authentication=Active Directory Device Code Flow', if the Credential property has been set. - Cannot use 'Authentication=Active Directory Managed Identity', if the Credential property has been set. + Cannot use 'Authentication={0}', if the Credential property has been set. Access token could not be acquired. diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index dd58b10675..6e06db8901 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -41,7 +41,7 @@ public sealed class AzureManagedIdentityAuthenticationProvider : SqlAuthenticati // Configurable timeout for MSI retry logic internal readonly int _retryTimeoutInSeconds = DefaultRetryTimeout; internal readonly int _maxRetryCount = DefaultMaxRetryCount; - + /// public AzureManagedIdentityAuthenticationProvider(int retryTimeoutInSeconds = DefaultRetryTimeout, int maxRetryCount = DefaultMaxRetryCount, HttpClient httpClient = null) { @@ -163,7 +163,8 @@ HttpRequestMessage getRequestMessage() /// public override bool IsSupported(SqlAuthenticationMethod authentication) { - return authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity; + return authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity + || authentication == SqlAuthenticationMethod.ActiveDirectoryMSI; } } diff --git a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs index 5272bbdc58..dc85dab6dd 100644 --- a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs @@ -27,6 +27,8 @@ public class SqlConnectionStringBuilderTest [InlineData("Authentication = ActiveDirectoryServicePrincipal ")] [InlineData("Authentication = Active Directory Managed Identity ")] [InlineData("Authentication = ActiveDirectoryManagedIdentity ")] + [InlineData("Authentication = Active Directory MSI ")] + [InlineData("Authentication = ActiveDirectoryMSI ")] [InlineData("Command Timeout = 5")] [InlineData("Command Timeout = 15")] [InlineData("Command Timeout = 0")] diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs index 68919c39eb..025b62c9ef 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs @@ -355,6 +355,76 @@ public static void ActiveDirectoryDeviceCodeFlowWithCredentialsMustFail() Assert.Contains(expectedMessage, e.Message); } + [ConditionalFact(nameof(IsAADConnStringsSetup))] + public static void ActiveDirectoryManagedIdentityWithCredentialsMustFail() + { + // connection fails with expected error message. + string[] credKeys = { "Authentication", "User ID", "Password", "UID", "PWD" }; + string connStrWithNoCred = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys) + + "Authentication=Active Directory Managed Identity;"; + + SecureString str = new SecureString(); + foreach (char c in "hello") + { + str.AppendChar(c); + } + str.MakeReadOnly(); + SqlCredential credential = new SqlCredential("someuser", str); + InvalidOperationException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred, credential)); + + string expectedMessage = "Cannot set the Credential property if 'Authentication=Active Directory Managed Identity' has been specified in the connection string."; + Assert.Contains(expectedMessage, e.Message); + } + + [ConditionalFact(nameof(IsAADConnStringsSetup))] + public static void ActiveDirectoryManagedIdentityWithPasswordMustFail() + { + // connection fails with expected error message. + string[] credKeys = { "Authentication", "User ID", "Password", "UID", "PWD" }; + string connStrWithNoCred = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys) + + "Authentication=Active Directory Managed Identity; Password=anything"; + + InvalidOperationException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); + + string expectedMessage = "Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords."; + Assert.Contains(expectedMessage, e.Message); + } + + [ConditionalFact(nameof(IsAADConnStringsSetup))] + public static void ActiveDirectoryMSIWithCredentialsMustFail() + { + // connection fails with expected error message. + string[] credKeys = { "Authentication", "User ID", "Password", "UID", "PWD" }; + string connStrWithNoCred = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys) + + "Authentication=Active Directory MSI;"; + + SecureString str = new SecureString(); + foreach (char c in "hello") + { + str.AppendChar(c); + } + str.MakeReadOnly(); + SqlCredential credential = new SqlCredential("someuser", str); + InvalidOperationException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred, credential)); + + string expectedMessage = "Cannot set the Credential property if 'Authentication=Active Directory MSI' has been specified in the connection string."; + Assert.Contains(expectedMessage, e.Message); + } + + [ConditionalFact(nameof(IsAADConnStringsSetup))] + public static void ActiveDirectoryMSIWithPasswordMustFail() + { + // connection fails with expected error message. + string[] credKeys = { "Authentication", "User ID", "Password", "UID", "PWD" }; + string connStrWithNoCred = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys) + + "Authentication=ActiveDirectoryMSI; Password=anything"; + + InvalidOperationException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); + + string expectedMessage = "Cannot use 'Authentication=Active Directory MSI' with 'Password' or 'PWD' connection string keywords."; + Assert.Contains(expectedMessage, e.Message); + } + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.IsIntegratedSecuritySetup), nameof(DataTestUtility.AreConnStringsSetup))] public static void ADInteractiveUsingSSPI() { From 2e815e4c1f8ec16c505848c2fe3dcb8cad1a6d3b Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Fri, 18 Sep 2020 15:32:43 -0700 Subject: [PATCH 07/23] Change to ArgumentException --- .../netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs | 2 +- .../netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs | 2 +- .../ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs index d3671cea58..5d33dfb38e 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs @@ -283,7 +283,7 @@ internal static Exception DeviceFlowWithUsernamePassword() } internal static Exception ManagedIdentityWithPassword(string authenticationMode) { - return ADP.InvalidOperation(System.StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword, authenticationMode)); + return ADP.Argument(System.StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword, authenticationMode)); } static internal Exception SettingIntegratedWithCredential() { diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs index 3e0fec242e..4ff15e761e 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlUtil.cs @@ -335,7 +335,7 @@ static internal Exception DeviceFlowWithUsernamePassword() } static internal Exception ManagedIdentityWithPassword(string authenticationMode) { - return ADP.InvalidOperation(StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword, authenticationMode)); + return ADP.Argument(StringsHelper.GetString(Strings.SQL_ManagedIdentityWithPassword, authenticationMode)); } static internal Exception SettingIntegratedWithCredential() { diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs index 025b62c9ef..1a6393eab8 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs @@ -384,7 +384,7 @@ public static void ActiveDirectoryManagedIdentityWithPasswordMustFail() string connStrWithNoCred = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys) + "Authentication=Active Directory Managed Identity; Password=anything"; - InvalidOperationException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); + ArgumentException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); string expectedMessage = "Cannot use 'Authentication=Active Directory Managed Identity' with 'Password' or 'PWD' connection string keywords."; Assert.Contains(expectedMessage, e.Message); @@ -419,7 +419,7 @@ public static void ActiveDirectoryMSIWithPasswordMustFail() string connStrWithNoCred = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys) + "Authentication=ActiveDirectoryMSI; Password=anything"; - InvalidOperationException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); + ArgumentException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); string expectedMessage = "Cannot use 'Authentication=Active Directory MSI' with 'Password' or 'PWD' connection string keywords."; Assert.Contains(expectedMessage, e.Message); From 569470abeea4cb1af4c5c37bf83af5e97d7f7192 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Mon, 21 Sep 2020 16:59:52 -0700 Subject: [PATCH 08/23] Tests for Managed Identity - All pipelines updated --- ...reManagedIdentityAuthenticationProvider.cs | 2 + .../ManualTests/DataCommon/AADUtility.cs | 182 +++++++++++++++++- .../ManualTests/DataCommon/DataTestUtility.cs | 38 +++- .../ConnectivityTests/AADConnectionTest.cs | 113 +++++++++++ .../Config.cs | 1 + .../config.default.json | 3 +- 6 files changed, 336 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index 6e06db8901..e451f157fd 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -168,6 +168,7 @@ public override bool IsSupported(SqlAuthenticationMethod authentication) } } + #region IMDS Retry Helper internal static class SqlManagedIdentityRetryHelper { internal const int DeltaBackOffInSeconds = 2; @@ -246,4 +247,5 @@ internal static async Task SendAsyncWithRetry(this HttpClie } } } + #endregion } diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs index 5e437322fb..9ca337e4dc 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs @@ -3,6 +3,10 @@ // See the LICENSE file in the project root for more information. using System; +using System.Diagnostics; +using System.Net.Http; +using System.Text.RegularExpressions; +using System.Threading; using System.Threading.Tasks; using Microsoft.IdentityModel.Clients.ActiveDirectory; @@ -17,10 +21,186 @@ public static async Task AzureActiveDirectoryAuthenticationCallback(stri AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred); if (result == null) { - throw new InvalidOperationException($"Failed to retrieve an access token for {resource}"); + throw new Exception($"Failed to retrieve an access token for {resource}"); } return result.AccessToken; } + + public static async Task GetManagedIdentityToken(string objectId) => + await new MockManagedIdentityTokenProvider().AcquireTokenAsync(objectId).ConfigureAwait(false); + + } + + #region Mock Managed Identity Token Provider + internal class MockManagedIdentityTokenProvider + { + // HttpClient is intended to be instantiated once and re-used throughout the life of an application. +#if NETFRAMEWORK + private static readonly HttpClient s_defaultHttpClient = new HttpClient(); +#else + private static readonly HttpClient s_defaultHttpClient = new HttpClient(new HttpClientHandler() { CheckCertificateRevocationList = true }); +#endif + + private const string AzureVmImdsApiVersion = "&api-version=2018-02-01"; + private const string AccessToken = "access_token"; + private const string Resource = "https://database.windows.net"; + + + private const int DefaultRetryTimeout = 0; + private const int DefaultMaxRetryCount = 5; + + // Azure Instance Metadata Service (IMDS) endpoint + private const string AzureVmImdsEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token"; + + // Timeout for Azure IMDS probe request + internal const int AzureVmImdsProbeTimeoutInSeconds = 2; + internal readonly TimeSpan _azureVmImdsProbeTimeout = TimeSpan.FromSeconds(AzureVmImdsProbeTimeoutInSeconds); + + // Configurable timeout for MSI retry logic + internal readonly int _retryTimeoutInSeconds = DefaultRetryTimeout; + internal readonly int _maxRetryCount = DefaultMaxRetryCount; + + public async Task AcquireTokenAsync(string objectId = null) + { + // Use the httpClient specified in the constructor. If it was not specified in the constructor, use the default httpClient. + HttpClient httpClient = s_defaultHttpClient; + + try + { + // If user assigned managed identity is specified, include object ID parameter in request + string objectIdParameter = objectId != default + ? $"&object_id={objectId}" + : string.Empty; + + // Craft request as per the MSI protocol + var requestUrl = $"{AzureVmImdsEndpoint}?resource={Resource}{objectIdParameter}{AzureVmImdsApiVersion}"; + + HttpResponseMessage response = null; + + try + { + response = await httpClient.SendAsyncWithRetry(getRequestMessage, _retryTimeoutInSeconds, _maxRetryCount, default).ConfigureAwait(false); + HttpRequestMessage getRequestMessage() + { + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); + request.Headers.Add("Metadata", "true"); + return request; + } + } + catch (HttpRequestException) + { + // Not throwing exception if Access Token cannot be fetched. Tests will be disabled. + return null; + } + + // If the response is successful, it should have JSON response with an access_token field + if (response.IsSuccessStatusCode) + { + string jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + int accessTokenStartIndex = jsonResponse.IndexOf(AccessToken) + AccessToken.Length + 3; + return jsonResponse.Substring(accessTokenStartIndex, jsonResponse.IndexOf('"', accessTokenStartIndex) - accessTokenStartIndex); + } + + // RetryFailure : Failed after 5 retries. + // NonRetryableError : Received a non-retryable error. + string errorStatusDetail = response.IsRetryableStatusCode() + ? "Failed after 5 retries" + : "Received a non-retryable error."; + + string errorText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + + // Not throwing exception if Access Token cannot be fetched. Tests will be disabled. + return null; + } + catch (Exception) + { + // Not throwing exception if Access Token cannot be fetched. Tests will be disabled. + return null; + } + } } + + #region IMDS Retry Helper + internal static class SqlManagedIdentityRetryHelper + { + internal const int DeltaBackOffInSeconds = 2; + internal const string RetryTimeoutError = "Reached retry timeout limit set by MsiRetryTimeout parameter in connection string."; + + // for unit test purposes + internal static bool s_waitBeforeRetry = true; + + internal static bool IsRetryableStatusCode(this HttpResponseMessage response) + { + // 404 NotFound, 429 TooManyRequests, and 5XX server error status codes are retryable + return Regex.IsMatch(((int)response.StatusCode).ToString(), @"404|429|5\d{2}"); + } + + /// + /// Implements recommended retry guidance here: https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#retry-guidance + /// + internal static async Task SendAsyncWithRetry(this HttpClient httpClient, Func getRequest, int retryTimeoutInSeconds, int maxRetryCount, CancellationToken cancellationToken) + { + using (var timeoutTokenSource = new CancellationTokenSource()) + using (var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(timeoutTokenSource.Token, cancellationToken)) + { + try + { + // if retry timeout is configured, configure cancellation after timeout period elapses + if (retryTimeoutInSeconds > 0) + { + timeoutTokenSource.CancelAfter(TimeSpan.FromSeconds(retryTimeoutInSeconds)); + } + + var attempts = 0; + var backoffTimeInSecs = 0; + HttpResponseMessage response; + + while (true) + { + attempts++; + + try + { + response = await httpClient.SendAsync(getRequest(), linkedTokenSource.Token).ConfigureAwait(false); + + if (response.IsSuccessStatusCode || !response.IsRetryableStatusCode() || attempts == maxRetryCount) + { + break; + } + } + catch (HttpRequestException) + { + if (attempts == maxRetryCount) + { + throw; + } + } + + if (s_waitBeforeRetry) + { + // use recommended exponential backoff strategy, and use linked token wait handle so caller or retry timeout is still able to cancel + backoffTimeInSecs += (int)Math.Pow(DeltaBackOffInSeconds, attempts); + linkedTokenSource.Token.WaitHandle.WaitOne(TimeSpan.FromSeconds(backoffTimeInSecs)); + linkedTokenSource.Token.ThrowIfCancellationRequested(); + } + } + + return response; + } + catch (OperationCanceledException) + { + if (timeoutTokenSource.IsCancellationRequested) + { + throw new TimeoutException(RetryTimeoutError); + } + + throw; + } + } + } + } + #endregion + #endregion } + diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/DataTestUtility.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/DataTestUtility.cs index 65727fbc66..168219825c 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/DataTestUtility.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/DataTestUtility.cs @@ -47,12 +47,16 @@ public static class DataTestUtility public static readonly string DNSCachingServerTR = null; // this is for the tenant ring public static readonly bool IsDNSCachingSupportedCR = false; // this is for the control ring public static readonly bool IsDNSCachingSupportedTR = false; // this is for the tenant ring + public static readonly string UserManagedIdentityObjectId = null; public static readonly string EnclaveAzureDatabaseConnString = null; - + public static bool ManagedIdentity = true; public static string AADAccessToken = null; + public static string AADSystemIdentityAccessToken = null; + public static string AADUserIdentityAccessToken = null; public const string UdtTestDbName = "UdtTestDb"; public const string AKVKeyName = "TestSqlClientAzureKeyVaultProvider"; + private const string ManagedNetworkingAppContextSwitch = "Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows"; private static Dictionary AvailableDatabases; @@ -83,6 +87,7 @@ static DataTestUtility() IsDNSCachingSupportedCR = c.IsDNSCachingSupportedCR; IsDNSCachingSupportedTR = c.IsDNSCachingSupportedTR; EnclaveAzureDatabaseConnString = c.EnclaveAzureDatabaseConnString; + UserManagedIdentityObjectId = c.UserManagedIdentityObjectId; System.Net.ServicePointManager.SecurityProtocol |= System.Net.SecurityProtocolType.Tls12; @@ -403,8 +408,39 @@ public static string GetAccessToken() return (null != AADAccessToken) ? new string(AADAccessToken.ToCharArray()) : null; } + public static string GetSystemIdentityAccessToken() + { + if (true == ManagedIdentity && null == AADSystemIdentityAccessToken && IsAADPasswordConnStrSetup()) + { + AADSystemIdentityAccessToken = AADUtility.GetManagedIdentityToken(null).GetAwaiter().GetResult(); + if (AADSystemIdentityAccessToken == null) + { + ManagedIdentity = false; + } + } + return (null != AADSystemIdentityAccessToken) ? new string(AADSystemIdentityAccessToken.ToCharArray()) : null; + } + + public static string GetUserIdentityAccessToken() + { + if (true == ManagedIdentity && null == AADUserIdentityAccessToken && IsAADPasswordConnStrSetup()) + { + // Pass User Assigned Managed Identity Object Id here. + AADUserIdentityAccessToken = AADUtility.GetManagedIdentityToken(UserManagedIdentityObjectId).GetAwaiter().GetResult(); + if (AADSystemIdentityAccessToken == null) + { + ManagedIdentity = false; + } + } + return (null != AADUserIdentityAccessToken) ? new string(AADUserIdentityAccessToken.ToCharArray()) : null; + } + public static bool IsAccessTokenSetup() => !string.IsNullOrEmpty(GetAccessToken()); + public static bool IsSystemIdentityTokenSetup() => !string.IsNullOrEmpty(GetSystemIdentityAccessToken()); + + public static bool IsUserIdentityTokenSetup() => !string.IsNullOrEmpty(GetUserIdentityAccessToken()); + public static bool IsFileStreamSetup() => SupportsFileStream; private static bool CheckException(Exception ex, string exceptionMessage, bool innerExceptionMustBeNull) where TException : Exception diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs index 1a6393eab8..91852fd9be 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs @@ -20,11 +20,15 @@ private static void ConnectAndDisconnect(string connectionString, SqlCredential conn.Credential = credential; } conn.Open(); + + Assert.True(conn.State == System.Data.ConnectionState.Open); } } + private static bool IsAzure() => !DataTestUtility.IsNotAzureServer(); private static bool IsAccessTokenSetup() => DataTestUtility.IsAccessTokenSetup(); private static bool IsAADConnStringsSetup() => DataTestUtility.IsAADPasswordConnStrSetup(); + private static bool IsManagedIdentitySetup() => DataTestUtility.ManagedIdentity; [ConditionalFact(nameof(IsAccessTokenSetup), nameof(IsAADConnStringsSetup))] public static void AccessTokenTest() @@ -37,6 +41,8 @@ public static void AccessTokenTest() { connection.AccessToken = DataTestUtility.GetAccessToken(); connection.Open(); + + Assert.True(connection.State == System.Data.ConnectionState.Open); } } @@ -463,5 +469,112 @@ public static void ConnectionSpeed() } } } + + #region Managed Identity Authentication tests + + [ConditionalFact(nameof(IsAADConnStringsSetup), nameof(IsManagedIdentitySetup))] + public static void SystemAssigned_ManagedIdentityTest() + { + string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD" }; + string connStr = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, removeKeys) + + $"Authentication=Active Directory Managed Identity;"; + ConnectAndDisconnect(connStr); + } + + [ConditionalFact(nameof(IsAADConnStringsSetup), nameof(IsManagedIdentitySetup))] + public static void UserAssigned_ManagedIdentityTest() + { + string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD" }; + string connStr = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, removeKeys) + + $"Authentication=Active Directory Managed Identity; User Id={DataTestUtility.UserManagedIdentityObjectId};"; + ConnectAndDisconnect(connStr); + } + + [ConditionalFact(nameof(IsAADConnStringsSetup), nameof(IsManagedIdentitySetup))] + public static void AccessToken_SystemManagedIdentityTest() + { + string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD" }; + string connectionString = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, removeKeys); + using (SqlConnection conn = new SqlConnection(connectionString)) + { + conn.AccessToken = DataTestUtility.GetSystemIdentityAccessToken(); + conn.Open(); + + Assert.True(conn.State == System.Data.ConnectionState.Open); + } + } + + [ConditionalFact(nameof(IsAADConnStringsSetup), nameof(IsManagedIdentitySetup))] + public static void AccessToken_UserManagedIdentityTest() + { + string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD" }; + string connectionString = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, removeKeys); + using (SqlConnection conn = new SqlConnection(connectionString)) + { + conn.AccessToken = DataTestUtility.GetUserIdentityAccessToken(); + conn.Open(); + + Assert.True(conn.State == System.Data.ConnectionState.Open); + } + } + + [ConditionalFact(nameof(DataTestUtility.AreConnStringsSetup), nameof(IsAzure))] + public static void Azure_SystemManagedIdentityTest() + { + string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD", "Trusted_Connection", "Integrated Security" }; + string connectionString = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.TCPConnectionString, removeKeys) + + $"Authentication=Active Directory Managed Identity;"; + + using (SqlConnection conn = new SqlConnection(connectionString)) + { + conn.Open(); + + Assert.True(conn.State == System.Data.ConnectionState.Open); + } + } + + [ConditionalFact(nameof(DataTestUtility.AreConnStringsSetup), nameof(IsAzure))] + public static void Azure_UserManagedIdentityTest() + { + string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD", "Trusted_Connection", "Integrated Security" }; + string connectionString = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.TCPConnectionString, removeKeys) + + $"Authentication=Active Directory Managed Identity; User Id={DataTestUtility.UserManagedIdentityObjectId}"; + + using (SqlConnection conn = new SqlConnection(connectionString)) + { + conn.Open(); + + Assert.True(conn.State == System.Data.ConnectionState.Open); + } + } + + [ConditionalFact(nameof(DataTestUtility.AreConnStringsSetup), nameof(IsAzure))] + public static void Azure_AccessToken_SystemManagedIdentityTest() + { + string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD", "Trusted_Connection", "Integrated Security" }; + string connectionString = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.TCPConnectionString, removeKeys); + using (SqlConnection conn = new SqlConnection(connectionString)) + { + conn.AccessToken = DataTestUtility.GetSystemIdentityAccessToken(); + conn.Open(); + + Assert.True(conn.State == System.Data.ConnectionState.Open); + } + } + + [ConditionalFact(nameof(DataTestUtility.AreConnStringsSetup), nameof(IsAzure))] + public static void Azure_AccessToken_UserManagedIdentityTest() + { + string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD", "Trusted_Connection", "Integrated Security" }; + string connectionString = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.TCPConnectionString, removeKeys); + using (SqlConnection conn = new SqlConnection(connectionString)) + { + conn.AccessToken = DataTestUtility.GetUserIdentityAccessToken(); + conn.Open(); + + Assert.True(conn.State == System.Data.ConnectionState.Open); + } + } + #endregion } } diff --git a/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/Config.cs b/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/Config.cs index f0e71edadb..e5d6100f63 100644 --- a/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/Config.cs +++ b/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/Config.cs @@ -35,6 +35,7 @@ public class Config public bool IsDNSCachingSupportedCR = false; // this is for the control ring public bool IsDNSCachingSupportedTR = false; // this is for the tenant ring public string EnclaveAzureDatabaseConnString = null; + public string UserManagedIdentityObjectId = null; public static Config Load(string configPath = @"config.json") { diff --git a/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/config.default.json b/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/config.default.json index 2d1fa10a65..1d23281346 100644 --- a/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/config.default.json +++ b/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/config.default.json @@ -18,5 +18,6 @@ "SupportsFileStream": false, "UseManagedSNIOnWindows": false, "IsAzureSynapse": false, - "EnclaveAzureDatabaseConnString": "" + "EnclaveAzureDatabaseConnString": "", + "UserManagedIdentityObjectId": "" } From b7d18fb7827d2065839a098cefd22f6e2c7f2535 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Mon, 21 Sep 2020 17:16:45 -0700 Subject: [PATCH 09/23] Fix for .NET Standard + test fix --- .../SqlAuthenticationProviderManager.NetCoreApp.cs | 1 - .../SqlAuthenticationProviderManager.NetStandard.cs | 5 ++++- .../SQL/ConnectivityTests/AADConnectionTest.cs | 9 +++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs index 01b617d5d8..5873aa89da 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetCoreApp.cs @@ -43,7 +43,6 @@ static SqlAuthenticationProviderManager() Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, azureManagedIdentityAuthenticationProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryMSI, azureManagedIdentityAuthenticationProvider); - } /// diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetStandard.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetStandard.cs index 5e46a588c9..ff488ce65a 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetStandard.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlAuthenticationProviderManager.NetStandard.cs @@ -9,13 +9,16 @@ internal partial class SqlAuthenticationProviderManager static SqlAuthenticationProviderManager() { var activeDirectoryAuthProvider = new ActiveDirectoryAuthenticationProvider(); + var azureManagedIdentityAuthenticationProvider = new AzureManagedIdentityAuthenticationProvider(); + Instance = new SqlAuthenticationProviderManager(); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryPassword, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryIntegrated, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); - Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, activeDirectoryAuthProvider); + Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, azureManagedIdentityAuthenticationProvider); + Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryMSI, azureManagedIdentityAuthenticationProvider); } } } diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs index 91852fd9be..fa42eaa640 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs @@ -25,6 +25,7 @@ private static void ConnectAndDisconnect(string connectionString, SqlCredential } } + private static bool AreConnStringsSetup() => DataTestUtility.AreConnStringsSetup(); private static bool IsAzure() => !DataTestUtility.IsNotAzureServer(); private static bool IsAccessTokenSetup() => DataTestUtility.IsAccessTokenSetup(); private static bool IsAADConnStringsSetup() => DataTestUtility.IsAADPasswordConnStrSetup(); @@ -518,7 +519,7 @@ public static void AccessToken_UserManagedIdentityTest() } } - [ConditionalFact(nameof(DataTestUtility.AreConnStringsSetup), nameof(IsAzure))] + [ConditionalFact(nameof(AreConnStringsSetup), nameof(IsAzure))] public static void Azure_SystemManagedIdentityTest() { string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD", "Trusted_Connection", "Integrated Security" }; @@ -533,7 +534,7 @@ public static void Azure_SystemManagedIdentityTest() } } - [ConditionalFact(nameof(DataTestUtility.AreConnStringsSetup), nameof(IsAzure))] + [ConditionalFact(nameof(AreConnStringsSetup), nameof(IsAzure))] public static void Azure_UserManagedIdentityTest() { string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD", "Trusted_Connection", "Integrated Security" }; @@ -548,7 +549,7 @@ public static void Azure_UserManagedIdentityTest() } } - [ConditionalFact(nameof(DataTestUtility.AreConnStringsSetup), nameof(IsAzure))] + [ConditionalFact(nameof(AreConnStringsSetup), nameof(IsAzure))] public static void Azure_AccessToken_SystemManagedIdentityTest() { string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD", "Trusted_Connection", "Integrated Security" }; @@ -562,7 +563,7 @@ public static void Azure_AccessToken_SystemManagedIdentityTest() } } - [ConditionalFact(nameof(DataTestUtility.AreConnStringsSetup), nameof(IsAzure))] + [ConditionalFact(nameof(AreConnStringsSetup), nameof(IsAzure))] public static void Azure_AccessToken_UserManagedIdentityTest() { string[] removeKeys = { "Authentication", "User ID", "Password", "UID", "PWD", "Trusted_Connection", "Integrated Security" }; From baa2d21c9a2bd7b2b958b40dba8309beb281bc71 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Mon, 21 Sep 2020 17:54:47 -0700 Subject: [PATCH 10/23] Minor fix --- .../tests/ManualTests/DataCommon/AADUtility.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs index 9ca337e4dc..babf41c453 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs @@ -44,7 +44,7 @@ internal class MockManagedIdentityTokenProvider private const string AzureVmImdsApiVersion = "&api-version=2018-02-01"; private const string AccessToken = "access_token"; - private const string Resource = "https://database.windows.net"; + private const string Resource = "https://database.windows.net/"; private const int DefaultRetryTimeout = 0; From 02728d91801296d87ac13250093ac4276cf8b433 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Mon, 21 Sep 2020 18:14:13 -0700 Subject: [PATCH 11/23] Temporary disable test --- .../tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs index fa42eaa640..1d001db9cb 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs @@ -491,6 +491,7 @@ public static void UserAssigned_ManagedIdentityTest() ConnectAndDisconnect(connStr); } + [ActiveIssue(1)] // Temporary disabling test for further investigation. [ConditionalFact(nameof(IsAADConnStringsSetup), nameof(IsManagedIdentitySetup))] public static void AccessToken_SystemManagedIdentityTest() { From 6849641c5e4005a38c086b5d5b83610d80a25733 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Tue, 22 Sep 2020 17:56:58 -0700 Subject: [PATCH 12/23] Attempt test fix - works in standalone app --- .../tests/ManualTests/DataCommon/AADUtility.cs | 4 ++-- .../ManualTests/DataCommon/DataTestUtility.cs | 14 +++++++------- .../SQL/ConnectivityTests/AADConnectionTest.cs | 3 +-- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs index babf41c453..fd0926af24 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs @@ -27,7 +27,7 @@ public static async Task AzureActiveDirectoryAuthenticationCallback(stri return result.AccessToken; } - public static async Task GetManagedIdentityToken(string objectId) => + public static async Task GetManagedIdentityToken(string objectId = null) => await new MockManagedIdentityTokenProvider().AcquireTokenAsync(objectId).ConfigureAwait(false); } @@ -69,7 +69,7 @@ public async Task AcquireTokenAsync(string objectId = null) try { // If user assigned managed identity is specified, include object ID parameter in request - string objectIdParameter = objectId != default + string objectIdParameter = objectId != null ? $"&object_id={objectId}" : string.Empty; diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/DataTestUtility.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/DataTestUtility.cs index 168219825c..81f2689bd3 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/DataTestUtility.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/DataTestUtility.cs @@ -50,7 +50,7 @@ public static class DataTestUtility public static readonly string UserManagedIdentityObjectId = null; public static readonly string EnclaveAzureDatabaseConnString = null; - public static bool ManagedIdentity = true; + public static bool ManagedIdentitySupported = true; public static string AADAccessToken = null; public static string AADSystemIdentityAccessToken = null; public static string AADUserIdentityAccessToken = null; @@ -410,12 +410,12 @@ public static string GetAccessToken() public static string GetSystemIdentityAccessToken() { - if (true == ManagedIdentity && null == AADSystemIdentityAccessToken && IsAADPasswordConnStrSetup()) + if (true == ManagedIdentitySupported && null == AADSystemIdentityAccessToken && IsAADPasswordConnStrSetup()) { - AADSystemIdentityAccessToken = AADUtility.GetManagedIdentityToken(null).GetAwaiter().GetResult(); + AADSystemIdentityAccessToken = AADUtility.GetManagedIdentityToken().GetAwaiter().GetResult(); if (AADSystemIdentityAccessToken == null) { - ManagedIdentity = false; + ManagedIdentitySupported = false; } } return (null != AADSystemIdentityAccessToken) ? new string(AADSystemIdentityAccessToken.ToCharArray()) : null; @@ -423,13 +423,13 @@ public static string GetSystemIdentityAccessToken() public static string GetUserIdentityAccessToken() { - if (true == ManagedIdentity && null == AADUserIdentityAccessToken && IsAADPasswordConnStrSetup()) + if (true == ManagedIdentitySupported && null == AADUserIdentityAccessToken && IsAADPasswordConnStrSetup()) { // Pass User Assigned Managed Identity Object Id here. AADUserIdentityAccessToken = AADUtility.GetManagedIdentityToken(UserManagedIdentityObjectId).GetAwaiter().GetResult(); - if (AADSystemIdentityAccessToken == null) + if (AADUserIdentityAccessToken == null) { - ManagedIdentity = false; + ManagedIdentitySupported = false; } } return (null != AADUserIdentityAccessToken) ? new string(AADUserIdentityAccessToken.ToCharArray()) : null; diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs index 1d001db9cb..671a8d8c6a 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs @@ -29,7 +29,7 @@ private static void ConnectAndDisconnect(string connectionString, SqlCredential private static bool IsAzure() => !DataTestUtility.IsNotAzureServer(); private static bool IsAccessTokenSetup() => DataTestUtility.IsAccessTokenSetup(); private static bool IsAADConnStringsSetup() => DataTestUtility.IsAADPasswordConnStrSetup(); - private static bool IsManagedIdentitySetup() => DataTestUtility.ManagedIdentity; + private static bool IsManagedIdentitySetup() => DataTestUtility.ManagedIdentitySupported; [ConditionalFact(nameof(IsAccessTokenSetup), nameof(IsAADConnStringsSetup))] public static void AccessTokenTest() @@ -491,7 +491,6 @@ public static void UserAssigned_ManagedIdentityTest() ConnectAndDisconnect(connStr); } - [ActiveIssue(1)] // Temporary disabling test for further investigation. [ConditionalFact(nameof(IsAADConnStringsSetup), nameof(IsManagedIdentitySetup))] public static void AccessToken_SystemManagedIdentityTest() { From 516706d7aa20edd9d8f621270b0777ddb9f21220 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Tue, 22 Sep 2020 18:30:27 -0700 Subject: [PATCH 13/23] Disable test on Azure due to concurrency issues --- .../SQL/AsyncTest/AsyncCancelledConnectionsTest.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/AsyncTest/AsyncCancelledConnectionsTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/AsyncTest/AsyncCancelledConnectionsTest.cs index c3cc2d6b07..dfcd78bc15 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/AsyncTest/AsyncCancelledConnectionsTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/AsyncTest/AsyncCancelledConnectionsTest.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -18,10 +17,11 @@ public class AsyncCancelledConnectionsTest public AsyncCancelledConnectionsTest(ITestOutputHelper output) { - this._output = output; + _output = output; } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + // Disabled on Azure since this test fails on concurrent runs on same database. + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureServer))] public void CancelAsyncConnections() { string connectionString = DataTestUtility.TCPConnectionString; From 5cbcf5db1bac8403626a3b2f156f9d668b267cca Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Thu, 24 Sep 2020 16:43:11 -0700 Subject: [PATCH 14/23] Apply suggestions from code review Co-authored-by: David Engel --- .../AzureManagedIdentityAuthenticationProvider.xml | 6 +++--- .../src/Microsoft/Data/Common/DbConnectionStringCommon.cs | 4 ++-- .../src/Microsoft/Data/Common/DbConnectionStringCommon.cs | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml b/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml index ac0f97e465..f2f09a563a 100644 --- a/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml +++ b/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml @@ -6,8 +6,8 @@ - Number of seconds to wait for response from Managed Identity service endpoint when attempting a retry. The default is 0, i.e. no timeout is applied. - Maximum number of retries to perform when Managed Identity service endpoint is unreachable. By default, the driver retries 5 times. + Number of seconds to wait for a response from the Managed Identity service endpoint when attempting a retry. The default is 0, i.e. no timeout is applied. + Maximum number of retries when the Managed Identity service endpoint is unreachable. By default, the driver retries 5 times. An instance of to be used by this authentication provider. @@ -35,7 +35,7 @@ |Authentication Method| |----------------| -|| +|| ]]> diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index 614ee6e744..ee9544b4ce 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -109,7 +109,7 @@ internal static string ConvertToString(object value) internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result) { - Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 8, "SqlAuthenticationMethod enum has changed, update needed"); + Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 9, "SqlAuthenticationMethod enum has changed, update needed"); bool isSuccess = false; @@ -501,7 +501,7 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj internal static bool IsValidAuthenticationTypeValue(SqlAuthenticationMethod value) { - Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 8, "SqlAuthenticationMethod enum has changed, update needed"); + Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 9, "SqlAuthenticationMethod enum has changed, update needed"); return value == SqlAuthenticationMethod.SqlPassword || value == SqlAuthenticationMethod.ActiveDirectoryPassword || value == SqlAuthenticationMethod.ActiveDirectoryIntegrated diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs index bdf05aded1..71ab0deea3 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs @@ -528,7 +528,7 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result) { - Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 8, "SqlAuthenticationMethod enum has changed, update needed"); + Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 9, "SqlAuthenticationMethod enum has changed, update needed"); bool isSuccess = false; @@ -662,7 +662,7 @@ internal static string ColumnEncryptionSettingToString(SqlConnectionColumnEncryp internal static bool IsValidAuthenticationTypeValue(SqlAuthenticationMethod value) { - Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 8, "SqlAuthenticationMethod enum has changed, update needed"); + Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 9, "SqlAuthenticationMethod enum has changed, update needed"); return value == SqlAuthenticationMethod.SqlPassword || value == SqlAuthenticationMethod.ActiveDirectoryPassword || value == SqlAuthenticationMethod.ActiveDirectoryIntegrated From 936b62746aec438a3c99b8576d1a146c6f613ed0 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Thu, 24 Sep 2020 17:36:44 -0700 Subject: [PATCH 15/23] Review feedback applied --- .../SqlClient/SqlInternalConnectionTds.cs | 16 +------ .../SqlClient/SqlInternalConnectionTds.cs | 42 +++++++------------ .../ManualTests/DataCommon/AADUtility.cs | 2 - 3 files changed, 18 insertions(+), 42 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index 0ba651a24f..e2611ac5be 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -1302,6 +1302,8 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI // Since AD Integrated may be acting like Windows integrated, additionally check _fedAuthRequired || (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated && _fedAuthRequired)) { @@ -1316,20 +1318,6 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, }; } - if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity - || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI) - { - requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; - _federatedAuthenticationInfoRequested = true; - _fedAuthFeatureExtensionData = - new FederatedAuthenticationFeatureExtensionData - { - libraryType = TdsEnums.FedAuthLibrary.MSAL, - authentication = ConnectionOptions.Authentication, - fedAuthRequiredPreLoginResponse = _fedAuthRequired - }; - } - if (_accessTokenInBytes != null) { requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index e250902f76..6b7bd65584 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -983,7 +983,7 @@ internal override bool IsConnectionAlive(bool throwOnException) tdsReliabilitySection.Start(); #endif //DEBUG - isAlive = _parser._physicalStateObj.IsConnectionAlive(throwOnException); + isAlive = _parser._physicalStateObj.IsConnectionAlive(throwOnException); #if DEBUG } @@ -1574,6 +1574,8 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryInteractive || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryServicePrincipal || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity + || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI // Since AD Integrated may be acting like Windows integrated, additionally check _fedAuthRequired || (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated && _fedAuthRequired)) { @@ -1587,19 +1589,7 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, fedAuthRequiredPreLoginResponse = _fedAuthRequired }; } - if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity - || ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryMSI) - { - requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; - _federatedAuthenticationInfoRequested = true; - _fedAuthFeatureExtensionData = - new FederatedAuthenticationFeatureExtensionData - { - libraryType = TdsEnums.FedAuthLibrary.MSAL, - authentication = ConnectionOptions.Authentication, - fedAuthRequiredPreLoginResponse = _fedAuthRequired - }; - } + if (_accessTokenInBytes != null) { requestedFeatures |= TdsEnums.FeatureExtension.FedAuth; @@ -2382,18 +2372,18 @@ internal bool GetSessionAndReconnectIfNeeded(SqlConnection parent, int timeout = { tdsReliabilitySection.Start(); #endif //DEBUG - Task reconnectTask = parent.ValidateAndReconnect(() => - { - ThreadHasParserLockForClose = false; - _parserLock.Release(); - releaseConnectionLock = false; - }, timeout); - if (reconnectTask != null) - { - AsyncHelper.WaitForCompletion(reconnectTask, timeout); - return true; - } - return false; + Task reconnectTask = parent.ValidateAndReconnect(() => + { + ThreadHasParserLockForClose = false; + _parserLock.Release(); + releaseConnectionLock = false; + }, timeout); + if (reconnectTask != null) + { + AsyncHelper.WaitForCompletion(reconnectTask, timeout); + return true; + } + return false; #if DEBUG } finally diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs index fd0926af24..36e5c05268 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System; -using System.Diagnostics; using System.Net.Http; using System.Text.RegularExpressions; using System.Threading; @@ -46,7 +45,6 @@ internal class MockManagedIdentityTokenProvider private const string AccessToken = "access_token"; private const string Resource = "https://database.windows.net/"; - private const int DefaultRetryTimeout = 0; private const int DefaultMaxRetryCount = 5; From 66d329e1eb8f9afacfc38cb5ad9c5d1f66a6f3ad Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Fri, 25 Sep 2020 13:25:12 -0700 Subject: [PATCH 16/23] Escape UserId + tests --- ...AzureManagedIdentityAuthenticationProvider.cs | 2 +- .../SQL/ConnectivityTests/AADConnectionTest.cs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index e451f157fd..6a2d0995b5 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -94,7 +94,7 @@ public override async Task AcquireTokenAsync(SqlAuthenti // If user assigned managed identity is specified, include object ID parameter in request string objectIdParameter = parameters.UserId != default - ? $"&object_id={parameters.UserId}" + ? $"&object_id={Uri.EscapeUriString(parameters.UserId)}" : string.Empty; // Craft request as per the MSI protocol diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs index 671a8d8c6a..6b2e5390bc 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs @@ -397,6 +397,22 @@ public static void ActiveDirectoryManagedIdentityWithPasswordMustFail() Assert.Contains(expectedMessage, e.Message); } + [InlineData("2445343 2343253")] + [InlineData("2445343$#^@@%2343253")] + [ConditionalTheory(nameof(IsAADConnStringsSetup))] + public static void ActiveDirectoryManagedIdentityWithInvalidUserIdMustFail(string userId) + { + // connection fails with expected error message. + string[] credKeys = { "Authentication", "User ID", "Password", "UID", "PWD" }; + string connStrWithNoCred = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys) + + $"Authentication=Active Directory Managed Identity; User Id={userId}"; + + SqlException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); + + string expectedMessage = "Response: {\"error\":\"invalid_request\",\"error_description\":\"Identity not found\"}"; + Assert.Contains(expectedMessage, e.Message); + } + [ConditionalFact(nameof(IsAADConnStringsSetup))] public static void ActiveDirectoryMSIWithCredentialsMustFail() { From 5924250672fa65dbe02b2bdaef6aea61c05a09e2 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Fri, 25 Sep 2020 16:58:59 -0700 Subject: [PATCH 17/23] Add trace logs --- .../ActiveDirectoryAuthenticationProvider.cs | 9 +++++++ ...reManagedIdentityAuthenticationProvider.cs | 27 +++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs index 36359e8392..23a5beca96 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs @@ -89,6 +89,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) .Build(); result = ccApp.AcquireTokenForClient(scopes).ExecuteAsync().Result; + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token for Active Directory Service Principal auth mode. Expiry Time: {0}", result.ExpiresOn); return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); } @@ -160,6 +161,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) .WithCorrelationId(parameters.ConnectionId) .ExecuteAsync().Result; } + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token for Active Directory Integrated auth mode. Expiry Time: {0}", result.ExpiresOn); } else if (parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryPassword) { @@ -170,6 +172,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) result = app.AcquireTokenByUsernamePassword(scopes, parameters.UserId, password) .WithCorrelationId(parameters.ConnectionId) .ExecuteAsync().Result; + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token for Active Directory Password auth mode. Expiry Time: {0}", result.ExpiresOn); } else if (parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryInteractive || parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow) @@ -190,19 +193,23 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) try { result = await app.AcquireTokenSilent(scopes, account).ExecuteAsync(); + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token for {0} auth mode. Expiry Time: {1}", parameters.AuthenticationMethod, result.ExpiresOn); } catch (MsalUiRequiredException) { result = await AcquireTokenInteractiveDeviceFlowAsync(app, scopes, parameters.ConnectionId, parameters.UserId, parameters.AuthenticationMethod); + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token for {0} auth mode. Expiry Time: {1}", parameters.AuthenticationMethod, result.ExpiresOn); } } else { result = await AcquireTokenInteractiveDeviceFlowAsync(app, scopes, parameters.ConnectionId, parameters.UserId, parameters.AuthenticationMethod); + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token for {0} auth mode. Expiry Time: {1}", parameters.AuthenticationMethod, result.ExpiresOn); } } else { + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | {0} authentication mode not supported by ActiveDirectoryAuthenticationProvider class.", parameters.AuthenticationMethod); throw SQL.UnsupportedAuthenticationSpecified(parameters.AuthenticationMethod); } @@ -272,6 +279,7 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) } catch (OperationCanceledException) { + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenInteractiveDeviceFlowAsync | Operation timed out while acquiring access token."); throw (authenticationMethod == SqlAuthenticationMethod.ActiveDirectoryInteractive) ? SQL.ActiveDirectoryInteractiveTimeout() : SQL.ActiveDirectoryDeviceFlowTimeout(); @@ -290,6 +298,7 @@ private Task DefaultDeviceFlowCallback(DeviceCodeResult result) // * The timeout specified by the server for the lifetime of this code (typically ~15 minutes) has been reached // * The developing application calls the Cancel() method on a CancellationToken sent into the method. // If this occurs, an OperationCanceledException will be thrown (see catch below for more details). + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenInteractiveDeviceFlowAsync | Callback triggered with Device Code Result: {0}", result.Message); Console.WriteLine(result.Message); return Task.FromResult(0); } diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index 6a2d0995b5..ee994cd28a 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -68,6 +68,7 @@ public override async Task AcquireTokenAsync(SqlAuthenti // if App Service MSI is not available then Azure VM IMDS may be available, test with a probe request if (!isAppServicesMsiAvailable) { + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | This environment is not identified as an Azure App Service environment. Proceeding to validate Azure VM IMDS endpoint availability."); using (var internalTokenSource = new CancellationTokenSource()) using (var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(internalTokenSource.Token, default)) { @@ -77,12 +78,14 @@ public override async Task AcquireTokenAsync(SqlAuthenti { internalTokenSource.CancelAfter(_azureVmImdsProbeTimeout); await httpClient.SendAsync(imdsProbeRequest, linkedTokenSource.Token).ConfigureAwait(false); + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | The Instance Metadata Service (IMDS) service endpoint is accessible. Proceeding to acquire access token."); } catch (OperationCanceledException) { // request to IMDS timed out (internal cancellation token canceled), neither Azure VM IMDS nor App Services MSI are available if (internalTokenSource.Token.IsCancellationRequested) { + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | The Instance Metadata Service (IMDS) service endpoint is not accessible."); // Throw error: Tried to get token using Managed Identity. Unable to connect to the Instance Metadata Service (IMDS). Skipping request to the Managed Service Identity (MSI) token endpoint. throw SQL.Azure_ManagedIdentityException($"{Strings.Azure_ManagedIdentityUsed} {Strings.Azure_MetadataEndpointNotListening}"); } @@ -91,11 +94,19 @@ public override async Task AcquireTokenAsync(SqlAuthenti } } } + else + { + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | This environment is identified as an Azure App Service environment. Proceeding to acquire access token from Endpoint URL: {0}", msiEndpoint); + } + + string objectIdParameter = string.Empty; // If user assigned managed identity is specified, include object ID parameter in request - string objectIdParameter = parameters.UserId != default - ? $"&object_id={Uri.EscapeUriString(parameters.UserId)}" - : string.Empty; + if (parameters.UserId != default) + { + objectIdParameter = $"&object_id={Uri.EscapeUriString(parameters.UserId)}"; + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Identity Object id received and will be used for acquiring access token {0}", parameters.UserId); + } // Craft request as per the MSI protocol var requestUrl = isAppServicesMsiAvailable @@ -125,6 +136,7 @@ HttpRequestMessage getRequestMessage() } catch (HttpRequestException) { + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Failed after 5 retries. Unable to connect to the Managed Service Identity (MSI) endpoint."); // Throw error: Tried to get token using Managed Service Identity. Failed after 5 retries. Unable to connect to the Managed Service Identity (MSI) endpoint. Please check that you are running on an Azure resource that has MSI setup. throw SQL.Azure_ManagedIdentityException($"{Strings.Azure_ManagedIdentityUsed} {Strings.Azure_RetryFailure} {Strings.Azure_IdentityEndpointNotListening}"); } @@ -132,27 +144,31 @@ HttpRequestMessage getRequestMessage() // If the response is successful, it should have JSON response with an access_token field if (response.IsSuccessStatusCode) { + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Successful response received. Status Code {0}", response.StatusCode); string jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false); int accessTokenStartIndex = jsonResponse.IndexOf(AccessToken) + AccessToken.Length + 3; var imdsAccessToken = jsonResponse.Substring(accessTokenStartIndex, jsonResponse.IndexOf('"', accessTokenStartIndex) - accessTokenStartIndex); var expiresin = jsonResponse.Substring(jsonResponse.IndexOf(Expiry) + Expiry.Length + 3, FileTimeLength); DateTime expiryTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(long.Parse(expiresin)); - + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Access Token received. Expiry Time: {0}", expiryTime); return new SqlAuthenticationToken(imdsAccessToken, expiryTime); } // RetryFailure : Failed after 5 retries. // NonRetryableError : Received a non-retryable error. + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Request to acquire access token failed with status code {0}", response.StatusCode); string errorStatusDetail = response.IsRetryableStatusCode() ? Strings.Azure_RetryFailure : Strings.Azure_NonRetryableError; string errorText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Error occurred while acquiring access token: {0} Identity Response Code: {1}, Response: {2}", errorStatusDetail, response.StatusCode, errorText); throw SQL.Azure_ManagedIdentityException($"{errorStatusDetail} Identity Response Code: {response.StatusCode}, Response: {errorText}"); } catch (Exception exp) { + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Error occurred while acquiring access token: {0}", exp.Message); if (exp is SqlException) throw; // Throw error: Access token could not be acquired. {exp.Message} @@ -216,12 +232,13 @@ internal static async Task SendAsyncWithRetry(this HttpClie break; } } - catch (HttpRequestException) + catch (HttpRequestException e) { if (attempts == maxRetryCount) { throw; } + SqlClientEventSource.Log.TryTraceEvent("SendAsyncWithRetry | Exception occurred {0} | Attempting retry: {1} of {2}", e.Message, attempts, maxRetryCount); } if (s_waitBeforeRetry) From 818c9060b6aa9a96f4c8b354fc1ff9d83fcb50de Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Fri, 25 Sep 2020 17:02:29 -0700 Subject: [PATCH 18/23] Fix tests --- .../SqlClient/AzureManagedIdentityAuthenticationProvider.cs | 2 +- .../ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index ee994cd28a..20d6c68670 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -104,7 +104,7 @@ public override async Task AcquireTokenAsync(SqlAuthenti // If user assigned managed identity is specified, include object ID parameter in request if (parameters.UserId != default) { - objectIdParameter = $"&object_id={Uri.EscapeUriString(parameters.UserId)}"; + objectIdParameter = $"&object_id={Uri.EscapeDataString(parameters.UserId)}"; SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Identity Object id received and will be used for acquiring access token {0}", parameters.UserId); } diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs index 6b2e5390bc..52c394580e 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs @@ -407,7 +407,7 @@ public static void ActiveDirectoryManagedIdentityWithInvalidUserIdMustFail(strin string connStrWithNoCred = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys) + $"Authentication=Active Directory Managed Identity; User Id={userId}"; - SqlException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); + AggregateException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); string expectedMessage = "Response: {\"error\":\"invalid_request\",\"error_description\":\"Identity not found\"}"; Assert.Contains(expectedMessage, e.Message); From 37c2d5fa895acfa2e577e28461a7ea6d50c10f68 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Mon, 28 Sep 2020 09:38:49 -0700 Subject: [PATCH 19/23] Fix test --- .../ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs index 52c394580e..2e58b0df04 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs @@ -410,7 +410,7 @@ public static void ActiveDirectoryManagedIdentityWithInvalidUserIdMustFail(strin AggregateException e = Assert.Throws(() => ConnectAndDisconnect(connStrWithNoCred)); string expectedMessage = "Response: {\"error\":\"invalid_request\",\"error_description\":\"Identity not found\"}"; - Assert.Contains(expectedMessage, e.Message); + Assert.Contains(expectedMessage, e.GetBaseException().Message); } [ConditionalFact(nameof(IsAADConnStringsSetup))] From 1d01e61053eb848aa68bc0a08364209a99ac86dc Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Mon, 28 Sep 2020 14:28:38 -0700 Subject: [PATCH 20/23] New tests for AppClientId code coverage --- .../FunctionalTests/AADAuthenticationTests.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/AADAuthenticationTests.cs b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/AADAuthenticationTests.cs index 0e695cdd4e..18997a4d86 100644 --- a/src/Microsoft.Data.SqlClient/tests/FunctionalTests/AADAuthenticationTests.cs +++ b/src/Microsoft.Data.SqlClient/tests/FunctionalTests/AADAuthenticationTests.cs @@ -14,6 +14,7 @@ public class AADAuthenticationTests { private SqlConnectionStringBuilder _builder; private SqlCredential _credential = null; + [Theory] [InlineData("Test combination of Access Token and IntegratedSecurity", new object[] { "Integrated Security", true })] [InlineData("Test combination of Access Token and User Id", new object[] { "UID", "sampleUserId" })] @@ -57,6 +58,22 @@ public void CustomActiveDirectoryProviderTest() Assert.Equal(authProvider, SqlAuthenticationProvider.GetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow)); } + [Fact] + public void CustomActiveDirectoryProviderTest_AppClientId() + { + SqlAuthenticationProvider authProvider = new ActiveDirectoryAuthenticationProvider(Guid.NewGuid().ToString()); + SqlAuthenticationProvider.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, authProvider); + Assert.Equal(authProvider, SqlAuthenticationProvider.GetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow)); + } + + [Fact] + public void CustomActiveDirectoryProviderTest_AppClientId_DeviceFlowCallback() + { + SqlAuthenticationProvider authProvider = new ActiveDirectoryAuthenticationProvider(CustomDeviceFlowCallback, Guid.NewGuid().ToString()); + SqlAuthenticationProvider.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, authProvider); + Assert.Equal(authProvider, SqlAuthenticationProvider.GetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow)); + } + private Task CustomDeviceFlowCallback(DeviceCodeResult result) { Console.WriteLine(result.Message); From 6237c9a26a40891eb4f0ebda5540ef0cb097446b Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Tue, 29 Sep 2020 10:34:21 -0700 Subject: [PATCH 21/23] No public class. --- ...eManagedIdentityAuthenticationProvider.xml | 45 ------------------- src/Microsoft.Data.SqlClient.sln | 1 - ...reManagedIdentityAuthenticationProvider.cs | 22 ++------- 3 files changed, 4 insertions(+), 64 deletions(-) delete mode 100644 doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml diff --git a/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml b/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml deleted file mode 100644 index f2f09a563a..0000000000 --- a/doc/snippets/Microsoft.Data.SqlClient/AzureManagedIdentityAuthenticationProvider.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - This class implements and provides active directory managed identity authentication support. - - - - Number of seconds to wait for a response from the Managed Identity service endpoint when attempting a retry. The default is 0, i.e. no timeout is applied. - Maximum number of retries when the Managed Identity service endpoint is unreachable. By default, the driver retries 5 times. - - An instance of to be used by this authentication provider. - - - Initializes the class. - - - - The Active Directory authentication parameters passed to authentication providers. - Acquires a security token from the Managed Identity service endpoint. - Represents an asynchronous operation that returns the authentication token. - - - The authentication method. - Indicates whether the specified authentication method is supported. - - if the specified authentication method is supported; otherwise, . - - - - | - - ]]> - - - - - diff --git a/src/Microsoft.Data.SqlClient.sln b/src/Microsoft.Data.SqlClient.sln index 47bb4f3273..855baeedaa 100644 --- a/src/Microsoft.Data.SqlClient.sln +++ b/src/Microsoft.Data.SqlClient.sln @@ -75,7 +75,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.Data.SqlClient", ProjectSection(SolutionItems) = preProject ..\doc\snippets\Microsoft.Data.SqlClient\ActiveDirectoryAuthenticationProvider.xml = ..\doc\snippets\Microsoft.Data.SqlClient\ActiveDirectoryAuthenticationProvider.xml ..\doc\snippets\Microsoft.Data.SqlClient\ApplicationIntent.xml = ..\doc\snippets\Microsoft.Data.SqlClient\ApplicationIntent.xml - ..\doc\snippets\Microsoft.Data.SqlClient\AzureManagedIdentityAuthenticationProvider.xml = ..\doc\snippets\Microsoft.Data.SqlClient\AzureManagedIdentityAuthenticationProvider.xml ..\doc\snippets\Microsoft.Data.SqlClient\OnChangeEventHandler.xml = ..\doc\snippets\Microsoft.Data.SqlClient\OnChangeEventHandler.xml ..\doc\snippets\Microsoft.Data.SqlClient\PoolBlockingPeriod.xml = ..\doc\snippets\Microsoft.Data.SqlClient\PoolBlockingPeriod.xml ..\doc\snippets\Microsoft.Data.SqlClient\SortOrder.xml = ..\doc\snippets\Microsoft.Data.SqlClient\SortOrder.xml diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index 20d6c68670..7bfff46c51 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -10,16 +10,13 @@ namespace Microsoft.Data.SqlClient { - /// - public sealed class AzureManagedIdentityAuthenticationProvider : SqlAuthenticationProvider + internal sealed class AzureManagedIdentityAuthenticationProvider : SqlAuthenticationProvider { - private readonly HttpClient _httpClient; - // HttpClient is intended to be instantiated once and re-used throughout the life of an application. #if NETFRAMEWORK - private static readonly HttpClient s_defaultHttpClient = new HttpClient(); + private static readonly HttpClient s_httpClient = new HttpClient(); #else - private static readonly HttpClient s_defaultHttpClient = new HttpClient(new HttpClientHandler() { CheckCertificateRevocationList = true }); + private static readonly HttpClient s_httpClient = new HttpClient(new HttpClientHandler() { CheckCertificateRevocationList = true }); #endif private const string AzureSystemApiVersion = "&api-version=2019-08-01"; @@ -42,20 +39,10 @@ public sealed class AzureManagedIdentityAuthenticationProvider : SqlAuthenticati internal readonly int _retryTimeoutInSeconds = DefaultRetryTimeout; internal readonly int _maxRetryCount = DefaultMaxRetryCount; - /// - public AzureManagedIdentityAuthenticationProvider(int retryTimeoutInSeconds = DefaultRetryTimeout, int maxRetryCount = DefaultMaxRetryCount, HttpClient httpClient = null) - { - _retryTimeoutInSeconds = retryTimeoutInSeconds; - _httpClient = httpClient; - _maxRetryCount = maxRetryCount; - } - // Reference: https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http - /// public override async Task AcquireTokenAsync(SqlAuthenticationParameters parameters) { - // Use the httpClient specified in the constructor. If it was not specified in the constructor, use the default httpClient. - HttpClient httpClient = _httpClient ?? s_defaultHttpClient; + HttpClient httpClient = s_httpClient; try { @@ -176,7 +163,6 @@ HttpRequestMessage getRequestMessage() } } - /// public override bool IsSupported(SqlAuthenticationMethod authentication) { return authentication == SqlAuthenticationMethod.ActiveDirectoryManagedIdentity From fc8e2ed1c98e2d0f487f657ffb57b82d2367da2c Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Tue, 6 Oct 2020 09:58:17 -0700 Subject: [PATCH 22/23] Review feedback applied --- .../Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs | 2 +- .../netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs | 1 - .../Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs | 2 +- .../Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs | 6 +++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index e2611ac5be..bc8c0655ff 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -1295,7 +1295,7 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, _sessionRecoveryRequested = true; } - // If the workflow being used is Active Directory Password/Integrated/Interactive/Service Principal and server's prelogin response + // If the workflow being used is Active Directory Authentication and server's prelogin response // for FEDAUTHREQUIRED option indicates Federated Authentication is required, we have to insert FedAuth Feature Extension // in Login7, indicating the intent to use Active Directory Authentication for SQL Server. if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryPassword diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs index 164606fe1c..416ec86fd0 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsEnums.cs @@ -5,7 +5,6 @@ using System; using System.Data; using System.Diagnostics; -using System.Net; namespace Microsoft.Data.SqlClient { diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index 6b7bd65584..381a87036e 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -1567,7 +1567,7 @@ private void Login(ServerInfo server, TimeoutTimer timeout, string newPassword, _sessionRecoveryRequested = true; } - // If the workflow being used is Active Directory Password/Integrated/Interactive/Service Principal/Device Code Flow and server's prelogin response + // If the workflow being used is Active Directory Authentication and server's prelogin response // for FEDAUTHREQUIRED option indicates Federated Authentication is required, we have to insert FedAuth Feature Extension // in Login7, indicating the intent to use Active Directory Authentication for SQL Server. if (ConnectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryPassword diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs index cbf903b940..801b4df97a 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs @@ -201,18 +201,18 @@ public override void BeforeUnload(SqlAuthenticationMethod authentication) try { result = await app.AcquireTokenSilent(scopes, account).ExecuteAsync(); - SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token for {0} auth mode. Expiry Time: {1}", parameters.AuthenticationMethod, result.ExpiresOn); + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token (silent) for {0} auth mode. Expiry Time: {1}", parameters.AuthenticationMethod, result.ExpiresOn); } catch (MsalUiRequiredException) { result = await AcquireTokenInteractiveDeviceFlowAsync(app, scopes, parameters.ConnectionId, parameters.UserId, parameters.AuthenticationMethod); - SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token for {0} auth mode. Expiry Time: {1}", parameters.AuthenticationMethod, result.ExpiresOn); + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token (interactive) for {0} auth mode. Expiry Time: {1}", parameters.AuthenticationMethod, result.ExpiresOn); } } else { result = await AcquireTokenInteractiveDeviceFlowAsync(app, scopes, parameters.ConnectionId, parameters.UserId, parameters.AuthenticationMethod); - SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token for {0} auth mode. Expiry Time: {1}", parameters.AuthenticationMethod, result.ExpiresOn); + SqlClientEventSource.Log.TryTraceEvent("AcquireTokenAsync | Acquired access token (interactive) for {0} auth mode. Expiry Time: {1}", parameters.AuthenticationMethod, result.ExpiresOn); } } else From 543a7cfde1b9ed5007e7b05b60fdd0183a0d8b17 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Thu, 8 Oct 2020 12:22:37 -0700 Subject: [PATCH 23/23] Remove unwanted variable --- .../AzureManagedIdentityAuthenticationProvider.cs | 14 ++++---------- .../tests/ManualTests/DataCommon/AADUtility.cs | 14 ++++---------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs index 7bfff46c51..07174e96a8 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/AzureManagedIdentityAuthenticationProvider.cs @@ -176,9 +176,6 @@ internal static class SqlManagedIdentityRetryHelper internal const int DeltaBackOffInSeconds = 2; internal const string RetryTimeoutError = "Reached retry timeout limit set by MsiRetryTimeout parameter in connection string."; - // for unit test purposes - internal static bool s_waitBeforeRetry = true; - internal static bool IsRetryableStatusCode(this HttpResponseMessage response) { // 404 NotFound, 429 TooManyRequests, and 5XX server error status codes are retryable @@ -227,13 +224,10 @@ internal static async Task SendAsyncWithRetry(this HttpClie SqlClientEventSource.Log.TryTraceEvent("SendAsyncWithRetry | Exception occurred {0} | Attempting retry: {1} of {2}", e.Message, attempts, maxRetryCount); } - if (s_waitBeforeRetry) - { - // use recommended exponential backoff strategy, and use linked token wait handle so caller or retry timeout is still able to cancel - backoffTimeInSecs += (int)Math.Pow(DeltaBackOffInSeconds, attempts); - linkedTokenSource.Token.WaitHandle.WaitOne(TimeSpan.FromSeconds(backoffTimeInSecs)); - linkedTokenSource.Token.ThrowIfCancellationRequested(); - } + // use recommended exponential backoff strategy, and use linked token wait handle so caller or retry timeout is still able to cancel + backoffTimeInSecs += (int)Math.Pow(DeltaBackOffInSeconds, attempts); + linkedTokenSource.Token.WaitHandle.WaitOne(TimeSpan.FromSeconds(backoffTimeInSecs)); + linkedTokenSource.Token.ThrowIfCancellationRequested(); } return response; diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs index 36e5c05268..228217c039 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/AADUtility.cs @@ -125,9 +125,6 @@ internal static class SqlManagedIdentityRetryHelper internal const int DeltaBackOffInSeconds = 2; internal const string RetryTimeoutError = "Reached retry timeout limit set by MsiRetryTimeout parameter in connection string."; - // for unit test purposes - internal static bool s_waitBeforeRetry = true; - internal static bool IsRetryableStatusCode(this HttpResponseMessage response) { // 404 NotFound, 429 TooManyRequests, and 5XX server error status codes are retryable @@ -175,13 +172,10 @@ internal static async Task SendAsyncWithRetry(this HttpClie } } - if (s_waitBeforeRetry) - { - // use recommended exponential backoff strategy, and use linked token wait handle so caller or retry timeout is still able to cancel - backoffTimeInSecs += (int)Math.Pow(DeltaBackOffInSeconds, attempts); - linkedTokenSource.Token.WaitHandle.WaitOne(TimeSpan.FromSeconds(backoffTimeInSecs)); - linkedTokenSource.Token.ThrowIfCancellationRequested(); - } + // use recommended exponential backoff strategy, and use linked token wait handle so caller or retry timeout is still able to cancel + backoffTimeInSecs += (int)Math.Pow(DeltaBackOffInSeconds, attempts); + linkedTokenSource.Token.WaitHandle.WaitOne(TimeSpan.FromSeconds(backoffTimeInSecs)); + linkedTokenSource.Token.ThrowIfCancellationRequested(); } return response;