Хобрук: Ваш путь к мастерству в программировании

У пользователя нет разрешения на ВОССТАНОВЛЕНИЕ базы данных

Я использую приведенный ниже код для резервного копирования базы данных в моей локальной базе данных SqlExpress.

  procedure RestoreScoreDb(DBName,OldName,BackName : String);
    var
    cmd : WideString;
    SqlBackupDir : String;
    SqlDataDir : String;
    begin
    Try
    ConnectionMaster.Connected := False;
    ConnectionMaster.Close;
    ConnectionMaster.ConnectionString := 'Provider=SQLNCLI11.1;Integrated      Security="";Persist Security Info=False;User ID=SA;Password=Tccc1234;OLE DB Services=-2;Initial Catalog="master";Data Source=\SQLEXPRESS;Initial File Name="";Packet Size=4096;Auto Translate=True;Server SPN=""';
    SqlBackupDir := ReadIniStr(IniCfg,'Dir','SqlBackup');
    SqlDataDir := ReadIniStr(IniCfg,'Dir','SqlData');
    cmd := 'RESTORE DATABASE '+DBName;
    cmd := Cmd + ' FROM DISK = N'''+SqlBackupDir+'\'+BackName+'''';
    cmd := Cmd + ' WITH FILE = 1';
    cmd := cmd + ' , MOVE N'''+OldName+''' TO N'''+SqlDataDir+'\'+DBName+'.mdf''';
    cmd := cmd + ' , MOVE N'''+OldName+'_log'' TO N'''+SqlDataDir+'\'+DBName+'.ldf''';
    cmd := cmd + ' , NOUNLOAD, REPLACE, STATS = 10';
    CmdRestore.CommandText := cmd;
    CmdRestore.Connection := ConnectionMaster;
    CmdRestore.Execute;
    except
    on E: Exception do
    writeln(LogFile,'RestoreScoreDb = '+E.Message);
    end;
  end;

Команда «Восстановить»

cmd ='RESTORE DATABASE score_import FROM DISK = 
N''C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\Backup\score_import.bak'' 
WITH FILE = 1 , MOVE N''score_import'' TO 
N''C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\score_import.mdf'' , 
MOVE N''score_import_log'' TO N''C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\score_import.ldf'' , 
NOUNLOAD, REPLACE, STATS = 10'

Когда я копирую и вставляю в студию управления, она без проблем восстанавливает таблицу. но когда я запускаю этот код, я получаю сообщение об ошибке:

У пользователя нет разрешения на ВОССТАНОВЛЕНИЕ базы данных "score_import"

SA имеет полное разрешение. Есть идеи, что мне не хватает? Делфи ХЕ6, Windows 10 SQL 2012.

05.06.2017

  • Не уверен, поможет ли это, но измените значение Integrated Security = на Integrated Security=False. 05.06.2017
  • Спасибо @RachellAmber. Я только что попробовал это и получил ошибку, сгенерированную операцией. Проверьте каждое значение состояния OLE, если оно доступно. Ни слова не было сказано. 06.06.2017
  • Вы можете попробовать код, который я разместил здесь: stackoverflow.com/questions/43059879/… и посмотреть, возникнет ли у вас та же проблема. Если ваша версия Delphi не имеет FireDAC, должно быть возможно сделать подобное с TAdoQuery или даже TAdoConnection сам по себе, но, судя по вашему запросу, вы уже используете Ado. 06.06.2017
  • Я экспериментировал и узнал кое-что, что я не считал важным, этот код является частью службы, предназначенной для замены этой базы данных. Если я добавляю ADOConnection и ADOCommand в форму и копирую строку подключения и командную строку, восстановление работает, поэтому кажется, что в строке нет проблем, а проблема связана с тем, что она находится в службе. но это не будет работать в сервисе. 07.06.2017

Ответы:


1

Благодаря поддержке Embarcadero. Они смогли воспроизвести мою проблему и решили ее, удалив Integrated Security="" из строки подключения. Если вам интересно, почему, выполните поиск в Google по запросу «Интегрированная безопасность ADO».

08.06.2017
Новые материалы

Дрейф концепций в ИИ
Что такое концептуальный дрейф? Дрейф понятий — это явление в искусственном интеллекте и машинном обучении, при котором основное распределение данных меняется со временем. Это изменение в..

Изучите Vue перед React. Вот почему
Сегодняшняя сеть представляет собой запутанный беспорядок из разных языков, библиотек и фреймворков, и начинающие веб-разработчики часто не могут понять, что изучать в первую очередь. Что вы..

Гл.31 — Помощь слабослышащим с помощью возможностей машинного обучения Apple Watch.
1 500 000 000  – количество людей с потерей слуха в мире. Это почти 20% населения Земли! (источник: who.int ) Недавно я экспериментировал с Apple Sound Classification API, и результаты на..

Машинное обучение без кода / Глубокое обучение Каждый специалист по обработке и анализу данных должен знать
Akkio, Очевидно.ай, DataRobot, Левити, Clarifai, Teachable Machines, Lobe, Pimer, DynaBench, APAflow Teachable Machine- https://teachablemachine.withgoogle.com/ Vertex AI..

Код, который работает вместе, остается вместе
Первоначально это было опубликовано в tiagojdf . Когда я только начинал как младший программист, я всегда терялся, глядя на внутренний код. Я предположил, что отчасти это было из-за того,..

Эта модель Google сочетает в себе рассуждение и действие в рамках одной языковой модели.
ReAct предоставляет архитектуру, которая инициирует действия на основе путей рассуждений языка. Недавно я запустил образовательный информационный бюллетень, посвященный ИИ, у которого уже..

Сортировка структур JSON по нескольким полям в JavaScript
Array.sort() не для слабонервных. Особенно, когда речь идет о сортировке сложных структур данных. Большинство руководств по JavaScript дают только краткое введение в Array.sort() . Обычно..