Связанный сервер SQL Server не работает в ASP Classic

#sql-server #asp-classic #oledb #linked-server #jet

#sql-сервер #asp-classic #oledb #связанный сервер #jet

Вопрос:

Я создал связанный сервер с расширенной таблицей Excel. Все в порядке, и, работая на SQL Server, я могу запросить файл Excel в анализаторе запросов.

Но когда я пытаюсь получить доступ к этому серверу ссылок на моей странице asp:

 Set pishbini = Server.CreateObject("ADODB.Recordset")

pishbini.ActiveConnection = MM_semmet_STRING
pishbini.Source = "SELECT * FROM OPENQUERY(SemnanmetWeekly, 'SELECT * FROM [DayPish$]')"
pishbini.CursorType = 0
pishbini.CursorLocation = 2
pishbini.LockType = 1
pishbini.Open()
  

SemnanmetWeekly это имя связанного сервера в SQL Server Я получаю эту ошибку на своей странице asp:

Ошибка поставщика Microsoft OLE DB для драйверов ODBC ‘80040e14’

[Microsoft] [Драйвер ODBC SQL Server] [SQL Server] Поставщик OLE DB «Microsoft.Jet.OLEDB.4.0» для связанного сервера «SemnanmetWeekly» возвращенное сообщение «Не может запустить ваше приложение. Файл информации о рабочей группе отсутствует или открыт исключительно другим пользователем.».

/Daypish.asp, строка 15

IUSR (Пользователь IIS) имеет полный доступ к файлу Excel, я использовал все различные опции в настройках моего сервера ссылок, такие как олицетворение или доступ к файлу Excel с учетной записью администратора, но ошибка осталась прежней!

Я предпочитаю не изменять код, поскольку я занимаюсь только администрированием на этом сервере. он работал на старом сервере, но с тех пор, как мы переместили его на новый сервер, он перестал работать. чего-нибудь мне здесь не хватает?

Ответ №1:

Не связано с разрешениями. Я думаю, что вы вошли в Sql Server с помощью проверки подлинности Windows, все в порядке, вы босс. Но, если соединение в ASP проходит проверку подлинности SQL, вы получаете эту ошибку. Итак, вы должны добавить логин связанного сервера с запросом, подобным следующему.

 Exec master..sp_addlinkedsrvlogin
@rmtsrvname = N'SemnanmetWeekly',
@useself = N'False',
@locallogin = N'sa', /* replace your own - same as sql server authenticated account */
@rmtuser = NULL, 
@rmtpassword = NULL
  

Затем вы можете подключиться к SemnanmetWeekly в своем приложении ASP.

Комментарии:

1. Спасибо, что решил мою проблему, теперь она работает, но у меня другая проблема, файлы Excel заблокированы, и мы не можем их перезаписать. есть идеи, почему Sql Server или IIS их блокируют?