Исключение 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

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