Исключение Sql: никакой процесс не находится на другом конце трубы
Я не могу получить доступ к соединению с сервером sql из кода С#. Я получаю эту ошибку:
Sql Исключение: на другом конце трубы нет процесса
thats строка подключения в моем app.config:
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=BELLA\SQLEXPRESS;Initial Catalog=TLP;User Id=pascal;Password=test;Pooling=False"/>
Когда я использую проверку подлинности Windows: Integrated Security = True,
Затем я могу подключиться к базе данных.
НО Я НЕ МОЖЕТ использовать проверку подлинности Windows, потому что открытие соединения sql выполняется из службы Windows, которая запускается как LocalSystem. Когда я это сделаю, я получаю эту ошибку:
Ошибка входа. Ошибка входа для пользователя "NT AUTHORITY\SYSTEM"
Впервые я создал пользователя login + в студии управления sql, поэтому я почти уверен, что сделал что-то не так и свою ошибку.
Это то, что я сделал:
1) Создайте новый логин в папке безопасности сервера с помощью пользователя аутентификации sql: пароль и пароль: test.
2) Пошел в мою базу данных и создал нового пользователя в папке безопасности с пользователем: pascal и login: pascal и schema: dbo
3) Я что-то забыл?
Решения от других людей:
1) Я также пробовал эту ссылку, но мне не повезло, что мой Sql Select в таблице suspect_pages пуст.
Ошибка: никакой процесс не находится на другом конце канала
2) Моя сетевая конфигурация сервера Sql имеет ENABLED на tcp/ip, именах имен и настройках общей памяти.
3) SQL Server 2008 не может войти в систему с вновь созданным пользователем
Число с 1 по 3 не помогло.
Все это делается на моей локальной машине. Здесь нет сети.
Ответы
Ответ 1
Включили ли вы совместную память и поставщики TCP/IP в конфигурации SQL?
Если нет, попробуйте открыть служебную программу Configuration Manager SQL Server и включить общую память и TCP/IP. Порядок, который работает для меня, - это общая память (1) и TCP/IP (2) для сервера и клиента.
Кроме того, убедитесь, что вы создаете как SQL LOGIN, так и DATABASE USER для PASCAL с правильными правами.
Ознакомьтесь с моей статьей в блоге о создании логинов. http://craftydba.com/?p=656
Ниже приведен фрагмент ниже и заново запустит ваш логин/пользователь с правильной базой данных по умолчанию, схемой по умолчанию и привилегиями чтения/записи.
-- Which database to use.
USE [TLP]
GO
-- Delete existing user.
IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'pascal')
DROP USER [pascal]
GO
-- Which database to use.
USE [master]
GO
-- Delete existing login.
IF EXISTS (SELECT * FROM sys.server_principals WHERE name = N'pascal')
DROP LOGIN [pascal]
GO
-- Add new login.
CREATE LOGIN [pascal] WITH PASSWORD=N'test', DEFAULT_DATABASE=[TLP]
GO
-- Which database to use.
USE [TLP]
GO
-- Add new user.
CREATE USER [pascal] FOR LOGIN [pascal] WITH DEFAULT_SCHEMA=[dbo]
GO
-- Add to database read / write roles
EXEC sp_addrolemember 'db_datareader', 'pascal'
EXEC sp_addrolemember 'db_datawriter', 'pascal'
GO
-- Add to database owner role?
-- Only give out if application needs a high level of privileges.
-- EXEC sp_addrolemember 'db_owner', 'pascal'
-- GO
Протоколы уровня сервера.
![enter image description here]()
Протоколы клиентского уровня.
![enter image description here]()
Я никогда не выбираю NETBIOS, так как это немаршрутизируемый протокол.
Если у вас все еще есть проблемы, отправьте снимок экрана и более подробную информацию.
Ответ 2
Вероятно, это необычный сценарий, но я получил это исключение и отследил его до недопустимого имени базы данных в значении исходного каталога строки подключения.