コード例 #1
0
        private async Task DoUpdateDatabasesList(CancellationToken ct)
        {
            try
            {
                _parentWindow.Dispatcher.Invoke(() => DatabaseNamesList.Clear());

                var connectionStringBuilder = new SqlConnectionStringBuilder {
                    DataSource = ServerName
                };

                if (AuthenticationType == AuthenticationType.WindowsAuthentication)
                {
                    connectionStringBuilder.IntegratedSecurity = true;
                }
                else
                {
                    connectionStringBuilder.IntegratedSecurity = false;
                    connectionStringBuilder.UserID             = SqlServerUsername;
                    connectionStringBuilder.Password           = Password;
                }

                var connectionString = connectionStringBuilder.ConnectionString;

                var list = await SqlServerEnumeration.GetDatabaseNamesAsync(connectionString, ct);

                _parentWindow.Dispatcher.Invoke(() =>
                {
                    if (!list.Any())
                    {
                        return;
                    }

                    foreach (var name in list)
                    {
                        DatabaseNamesList.Add(name);
                    }

                    if (DatabaseNamesList.IndexOfIgnoreCase(DatabaseName) < 0)
                    {
                        DatabaseName = list.First();
                    }
                });
            }
            catch
            {
                // whatever happens here - we don't care
            }
        }
コード例 #2
0
        public async Task LoadSqlServerInstances()
        {
            IsLoading = true;

            var localInstancesTask = Task.Factory.StartNew(() =>
            {
                var localInstances = SqlServerEnumeration.EnumLocalInstances();

                _parentWindow.Dispatcher.Invoke(() => localInstances.ForEach((instance => LocalInstancesCollection.Add(instance))));
            });

            var remoteInstancesTask = Task.Factory.StartNew(() =>
            {
                var remoteInstances = SqlServerEnumeration.EnumRemoteInstances();

                _parentWindow.Dispatcher.Invoke(() => remoteInstances.ForEach((instance => RemoteInstancesCollection.Add(instance))));
            });

            await Task.WhenAll(localInstancesTask, remoteInstancesTask);

            IsLoading = false;
        }