Подключение к БД ~ работает на локальном, а не на сервере - PullRequest
0 голосов
/ 09 мая 2011

У меня есть запрос, который нормально работает на моем локальном компьютере, но при размещении на сервере он возвращается с этой ошибкой,

Ошибка сервера в приложении «Страница».

ОШИБКА [IM002] [Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию

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

Сведения об исключении: System.Data.Odbc.OdbcException: ОШИБКА [IM002] [Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию

Ошибка источника:

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

Трассировка стека:

[OdbcException (0x80131937): ОШИБКА [IM002] [Microsoft] [Диспетчер драйверов ODBC] Имя источника данных не найдено и драйвер по умолчанию не указан] System.Data.Odbc.OdbcConnection.HandleError (OdbcHandle hrHandle, RetCode retcode) +1159314 System.Data.Odbc.OdbcConnectionHandle..ctor (соединение OdbcConnection, constr OdbcConnectionString, среда Handle OdbcEnvironmentHandle) +95 System.Data.Odbc.OdbcConnectionOpen..ctor (OdbcConnection externalConnection, OdbcConnectionString connectionOptions) +53 System.Data.Odbc.OdbcConnectionFactory.CreateConnection (параметры DbConnectionOptions, Object poolGroupProviderInfo, пул DbConnectionPool, DbConnection owningObject) +55 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection (DbConnection владениеConnection, DbConnectionPoolGroup poolGroup) +29 System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection owningConnection) +4866464 System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection externalConnection, DbConnectionFactory connectionFactory) +117 System.Data.Odbc.OdbcConnection.Open () +40 System.Data.Common.DbDataAdapter.QuietOpen (соединение IDbConnection, ConnectionState & originalState) +31 System.Data.Common.DbDataAdapter.FillInternal (набор данных DataSet, DataTable [] таблицы данных, Int32 startRecord, Int32 maxRecords, строка String srcTable, команда IDbCommand, поведение CommandBehavior) +112 System.Data.Common.DbDataAdapter.Fill (DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, команда IDbCommand, поведение CommandBehavior) +287 System.Data.Common.DbDataAdapter.Fill (DataSet dataSet, String srcTable) +92 System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect (аргументы DataSourceSelectArguments) +1297 System.Web.UI.WebControls.BaseDataList.GetData () +38 System.Web.UI.WebControls.DataGrid.CreateControlHierarchy (логическое значение useDataSource) +153 System.Web.UI.WebControls.BaseDataList.OnDataBinding (EventArgs e) +54 System.Web.UI.WebControls.BaseDataList.DataBind () +55 System.Web.UI.WebControls.BaseDataList.EnsureDataBound () +60 System.Web.UI.WebControls.BaseDataList.OnPreRender (EventArgs e) +15 System.Web.UI.Control.PreRenderRecursiveInternal () +80 System.Web.UI.Control.PreRenderRecursiveInternal () +171 System.Web.UI.Control.PreRenderRecursiveInternal () +171 System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) + 842

есть идеи? ура!

1 Ответ

0 голосов
/ 09 мая 2011

Вы используете ODBC для подключения к серверу. Вы должны убедиться, что если вы используете DSN (именуемое ODBC-соединение, которое хранится на сервере), вы создаете его на сервере, на котором выполняется этот код. Если вы используете соединение без DSN (вы выполняете настройку в своем коде), вам необходимо убедиться, что используемый вами драйвер ODBC установлен на сервере.

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

Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;

Не все из них указывают драйвер, но в этом случае он делает. Вам необходимо убедиться, что на вашем сервере установлен драйвер «SQL Native Client». DNS-соединение вместо этого будет иметь запись DSN в этой строке, например:

DSN=MyDBConnection;

Просмотрите ваш код, и вы узнаете, какой у вас есть. Как только вы это выясните, выясните, что вам нужно поместить на сервер. Скорее всего, вам нужно добавить DSN на сервер. Это можно сделать, перейдя в Панель управления и выполнив поиск ODBC. Как только вы окажетесь там, вы можете создать новую запись ODBC, которая соответствует записи на вашем компьютере разработчика. Вот ссылка на создание записи ODBC (DSN):

http://support.microsoft.com/kb/305599

Убедитесь, что вы создали DNS под Системой, а не на вкладке Пользователь. Таким образом, он доступен для любого входа в систему, под которым может работать приложение.

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