Может ли один экземпляр SQL Server иметь несколько имен?

Это почти все в названии. Я ожидаю, что ответ будет отрицательным, но хотел спросить, чтобы убедиться. По сути, может ли один экземпляр SQL Server именоваться несколькими именами. Я знаю, что вы можете настроить DNS для разрешения нескольких имен на одном IP/ сервере, но как это повлияет на подключение к SQL Server?

5 ответов

Решение

SQL Server не обращает внимания на имя DNS, к которому вы подключаетесь, если только вы не используете SQL Server по SSL. Невозможно воспроизвести имя экземпляра, если вы не подключаетесь к определенному номеру порта TCP.

Часть SERVER/ SERVANCE / INSTANCE может быть любым именем, которое преобразуется в правильный адрес, либо дополнительной записью A, либо CNAME, либо именем из файла HOSTS.
Единственное предостережение здесь заключается в том, что поддельное имя может нарушить аутентификацию Kerberos. SQL с Kerberos - забавный зверь, клиент SQL выполняет обратный поиск DNS по адресу, а затем использует имя, которое он получает, для создания SPN, поэтому он должен работать, пока обратный поиск получает исходное имя хоста сервера. Кроме того, SQL вернется к NTLM, поэтому это вызовет проблему только в том случае, если вам по какой-то причине требуется Kerberos, например, вы используете делегирование.
Вы не можете заставить SQL отвечать более чем на одно имя INSTANCE. Однако вы можете определить псевдоним в конфигурации КЛИЕНТА.

Когда вы подключаетесь к SQL Server, указанное вами имя экземпляра отправляется в службу браузера SQL на сервере, служба браузера отвечает с портом TCP, который прослушивает запрошенный экземпляр. Этот номер порта можно указать либо в строке подключения, либо в псевдониме. Я только что создал псевдоним NEW, который указывает на порт mysqlserver 1966, на котором прослушивается именованный экземпляр. Затем я смог подключиться к названному экземпляру, просто указав имя сервера NEW.
У этого метода есть два недостатка. Во-первых, конфигурация необходима для каждого клиента, я не знаю, есть ли способ использовать эту конфигурацию. Во-вторых, экземпляр SQL обычно использует динамический порт. Если вы хотите определить псевдонимы, вам нужно изменить сервер так, чтобы он прослушивал фиксированный номер порта, который затем можно настроить для подключения клиентов.

Мне проще создавать псевдонимы в диспетчере конфигурации SQL Server, которые указывают на один и тот же sql-сервер.

Ну, Тим, по моему опыту, вы можете дать серверу много DNS-записей, и вы не должны сталкиваться с проблемой при достижении экземпляра SQL по умолчанию (или любого другого экземпляра) на сервере.

Сами экземпляры различаются на сервере с помощью службы браузера SQL, которая должна работать, чтобы можно было увидеть именованные экземпляры. Если нет, то обычно (99 раз из 100) единственным экземпляром, который можно увидеть, когда эта служба не запущена, является экземпляр по умолчанию.

Я надеюсь, что помог вам в чем-то:)

Я запустил простой тест, добавив запись в мой файл HOSTS, и казалось, что SQL Server не волнует имя, используемое в строке подключения. Я всегда думал, что эта часть имеет значение, но, похоже, это не так.

В этом случае я не подключаюсь к именованному экземпляру, просто к экземпляру по умолчанию. Я бы предположил, что пока серверная часть SERVER\INSTANCE совпадения, вы также можете сделать это с именованным экземпляром. У меня нет именованных экземпляров для тестирования.

Другие вопросы по тегам