#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 подключение выполнено успешно