База данных SQL Azure: очистите или восстановите базу данных с помощью сценария SQL - PullRequest
0 голосов
/ 23 ноября 2018

У нас есть локальная запланированная задача Windows, которую необходимо перенести в Azure Paas.

Задача состоит в том, чтобы ежедневно восстанавливать чистую версию этой же базы данных для повышения производительности сайта.

Задача - запустить пакетный файл с помощью приведенного ниже сценария.

SQLCMD -E -S server-name -Q "use master; alter database myDatabase set 
single_user with rollback immediate; alter database myDatabase set 
multi_user; RESTORE DATABASE myDatabase FROM DISK='C:\Dir\myDatabase.bak'; 
USE myDatabase; CREATE USER myUser FOR LOGIN myUser; USE myDatabase; ALTER 
ROLE db_owner ADD MEMBER myUser"

Требуется реализовать аналогичную функциональность, создав проект Azure C # WebJob через Visual Studio и опубликовать его каквеб-работа Azure.
Должна остаться только схема базы данных, никаких данных или журналов.

    using (SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["AzureDBConnString"]))
    {
        connection.Open();

        var queryString_RestoreMyDatabase = @"?????"; // what to add here?

        using (SqlCommand cmd_RestoreMyDatabase = new SqlCommand(queryString_RestoreMyDatabase, connection))
        {
            cmd_RestoreMyDatabase.ExecuteNonQuery();
        }
    }

Возможно ли вышеизложенное?Какие команды SQL мы можем использовать для queryString_RestoreMyDatabase для достижения в соответствии с заголовком этого поста?

1 Ответ

0 голосов
/ 24 ноября 2018

Вместо RESTORE вы можете скопировать базу данных:

-- Execute on the-- Execute on the master database.
-- Start copying.
CREATE DATABASE Database2 AS COPY OF Database1;

Копировать согласованную с точки зрения транзакций копию базы данных SQL Azure

Чтобы заменить базу данных накопию существующей базы данных вы можете начать с чего-то вроде этого:

if  exists (select state from sys.databases where name = 'test_new')
begin
  drop database test_new;
end

create database test_new as copy of test_template;
while (0 != coalesce((select state from sys.databases where name = 'test_new'),-1 ))
begin
  waitfor delay '0:0:10'
end

alter database test modify name = test_old;
alter database test_new modify name = test;
drop database test_old;
print 'completed sucessfully'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...