ASP-соединения с именованным экземпляром SQL 2008 - PullRequest
0 голосов
/ 09 мая 2009

У меня на сервере SQL 2008 запущены три экземпляра. Каждому экземпляру назначается уникальный IP-адрес, и он прослушивает порт 1433. Включен только TCPIP.

Все мои приложения ASP.Net успешно подключаются с использованием IP-адреса, строка подключения похожа на:

User ID=SQLUser;Password=userpass;Database=TestDB;Data Source=sqlserver

Мои ASP-приложения будут подключаться только к экземпляру по умолчанию; Я получаю эту ошибку всякий раз, когда пытаюсь подключиться к другому экземпляру:

Microsoft OLE DB Provider for ODBC Drivers error '80004005' <br />
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.

Строки подключения ASP выглядят так:

driver={SQL Server};server=sqlserver;uid=SqlUser; pwd=userpass; database=TestDB

Я отключил брандмауэр Windows на IIS и SQL Server. Между SQL Server и сервером IIS нет никаких других брандмауэров. Браузер SQL работает на сервере SQL. Я попытался изменить строки подключения ASP, чтобы включить имя экземпляра, например:

driver={SQL Server};server=sqlserver/InstanceName;uid=SqlUser;pwd=userpass;database=TestDB

но я получаю ту же ошибку.

Есть ли способ подключиться к именованному экземпляру из ASP?

Ответы [ 4 ]

2 голосов
/ 10 мая 2009

Напишите имя сервера так:

server=sqlserver\InstanceName

Кроме того, проверьте номер порта, так как он может отсутствовать на 1433.

В связи с этим вопрос:

1 голос
/ 10 мая 2009

Это чистое предположение.

Возможно, при подключении к серверу из ASP.net вы используете поставщика SQL OLE DB.
Принимая во внимание, что вы используете OLEDB для ODBC, когда дело доходит до ASP (или он выбирает такой тип соединения, чтобы выбрать его на основе строки вашего соединения).

Это тот случай?
Если это так, это может быть проблемой со строкой подключения. См. Www.connectionstrings.com, например, для строки подключения SQL Server.

Если вы используете ODBC, убедитесь, что у вас установлен правильный набор драйверов для подключения к SQL Server 2008 .

Это помогает?

РЕДАКТИРОВАТЬ: Я думаю, вам придется изменить строку подключения внутри ASP, когда используете ADO, чтобы использовать это http://www.connectionstrings.com/sql-server-2008#20

1 голос
/ 10 мая 2009

РЕДАКТИРОВАТЬ: Sql имена серверов не UNC ;)

Попытка сделать это с \ вместо a / like:

mysqlserver\myinstance

Лично я всегда стараюсь включить порт. Это сохраняет в оба конца, где клиент пытается выяснить номер порта:

server=mysqlserver\myinstance,1433;uid=SqlUser;pwd=userpass;database=TestDB

Интересно, является ли база данных синонимом исходного каталога?

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

Попробуйте указать IP-адрес. Я подозреваю, что когда он разрешает имя сервера, он получает IP-адрес экземпляра по умолчанию. Поскольку вы привязали их к отдельным IP-адресам, вам необходимо либо указать IP-адрес, либо, если IP-адрес разрешается на другое имя хоста, использовать имя хоста, которое соответствует этому IP-адресу. Я не думаю, что вам нужно указывать имя экземпляра, но я не уверен. У нас есть два экземпляра на нашем производственном сервере - один для общедоступных веб-приложений, другой для непубличных веб-приложений. Каждый из них привязан к отдельному IP-адресу, но адреса меняются в соответствии с разными именами. Мне нужно использовать только правильное имя сервера при подключении к каждому экземпляру.

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