#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
записи!