2013-06-09 3 views
3

Я создал очень маленький сайт ASP.NET, используя MS Access 2010 в качестве базы данных, которая работает в тестовом режиме. Это для автономного приложения для интрасети, поэтому я не беспокоюсь о безопасности - доступ к оборудованию - это путь взлома. Это все строится в VS WebExpress 2012.Устранение ошибки SQL «Ошибка сетевого пути»

При попытке опубликовать в IIS 7.5, откройте страницу выплеска веб-сайта, а затем перейти на вторую страницу, я отдается два сообщения об ошибках верхнего яруса:

[Win32Exception (0x80004005): The network path was not found]

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)]

Моя строка соединения:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\inetpub\wwwroot\App_Data\PersonalArt Version 0055.accdb";Persist Security Info=True 

Я не знаю, почему это создает ошибку SQL Server, так как я не пытаюсь использовать SQL Server.

Я пробовал смотреть на сторону SQL Server вещей here. Я проверил, что SQL Server работает, что браузер SQL включен и работает, и что соответствующие порты открыты в брандмауэре.

Я добавил строку подключения к IIS 7.5, которая, по крайней мере, указывает на ACE.OLEDB.12.0, но я не могу удалить строку подключения по умолчанию для SQL Server Express.

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

Я намерен использовать контроллер планшета WIFI, и я установил, что IIS работает достаточно хорошо, чтобы я мог видеть индексную страницу на контроллере.

Так что я подпрыгивал, пытаясь понять, является ли это проблемой IIS, проблемой установки/управления SQL или проблемой межсетевого экрана/безопасности.

+0

Вы используете 'объекты и методы System.Data.SqlClient', чтобы попытаться подключиться к базе данных Access? Если это так, попробуйте вместо этого использовать соответствующие 'System.Data.OleDb' gizmos. –

+0

Гордон, спасибо. Но я тоже не использую, по крайней мере, не сознательно. Я работаю под наивной идеей, что все, что я делаю в тестовом режиме, должно прозрачно перейти на сайт. Вы думаете, что это принадлежит конфигурационному файлу? где-нибудь на каждой веб-странице? Мне нужно немного больше, чтобы работать здесь. – Dave123

ответ

1

Для Ошибка 0x80004005:

Идея # 1: попробуйте удалить двойные кавычки в каталоге списка и повторно проверить свой код (я говорю об этом, даже если вы, возможно, уже пробовал):

"C:\inetpub\wwwroot\App_Data\PersonalArt Version 0055.accdb" 

Идея # 2: ошибка действительно говорит сетевой путь не найден. Попробуйте создать локальную акцию и дать учетную запись IIS по крайней мере разрешения на чтение этой папку, изменяющее список каталогов на что-то вроде

\\MyServer\MyShare\PersonalArt Version 0055.accdb 

Идеи: # 3: Как DBA я удовлетворение по отношению к SQL Server, так что я» d лично попробуйте сами проверить строку подключения, чтобы убедиться, что она возвращает данные - с помощью SQL Server. Если он здесь не работает, я бы не ожидал, что он будет работать с ASP.NET:

Попробуйте запустить это в SQL Server, чтобы узнать, даже если вы получаете запрос назад к имени таблицы в Access (если только вы есть лучший способ проверить строку подключения):

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\inetpub\wwwroot\App_Data\PersonalArt Version 0055.accdb";Persist Security Info=True, 'SELECT * FROM <your table>') 

Но прежде чем это сделать, вам, возможно, потребуется выполнить следующие действия в SQL Server, так что распознает ACE.OLEDB.12.0 и распределенные запросы:

exec sp_configure 'Show Advanced Options', 1; 
RECONFIGURE; 
GO 

exec sp_configure 'Ad Hoc Distributed Queries', 1; 
RECONFIGURE; 
GO 

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 
GO 

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 
GO 

Для SqlException (0x80131904):

Ошибка SQL звучит как еще один вопрос в целом. Попробуйте включить SQL для удаленного подключения на производства SQL ящик (или там, где производство подключения) в Configuration Manager SQL Server:

enter image description here

Смежные вопросы