Ошибка создания для базы данных, SMO, C#

#c# #.net #sql-server-2005 #smo

#c# #.net #sql-server-2005 #smo

Вопрос:

Я пытаюсь создать новую базу данных программно, используя SMO (c #).

Я работаю над SQL Server 2005. Это код :

 ServerConnection connection = new ServerConnection(serverName, userName, password);
Server sqlServer = new Server(connection);
Database newDB = new Database(sqlServer, databaseName);
newDB.Create();
  

Я получаю исключение :

«Ошибка создания для базы данных».

В чем может быть проблема и как я могу создать новую базу данных? Спасибо…

Комментарии:

1. Любая другая информация об ошибках, скажем, в журналах SQL Server? Внутреннее исключение .net должно показывать, что SQL Server выдал как ошибку

2. Я редактировал, извините. А внутреннее исключение .net?

3. @marc_s — да, у пользователя есть разрешения, я могу создать БД в среде sql Management studio.

4. Итак, вы подключаетесь с точно таким же именем пользователя паролем, как указано выше?

5. @gbn это исключение — Microsoft.SQLServer.Management.SMO.Failed {«Не удалось создать базу данных ‘TempDB’ «.}

Ответ №1:

Я попробовал это: с пользователем sysadmin все работает просто отлично. С «обычным» пользователем я получаю ту же ошибку, что и вы.

Попробуйте это:

 ServerConnection connection = new ServerConnection(serverName, userName, password);
Server sqlServer = new Server(connection);
Database newDB = new Database(sqlServer, databaseName);

try
{
   newDB.Create();
} 
catch(Exception exc) 
{
   string msg1 = exc.Message;

   if(exc.InnerException != null)
   {
       string msg2 = exc.InnerException.Message;

       if(exc.InnerException.InnerException != null)
       {
           string msg3 = exc.InnerException.InnerExceptionMessage;
       }
   }
}
  

Вы видите a msg2 и a msg3 ?? Что они говорят???

При использовании пользователя без необходимого разрешения мой msg3 очень понятен:

Отказано в разрешении на создание базы данных в базе данных ‘master’.

Комментарии:

1. это была моя досадная ошибка, извините, что побеспокоил вас всех …. я пытался создать базу данных, которая уже существовала ….:( но вы помогли мне увидеть внутреннее исключение … большое вам спасибо, вы действительно помогли мне!!!

2. @N.D.: это также помогает проверять .InnerException записи!