internal void CreateConnectionString() { SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder { ApplicationName = ApplicationName, DataSource = Datasource }; if (AttachDBFilename != null && AttachDBFilename.Trim().Length > 0) { scsb.AttachDBFilename = AttachDBFilename; } if (InitialCatalog != null && InitialCatalog.Trim().Length > 0) { scsb.InitialCatalog = InitialCatalog; } if (UserId != null && UserId.Trim().Length > 0) { scsb.UserID = UserId; } if (Password != null && Password.Trim().Length > 0) { scsb.Password = Password; } scsb.ConnectTimeout = ConnectTimeout; scsb.ConnectRetryCount = ConnectRetryCount; scsb.ConnectRetryInterval = ConnectRetryInterval; scsb.MultipleActiveResultSets = MultipleActiveResultsets; scsb.WorkstationID = WorkstationID; ConnectionString = scsb.ConnectionString; }
public SqlConnectionString(string connectionString) : base(connectionString, GetParseSynonyms()) { ThrowUnsupportedIfKeywordSet(KEY.AsynchronousProcessing); ThrowUnsupportedIfKeywordSet(KEY.Connection_Reset); ThrowUnsupportedIfKeywordSet(KEY.Context_Connection); // Network Library has its own special error message if (ContainsKey(KEY.Network_Library)) { throw SQL.NetworkLibraryKeywordNotSupported(); } ConnectionString = connectionString; IntegratedSecurity = ConvertValueToIntegratedSecurity(); Encrypt = ConvertValueToBoolean(KEY.Encrypt, DEFAULT.Encrypt); Enlist = ConvertValueToBoolean(KEY.Enlist, DEFAULT.Enlist); MARS = ConvertValueToBoolean(KEY.MARS, DEFAULT.MARS); PersistSecurityInfo = ConvertValueToBoolean(KEY.Persist_Security_Info, DEFAULT.Persist_Security_Info); Pooling = ConvertValueToBoolean(KEY.Pooling, DEFAULT.Pooling); Replication = ConvertValueToBoolean(KEY.Replication, DEFAULT.Replication); UserInstance = ConvertValueToBoolean(KEY.User_Instance, DEFAULT.User_Instance); MultiSubnetFailover = ConvertValueToBoolean(KEY.MultiSubnetFailover, DEFAULT.MultiSubnetFailover); ConnectTimeout = ConvertValueToInt32(KEY.Connect_Timeout, DEFAULT.ConnectTimeout); LoadBalanceTimeout = ConvertValueToInt32(KEY.Load_Balance_Timeout, DEFAULT.LoadBalanceTimeout); MaxPoolSize = ConvertValueToInt32(KEY.Max_Pool_Size, DEFAULT.Max_Pool_Size); MinPoolSize = ConvertValueToInt32(KEY.Min_Pool_Size, DEFAULT.Min_Pool_Size); PacketSize = ConvertValueToInt32(KEY.Packet_Size, DEFAULT.Packet_Size); ConnectRetryCount = ConvertValueToInt32(KEY.Connect_Retry_Count, DEFAULT.Connect_Retry_Count); ConnectRetryInterval = ConvertValueToInt32(KEY.Connect_Retry_Interval, DEFAULT.Connect_Retry_Interval); ApplicationIntent = ConvertValueToApplicationIntent(); ApplicationName = ConvertValueToString(KEY.Application_Name, DEFAULT.ApplicationName); AttachDBFilename = ConvertValueToString(KEY.AttachDBFilename, DEFAULT.AttachDbFilename); CurrentLanguage = ConvertValueToString(KEY.Current_Language, DEFAULT.CurrentLanguage); DataSource = ConvertValueToString(KEY.Data_Source, DEFAULT.DataSource); //LocalDBInstance = LocalDbApi.GetLocalDbInstanceNameFromServerName(DataSource); FailoverPartner = ConvertValueToString(KEY.FailoverPartner, DEFAULT.FailoverPartner); InitialCatalog = ConvertValueToString(KEY.Initial_Catalog, DEFAULT.InitialCatalog); Password = ConvertValueToString(KEY.Password, DEFAULT.Password); TrustServerCertificate = ConvertValueToBoolean(KEY.TrustServerCertificate, DEFAULT.TrustServerCertificate); // Temporary string - this value is stored internally as an enum. var typeSystemVersionString = ConvertValueToString(KEY.Type_System_Version, null); var transactionBindingString = ConvertValueToString(KEY.TransactionBinding, null); UserID = ConvertValueToString(KEY.User_ID, DEFAULT.User_ID); WorkstationId = ConvertValueToString(KEY.Workstation_Id, null); if (LoadBalanceTimeout < 0) { throw ADP.InvalidConnectionOptionValue(KEY.Load_Balance_Timeout); } if (ConnectTimeout < 0) { throw ADP.InvalidConnectionOptionValue(KEY.Connect_Timeout); } if (MaxPoolSize < 1) { throw ADP.InvalidConnectionOptionValue(KEY.Max_Pool_Size); } if (MinPoolSize < 0) { throw ADP.InvalidConnectionOptionValue(KEY.Min_Pool_Size); } if (MaxPoolSize < MinPoolSize) { throw ADP.InvalidMinMaxPoolSizeValues(); } if (PacketSize < TdsEnums.MIN_PACKET_SIZE || TdsEnums.MAX_PACKET_SIZE < PacketSize) { 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); ValidateValueLength(FailoverPartner, TdsEnums.MAXLEN_SERVERNAME, KEY.FailoverPartner); ValidateValueLength(InitialCatalog, TdsEnums.MAXLEN_DATABASE, KEY.Initial_Catalog); ValidateValueLength(Password, TdsEnums.MAXLEN_PASSWORD, KEY.Password); ValidateValueLength(UserID, TdsEnums.MAXLEN_USERNAME, KEY.User_ID); if (null != WorkstationId) { ValidateValueLength(WorkstationId, TdsEnums.MAXLEN_HOSTNAME, KEY.Workstation_Id); } if (!string.Equals(DEFAULT.FailoverPartner, FailoverPartner, StringComparison.OrdinalIgnoreCase)) { // fail-over partner is set if (MultiSubnetFailover) { throw SQL.MultiSubnetFailoverWithFailoverPartner(false, null); } if (string.Equals(DEFAULT.InitialCatalog, InitialCatalog, StringComparison.OrdinalIgnoreCase)) { throw ADP.MissingConnectionOptionValue(KEY.FailoverPartner, KEY.Initial_Catalog); } } if (0 <= AttachDBFilename.IndexOf('|')) { throw ADP.InvalidConnectionOptionValue(KEY.AttachDBFilename); } ValidateValueLength(AttachDBFilename, TdsEnums.MAXLEN_ATTACHDBFILE, KEY.AttachDBFilename); TypeSystemAssemblyVersion = constTypeSystemAsmVersion10; if (UserInstance && !string.IsNullOrEmpty(FailoverPartner)) { throw SQL.UserInstanceFailoverNotCompatible(); } if (string.IsNullOrEmpty(typeSystemVersionString)) { typeSystemVersionString = DbConnectionStringDefaults.TypeSystemVersion; } if (typeSystemVersionString.Equals(TYPESYSTEMVERSION.Latest, StringComparison.OrdinalIgnoreCase)) { TypeSystemVersion = TypeSystem.Latest; } else if (typeSystemVersionString.Equals(TYPESYSTEMVERSION.SQL_Server_2000, StringComparison.OrdinalIgnoreCase)) { TypeSystemVersion = TypeSystem.SQLServer2000; } else if (typeSystemVersionString.Equals(TYPESYSTEMVERSION.SQL_Server_2005, StringComparison.OrdinalIgnoreCase)) { TypeSystemVersion = TypeSystem.SQLServer2005; } else if (typeSystemVersionString.Equals(TYPESYSTEMVERSION.SQL_Server_2008, StringComparison.OrdinalIgnoreCase)) { TypeSystemVersion = TypeSystem.SQLServer2008; } else if (typeSystemVersionString.Equals(TYPESYSTEMVERSION.SQL_Server_2012, StringComparison.OrdinalIgnoreCase)) { TypeSystemVersion = TypeSystem.SQLServer2012; TypeSystemAssemblyVersion = constTypeSystemAsmVersion11; } else { throw ADP.InvalidConnectionOptionValue(KEY.Type_System_Version); } if (string.IsNullOrEmpty(transactionBindingString)) { transactionBindingString = DbConnectionStringDefaults.TransactionBinding; } if (transactionBindingString.Equals(TRANSACTIONBINDING.ImplicitUnbind, StringComparison.OrdinalIgnoreCase)) { TransactionBinding = TransactionBindingEnum.ImplicitUnbind; } else if (transactionBindingString.Equals(TRANSACTIONBINDING.ExplicitUnbind, StringComparison.OrdinalIgnoreCase)) { TransactionBinding = TransactionBindingEnum.ExplicitUnbind; } else { throw ADP.InvalidConnectionOptionValue(KEY.TransactionBinding); } if (ApplicationIntent == ApplicationIntent.ReadOnly && !string.IsNullOrEmpty(FailoverPartner)) { throw SQL.ROR_FailoverNotSupportedConnString(); } if (ConnectRetryCount < 0 || ConnectRetryCount > 255) { throw ADP.InvalidConnectRetryCountValue(); } if (ConnectRetryInterval < 1 || ConnectRetryInterval > 60) { throw ADP.InvalidConnectRetryIntervalValue(); } }