Та же ошибка, даже если выполняется от имени администратора
е всего: все, что вы прочтете в этом посте, происходиттолько если установлено обновление Windows 10 апреля 2018 года. нет проблемдо установка ипосле удалить обновление.
После установки обновления Windows 10 1803 все мои программы VB (VB6, .NET и WPF), работающие с сетевого подключенного диска или пути UNC, не могут подключиться к серверу SQL, нет проблем, если один и тот же исполняемый файл размещается и выполняется с локального диска (проверено на 2 ПК в той же сети):
Удаленный SQL сервер, exe на локальном диске:ХорошоТакой же удаленный SQL-сервер,такой же EXE на подключенном сетевом диске (с полным доступом для чтения / записи):ОШИБКАЭто ошибка (возможно, не значащая для решения этой проблемы):
При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске указанного сервера / экземпляра).
Простой код VB.NET для воспроизведения проблемы (поместите код в простой форме с помощью кнопки в событии button_click, установите значения для подключения к серверу SQL, скомпилируйте, сохраните исполняемый файл по сетевому пути и выполните его):
Dim myConnectionString As String
Dim mySqlConnectionStringBuilder As New SqlConnectionStringBuilder()
mySqlConnectionStringBuilder.DataSource = myServer
mySqlConnectionStringBuilder.InitialCatalog = myDatabase
mySqlConnectionStringBuilder.UserID = myUtente
mySqlConnectionStringBuilder.Password = myPassword
myConnectionString = mySqlConnectionStringBuilder.ConnectionString
Dim mySqlConnection As New SqlConnection(myConnectionString)
mySqlConnection.Open() <- error
Исключение:
System.Data.SqlClient.SqlException (0x80131904): Si è verificato un errore di rete o specifico dell'istanza mentre si cercava di stabilire una connessione con SQL Server. Il server non è stato trovato o non è accessibile. Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato in modo da consentire connessioni remote. (provider: SQL Network Interfaces, error: 26 - Errore nell'individuazione del server/dell'istanza specificata)
in System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
in System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
in System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
in System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
in System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
in System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
in System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
in System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
in System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
in System.Data.SqlClient.SqlConnection.Open()
in RiepilogoOreTimer.RiepilogoOreTimerWindow.ConnessioneOK()
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:-1,State:0,Class:20
Есть идеи?
Обновить: Если я удаляю обновление за апрель 2018 года, проблема исчезает, и программа работает нормально, даже если выполняется на сетевом диске, но это не может быть решением ...
Обновление 05/05/2018: Я заметил, что апрельское обновление 2018 года принеслоизменения в безопасности:
Windows 10 версии 1803 обеспечивает дополнительную защиту:
Новые правила уменьшения поверхности атакиКонтролируемый доступ к папкам теперь может блокировать сектора дискаМожет ли это быть причиной проблемы? Я не менеджер по безопасности, поэтому я не могу сказать, может ли это вызвать мою проблему
Обновление 09/05/2018: Я нашел эту информацию вэто Почта:
Обновление 1803 для Windows 10 не открывает сетевые подключения для исполняемых файлов на общем ресурсе SMBv1 (как Windows Server 2003)
но я не знаю, что такое SMBv1 ... кто-нибудь может мне помочь?