воскресенье, 10 декабря 2017 г.

как создать копию большой БД на MS SQL Server

маленькие БД можно скопировать созданием скриптов. с большими я уткнулся в проблему, что не так в этом плане все просто.

вот, в итоге подсказали заклинание. не понимаю, что там происходит, но, в итоге копия базы создается очень быстро (со скоростью копирования файла БД):


backup database [<ИМЯ БАЗЫ-ИСТОЧНИКА>]
to disk='C:\sqlbackup\backup.bak' with init, compression

restore database [<ИМЯ ЦЕЛЕВОЙ БАЗЫ>]
from disk='C:\sqlbackup\KaspiHelp.bak'
with
move '<логическое имя mdf-файла исходной базы>' to 'c:\SQLDATA\<имя Файла Соответвтующее базе>.mdf',
move '<логическое имя log-файла исходной базы>' to 'c:\SQLLOG\<имя Файла Соответвтующее базе>_log.ldf',
replace,stats=1

например:
--копируем SomeDbProdClone в alik-test-ddos

backup database [SomeDbProdClone]
to disk='C:\sqlbackup\SomeDb.bak' with init, compression

restore database [alik-test-ddos]
from disk='C:\sqlbackup\SomeDb.bak'
with 
move 'SomeDb' to 'c:\SQLDATA\AlikTestDdos.mdf',
move 'SomeDb_log' to 'c:\SQLLOG\KaspihepAlikTestDdos_log.ldf',
replace,stats=1

c# yield return

интересная фича языка. код сам за себя скажет.  минус - нет возможность yield return'у скормить коллекцию, нужно ее через foreach пропускать

static void Main(string[] args)
        {
            Console.WriteLine(f().First());


            Console.WriteLine("DONE");
            Console.ReadKey();
        }

        static IEnumerable<int> f()
        {
            try
            {
                Console.WriteLine("yield 1");
                yield return 1;
                Console.WriteLine("yield 2");
                yield return 2;
            }
            finally
            {
                Console.WriteLine("finally");
            }
        }


аутпут:
yield 1
finally
1
DONE