Назад | Перейти на главную страницу

Подключение к экземпляру SQL Server через строку подключения не работает

Почему это работает для подключения к моей удаленной базе данных SQL Server:

            var srvConn = new ServerConnection("sql01");
            srvConn.LoginSecure = false;  
            srvConn.Login = "unittests";
            srvConn.Password = "mypwd";
            srvConn.DatabaseName = "MediaFilesDb";

            var srv1 = new Server(srvConn);
            Console.WriteLine(srv1.Information.Version); 

И это не работает:

        var scsb = new SqlConnectionStringBuilder();
        scsb.DataSource = "sql01";
        scsb.InitialCatalog = "MediaFilesDb";
        scsb.IntegratedSecurity = false;
        scsb.UserID = "unittests";
        scsb.Password = "mypwd";

        var srv1 = new Server(scsb.ConnectionString);
        Console.WriteLine(srv1.Information.Version);

Я получаю печально известную ошибку 40:

Произошла ошибка, связанная с сетью или конкретным экземпляром, при установке соединения с SQL Server. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server)

Если я возьму создаваемую строку подключения и вставлю ее в другой инструмент, например CodeSmith, он будет работать правильно и соединение будет установлено.

Почему второй пример терпит неудачу?

Редактировать:

Если я укажу TCP / IP для сетевой библиотеки:

scsb.NetworkLibrary = "dbmssocn";

Я получаю такую ​​ошибку:

Длина значения для ключа «источник данных» превышает ограничение в «128».

Это моя строка подключения:

Источник данных = sql01; Начальный каталог = MediaFilesDb; Интегрированная безопасность = False; ID пользователя = unittests; Пароль = ****; Pooling = False; Сетевая библиотека = dbmssocn;

Экземпляр SQL находится на локальном компьютере или на другом? Вы пробовали изменить свойство NetworkLibrary объекта SqlConnection, чтобы он использовал TCP / IP вместо именованных каналов?