Не удается подключиться к SQL Server с помощью проверки подлинности Windows из C#

#c# #sql-server #sqlclient

#c# #sql-server #sqlclient

Вопрос:

Я хочу подключиться к SQL Server 2016 с помощью проверки подлинности Windows.

Я использую C # с этой строкой подключения

 Server=192.168.1.12,14331;Database=master;Integrated Security=true;Timeout=30
  

или

 Server=serversqlnewinstance;Database=master;Integrated Security=true;Timeout=30
  

Ошибка — это тайм-аут подключения.

При использовании соединения с проверкой подлинности SQL Server следующим образом:

 Server=192.168.1.12,14331;Database=master;User Id=***;Password=****;Timeout=30
  

все в порядке.

Исходный код C#

 var constr = "<connection string>";

using (var connection = new SqlConnection(constr))
{
    var command = connection.CreateCommand();
    command.CommandType = CommandType.Text;
    command.CommandText = "SELECT 1";
    command.CommandTimeout = 0;

    connection.Open();
    command.ExecuteNonQuery();
}
  

Но когда я использую SQL Server Management Studio для проверки подключения к экземпляру SQL Server с помощью проверки подлинности Windows, все в порядке. Использование псевдонима или IP-адреса не устраняет ошибку.

Я не понимаю, почему я получаю эту ошибку…

Помогите мне, пожалуйста! Спасибо вам всем!

ОБНОВЛЕНИЕ: если я использую соединение 1 с IP и портом, возникает ошибка:

Ошибка входа в систему. Вход осуществляется из ненадежного домена и не может использоваться с Windows

ОБНОВЛЕНИЕ: экземпляр SQL установлен на другом компьютере в той же сетевой локальной сети, что и мой компьютер. Я проверил средство просмотра журналов на ПК install instance SQL, но журнала записей нет.

Комментарии:

1. Прошу прощения. Я отредактировал вопрос. Не могли бы вы мне помочь!

2. @MrMy Gserg говорит, что 2 строки подключения пытаются подключиться к 2 экземплярам completely и на 2 разных хостах. То, что вы можете подключиться к одному экземпляру, не означает, что вы можете подключиться к другому, когда они могут быть (или, вероятно, будут) настроены по-разному.

3. @GSerg прошу прощения. я отредактировал вопрос. два хоста одинаковы с ip 192.168.1.12 и портом 14331, а псевдоним — serversql newinstance

4. Можете ли вы увидеть попытку подключения (с использованием проверки подлинности Windows) в журнале SQL Server? если да, то какие сведения регистрируются?

5. @Larnu Я проверил журнал, но в программе просмотра событий записи в журнал не было.

Ответ №1:

Я не уверен, что это работает для вас, но вы можете попробовать:

 SqlConnection cnn;
public connect(){
    string strConnect = @"Data Source=192.168.1.12,14331;Network Library=DBMSSOCN;Initial Catalog=master;User ID=****;Password=*****";
    cnn = new SqlConnection(strConnect);
    try
    {
        cnn.Open();
    }
    catch(Exception)
    {
        // connect failed
    }
}
public void ExeQuery(string query){
    // query="select * from tblA"
    SqlCommand sqlCmd = new SqlCommand(query,cnn);
    sqlCmd.ExecuteNonQuery();
    sql.Dispose();
}
  

Комментарии:

1. Я хочу использовать проверку подлинности окна, а не пользователя sql. Я использую sql user успешно, но использование проверки подлинности окна является ошибкой, несмотря на то, что с помощью Sql Management Studio подключение выполнено успешно