コード例 #1
0
        public void Analyze_columns()
        {
            var repo = frb.ToRepoReports();
            var ctxt = frb.ToFactory().Get();
            var list = repo.GetAllQ();

            foreach (var l in list)
            {
                l.columnsJson = SqlServerUtils.getUIColumnsJson(ctxt, l.sqlquery);
            }
            frb.ToFactory().Get().Commit();
        }
コード例 #2
0
        public async Task BackupDatabase(string databaseName, int?timeout = default)
        {
            string filePath = BuildBackupPathWithFilename(databaseName);
            var    query    = $"BACKUP DATABASE [{databaseName}] TO DISK='{filePath}'";
            await SqlServerUtils.WithDatabaseCommand(_connectionString,
                                                     async command =>
            {
                command.CommandTimeout = timeout ?? DefaultCommandTimeout;
                await command.ExecuteNonQueryAsync();
            },
                                                     query);

            Console.WriteLine($"The database {databaseName} is backed up to the file {filePath}");
        }
コード例 #3
0
        public void getDynamicQuery_test_all_metadata()
        {
            // arrange
            var context = frb.ToFactory().Get();
            var reports = frb.ToRepoReports().GetAllQ();

            foreach (var r in reports)
            {
                var result = SqlServerUtils.getMetadata(context, r.sqlquery);
                Assert.IsTrue(result.Count > 2);
            }
            // act
            // assert
        }
コード例 #4
0
        public static async Task RestoreDatabase(string connectionString,
                                                 string bakFilePath,
                                                 string dbName,
                                                 int?timeout = default)
        {
            await SqlServerUtils.WithDatabaseConnection(connectionString,
                                                        async connection =>
            {
                var query         = $@"RESTORE FILELISTONLY 
   FROM DISK='{bakFilePath}'";
                using var command = new SqlCommand(query, connection);
                using var reader  = await command.ExecuteReaderAsync();
                var columns       = Enumerable.Range(0, reader.FieldCount)
                                    .Select(reader.GetName)
                                    .ToList();
                var logicalNameColumnIndex = columns.IndexOf(LogicalNameColumn);
                var logicalNames           = new List <string>();
                while (reader.Read())
                {
                    logicalNames.Add(reader.GetString(logicalNameColumnIndex));
                }
                reader.Close();
                var logicalDbName  = logicalNames[0];
                var logicalLogName = logicalNames[1];

                query = "SELECT [name], [physical_name] FROM sys.master_files";

                using var command2 = new SqlCommand(query, connection);
                using var reader2  = await command2.ExecuteReaderAsync();
                // Move to first row and then retrieve the physical_name column
                reader2.Read();
                var physicalFilePath = reader2.GetString(1);
                reader2.Close();
                var dataDir = new FileInfo(physicalFilePath).Directory.FullName;

                query = $@"RESTORE DATABASE {dbName} 
FROM DISK='{bakFilePath}'
WITH MOVE '{logicalDbName}' TO '{Path.Combine(dataDir, dbName + ".mdf")}',
MOVE '{logicalLogName}' TO '{Path.Combine(dataDir, dbName + ".ldf")}'
";
                using var command3 = new SqlCommand(query, connection)
                      {
                          CommandTimeout = timeout ?? DefaultCommandTimeout
                      };
                await command3.ExecuteNonQueryAsync();
            });
        }
コード例 #5
0
        public async Task <IEnumerable <ItemIdEntity> > GetItemIdData(string prefix, IReadOnlyCollection <Guid> ids)
        {
            Condition.Requires(prefix, nameof(prefix)).IsNotNullOrEmpty();
            Condition.Requires(ids, nameof(ids)).IsNotNull();

            var result = await _connection.ExecuteAsync(async conn =>
                                                        await conn.QueryAsync <ItemIdEntity>(
                                                            Schema.Queries.IdTableByIdAndPrefixQuery,
                                                            new
            {
                Prefix = prefix,
                Ids = SqlServerUtils.BuildIdTable(ids)
            },
                                                            null,
                                                            _connection.CommandTimeout,
                                                            CommandType.Text).ConfigureAwait(false)).ConfigureAwait(false);

            return(result);
        }
コード例 #6
0
        public List <dynamic> getDynamicQuery(int id, DTO.SearchOptions o)
        {
            var rdef                  = dbset.Single(a => a.ID == id);
            var meta                  = SqlServerUtils.getMetadata(DataContext, rdef.sqlquery);
            var queryType             = buildQueryType(meta);
            Task <List <object> > raw = dbFactory.Get().Database.SqlQuery(
                queryType,
                rdef.sqlquery,
                new SqlParameter {
                ParameterName = "beginDate", Value = o.beginDate
            },
                new SqlParameter {
                ParameterName = "endDate", Value = o.endDate
            },
                new SqlParameter {
                ParameterName = "dwccardnum", Value = o.dwccardnum
            }).ToListAsync();

            // TODO catch exception and handle here
            raw.Wait();
            var results = raw.Result;

            return(results);
        }
コード例 #7
0
        /// <summary>
        /// Sort data
        /// 数据排序
        /// </summary>
        /// <param name="sortData">Data to sort</param>
        /// <returns>Rows affected</returns>
        public virtual async Task <int> SortAsync(Dictionary <T, short> sortData)
        {
            var parameters = new DynamicParameters();

            parameters.Add("Items", App.DB.DictionaryToParameter(sortData, null, null, (keyType, valueType) => SqlServerUtils.GetDicCommand(keyType, valueType, App.BuildCommandName)));

            AddSystemParameters(parameters);

            var command = CreateCommand(GetCommandName("sort"), parameters);

            return(await ExecuteAsync(command));
        }