Создание базы данных удаленно с помощью C # - PullRequest
1 голос
/ 16 декабря 2009

Я пытаюсь создать базу данных путем удаленного подключения к SQL Server Express с использованием Visual Studio 2008. Я выполняю вход на SQL Server с использованием аутентификации SQL. Я могу сделать это удаленно с помощью SQL Server Management Studio Express без проблем, используя следующую команду:

СОЗДАТЬ БАЗУ ДАННЫХ ВКЛ (NAME = 'dbname_dat', FILENAME = 'C: \ folder \ dbname.mdf') LOG ON (NAME = 'dbname_log', FILENAME = 'C: \ папка \ dbname.ldf')

Однако, когда я использую ту же строку в своем коде, я получаю следующую ошибку:

Отказано в разрешении на создание базы данных в база данных «мастер».

Номер ошибки - 262, а номер класса - 14. Моя строка подключения:

Сервер = имя_сервера; база данных = хозяин, Trusted_Connection = да; Аккумулирование = ложь;

Может кто-нибудь помочь?

Ответы [ 4 ]

4 голосов
/ 16 декабря 2009

Ну, сообщение об ошибке говорит вам, что не так, не так ли? Пользователь, которого вы используете для входа через C #, не имеет достаточных прав для выполнения операторов CREATE.

Похоже, вы используете другого пользователя для входа через SQL Server Management Studio, чем для входа через C #. Вы входите в SQL-сервер через проверку подлинности Windows и через проверку подлинности SQL Server в C #? Или, может быть, в Management Studio вы выбрали другую базу данных для выполнения оператора SQL? Проверьте поле со списком для базы данных, которую использует скрипт.

2 голосов
/ 16 декабря 2009

Это слишком очевидно, но проверьте ваши разрешения на сервере. Вы системный администратор или dbcreator?

Кроме того, проверьте свои учетные данные. В строке подключения указано trusted_connection=yes, но затем вы говорите, что входите в систему с использованием аутентификации SQL Server. Какой из них вы или должны использовать?

1 голос
/ 16 декабря 2009

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

  • Вы не включили олицетворение
  • В IIS включена базовая аутентификация.

См. Эту статью на MSDN о Как получить доступ к SQL Server с помощью встроенной безопасности Windows для получения подробных инструкций по настройке встроенной безопасности или переключения на фиксированную учетную запись SQL Server.

1 голос
/ 16 декабря 2009

Попробуйте изменить строку подключения на что-то вроде этого (обратите внимание на настройки пользователя и Pwd):

tmpConn.ConnectionString = "SERVER = " + DBParam.ServerName + "; DATABASE = master; User ID = sa; Pwd = sa";

У учетной записи sa есть права на выполнение этой команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...