22.8.26

Как правильно писать "Data Source=(local)" в строках подключения SQL Server

Автор: Dan Benediktson, Understanding “Data Source=(local)” in SQL Server Connection Strings
Мы заметили множество недопониманий, связанных с использованием ключевого слова Data Source в строках подключения, вызванных тем, что люди обобщают пример, демонстрирующий строку подключения для локального соединения, и создают свою собственную строку подключения для удалённого соединения. 
Вот один из таких примеров строки подключения для локального соединения, как она используется в VB.Net:
Public con As New System.Data.SqlClient.SqlConnection("Integrated Security=SSPI;Initial Catalog=TestDatabase;Data Source=(local);")

Параметры этой строки подключения можно разобрать так:

  • Integrated Security=SSPI; – это означает, что мы хотим подключиться, используя аутентификацию Windows.
  • Initial Catalog=TestDatabase; – это означает, что база данных, к которой мы хотим подключиться в первую очередь, называется "TestDatabase".
  • Data Source=(local); – это означает, что мы хотим подключиться к экземпляру SQL Server, расположенному на локальной машине.

Путаница возникает с последним параметром, поскольку люди думают, что "local" является ключевым словом, ссылающимся на локальную учётную запись машины, в то время как на самом деле специальным ключевым словом является "(local)", включая круглые скобки. В результате, если они хотят использовать удалённое подключение, и если имя их сервера, например, TestServer с IP-адресом 10.1.1.10, они пытаются использовать параметр строки подключения: "Data Source=(TestServer)" или "Data Source=(10.1.1.10)". Поскольку специальным ключевым словом здесь является целое слово "(local)", правильным параметром строки подключения будет: "Data Source=TestServer" или "Data Source=10.1.1.10". Таким образом, целиком строка кода теперь будет выглядеть так:

Public con As New System.Data.SqlClient.SqlConnection("Integrated Security=SSPI;Initial Catalog=TestDatabase;Data Source=TestServer")

или:

Public con As New System.Data.SqlClient.SqlConnection("Integrated Security=SSPI;Initial Catalog=TestDatabase;Data Source=10.1.1.10")

Отказ от ответственности: Данное сообщение предоставляется "КАК ЕСТЬ" без каких-либо гарантий и не предоставляет никаких прав.

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

Отправить комментарий