как получить доступ к серверу sql со страницы asp - PullRequest
2 голосов
/ 17 февраля 2009

У нас есть устаревшая домашняя система расписаний (ASP, Microsoft SQL Server 2005), которую мне нужно клонировать на другой компьютер для резервного копирования. (Я очень мало знаю об этом, поэтому, пожалуйста, будьте нежны)

У меня есть большинство компонентов (IIS, Sql Server, импорт / создание таблиц). Но ASP-страница для доступа к страницам расписания ограничивает доступ к серверу sql.

вот строка, в которой происходит сбой: сессия conn.open ("sConnStr")

Это строка подключения;

sConnStr = "Server=MYSERVER-D01;DATABASE=MYDATABASE;UID=MyDatabaseUser;PWD=MyDatabaseUser;QuotedID=No;DRIVER={SQL Server};Provider=MSDASQL"

Это ошибка:

Тип ошибки: поставщик Microsoft OLE DB для драйверов ODBC (0x80004005) [Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию /mydir/mypage.asp, строка 17 <== показано выше </p>

Обратите внимание, что я могу получить доступ к БД на SQL Server с Windows, указанной в качестве аутентификации, с помощью Server Management Studio. Однако, когда я пытаюсь использовать проверку подлинности SQL, я получаю сообщение «Пользователь не связан с надежным соединением SQL».

Вопросы:

  • Как настроить имя пользователя / пароль в SQL Server 2005?
  • Что такое драйвер по умолчанию, и мне нужно его установить / настроить?
  • Когда речь идет об имени источника данных (см. «MYDATABASE» в вышеупомянутая строка соединения), это говорит об одном из записи, которые вы видите в разделе «Базы данных» на объекте студии управления Исследователь

Спасибо за ваши ответы! Пока что не повезло. Мне удалось получить доступ к базе данных через проводник объектов студии управления, выполнив это;

  1. Включить аутентификацию SQL :

    .... Решение Чтобы решить эту проблему, следуйте инструкциям для установки аутентификации пользователя. SQL Server 2000:

    Перейдите в Пуск> Программы> Microsoft SQL Server> Enterprise Manager Щелкните правой кнопкой мыши имя сервера, выберите «Свойства»> «Безопасность». Под Аутентификацией выберите SQL Server и Windows Сервер должен быть остановлен и перезапущен, прежде чем это вступит в силу

    SQL Server 2005:

    Перейдите в Пуск> Программы> Microsoft SQL Server 2005> SQL Server Management Studio Щелкните правой кнопкой мыши имя сервера, выберите «Свойства»> «Безопасность». В разделе Аутентификация сервера выберите SQL Server и режим аутентификации Windows. Сервер должен быть остановлен и перезапущен, прежде чем это вступит в силу ... "

  2. И это ;

    Измените владельца на того, который используется для доступа к БД

    Microsoft SQL Server Management Studio

    Щелкните правой кнопкой мыши БД, смените владельца

Но я все равно получаю точно такое же сообщение об ошибке!

Ответы [ 6 ]

1 голос
/ 17 февраля 2009

Если у вас есть доверенное соединение от имени входа, которое IIS использует на машине, на которой запущен SQL Server, я бы избегал использования имени пользователя / пароля и объявлял, что соединение является доверенным для вашей строки соединения:

sConnStr = "Сервер = MYSERVER-D01; DATABASE = MYDATABASE; UID = MyDatabaseUser; PWD = MyDatabaseUser; QuotedID = Нет; DRIVER = {SQL Server}; Поставщик = MSDASQL; Интегрированная безопасность = SSPI"

Это иллюстрирует изменение, но на практике вам может потребоваться немного изменить строку подключения, посмотрите примеры http://www.connectionstrings.com/sql-server-2005.

Когда речь идет об имени источника данных (см. «MYDATABASE» в вышеупомянутой строке подключения), речь идет об одной из записей, которые вы видите в разделе «Базы данных» в проводнике объектов Management Studio

Да, ваша запись для "MYDATABASE" должна быть точным именем базы данных, которую вы видите в разделе "Базы данных". Убедитесь, что вы правильно указали «Сервер».

1 голос
/ 17 февраля 2009

Чтобы создать нового пользователя и назначить его в базу данных, вам нужно сделать следующее:

  1. В SQL Server Management Studio откройте Обозреватель объектов и раскройте папка экземпляра сервера, в которой создать новый логин.
  2. Щелкните правой кнопкой мыши папку «Безопасность», выберите «Новый» и нажмите «Войти».
  3. На странице Общие введите имя для нового входа в Имя для входа. коробка.
  4. Выберите Аутентификация SQL Server. Аутентификация Windows является более безопасный вариант.
  5. Введите пароль для входа в систему.
  6. Выберите параметры политики паролей, которые должны применяться к новым авторизоваться. В общем, соблюдение пароля политика является более безопасным вариантом.
  7. Нажмите ОК.

Затем вы захотите присвоить этот логин базе данных, создав нового пользователя базы данных,

  1. В SQL Server Management Studio откройте Обозреватель объектов и раскройте Папка Базы данных.
  2. Разверните базу данных, в которой будет создан новый пользователь базы данных.
  3. Щелкните правой кнопкой мыши папку «Безопасность», выберите «Новый», а затем нажмите «Пользователь».
  4. На странице Общие введите имя нового пользователя в поле Имя пользователя.
  5. В поле Имя для входа введите имя для входа в SQL Server для сопоставления с пользователь базы данных.
  6. Нажмите ОК.

Вы захотите сделать этого пользователя db_owner. Запустите следующее для вашей базы данных.

sp_addrolemember @rolename = 'db_owner', @membername = 'usernamehere'

Затем используйте следующий формат строки подключения для подключения к базе данных.

Data Source=ServerAddress;Initial Catalog=DatabaseName;User Id=UserName;Password=UserPassword;
0 голосов
/ 17 февраля 2009

Я предлагаю вам создать DAL (Уровень доступа к данным), который может сделать все для вас. Просто передайте команду, и она может открывать и закрывать ваши соединения и тому подобное. В любом приложении вы хотите абстрагировать эти различные слои настолько, насколько это возможно, и это означает, что ваша страница aspx должна вызывать объект, когда методы, которые hten обрабатываются dal, и выполнять вызовы базы данных.

Вот формат для подключения к БД. Вы можете поместить строку connectcitn в файл web.config или даже сделать это в коде, используя hte connectionstringbuilder.

вам также нужно убедиться, что ваш проект включает библиотеку system.data.sqlclient, иначе это не сработает.

Запись в файле веб-конфигурации выглядит примерно так:

<add name="ConString" connectionString="Data Source=localhost;Integrated Security=True;Initial Catalog=&quot;DBtouse&quot;;Persist Security Info=True;" providerName="System.Data.SqlClient"/>

или

<add key="ConString" value="Server=localhost;user=username;password=password;Initial Catalog=MyDBtouse;pooling=false"/>

код локов вроде этого:

Dim MyConnection As Data.SqlClient.SqlConnection
Dim Constring As New SqlClient.SqlConnectionStringBuilder
Constring.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings("ConString")
Constring.ConnectTimeout = 30
MyConnection.ConnectionString = Constring.ConnectionString
MyConnection.Open()

'Execute code here

MyConnection.Close()
MyConnection = Nothing
0 голосов
/ 17 февраля 2009

Я нашел самый простой способ справиться с этой проблемой - создать файл udl. На рабочем столе создайте новый текстовый файл и переименуйте его в filename.udl. Дважды щелкните файл UDL. Перейдите на вкладку «Поставщик»> выберите «Поставщик Microsoft OLE DB для SQL Server»> «Далее». Используя вкладку подключения, вы сможете подключиться к вашей базе данных. После успешного тестирования соединения нажмите ОК. Теперь вы можете открыть файл в текстовом редакторе, скопировать и вставить строку, которая запускает Provider ... в ваш файл asp. В результате вы должны получить sConnStr = "Provider..textfromUDLfile"

MSDN - Создание и настройка файлов универсальной линии передачи данных (.udl)

0 голосов
/ 17 февраля 2009

Эта строка подключения должна нормально работать с ASP, если это SQL-сервер. Замените свои значения перед использованием, очевидно.

sConnStr = "provider=SQLOLEDB;Data Source=YourServerName;Initial Catalog=YourDBName;UID=YourUserName;PWD=YourUserPWD;"
0 голосов
/ 17 февраля 2009
Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию.

Обычно это происходит в одном из следующих сценариев:

* you referenced your connection incorrectly (e.g. spelled the DSN name, or one of the DSN-less string components wrong);
* you referenced a DSN that doesn't exist;
* the user connecting to the DSN or DSN-less connection doesn't have access to the information stored in the registry (see KB #306345);
* you used an English or localized driver detail for your connection string when your system is not set up in that language (see KB #174655); or,
* you are missing the connection string entirely (this can happen if you maintain your connection string in a session variable, and your sessions aren't working; see Article #2157).

Вот ссылка на вышеприведенную статью (обратите внимание, это очень подробно). ссылка

Чтобы ответить на последний вопрос, MYDATABASE вызывает базу данных по имени. Если вы используете «MYDATABASE» в своей строке, вам понадобится база данных «MYDATABASE» на SQL Server.

...