Рабочий пример команды OpenDataSource с использованием аутентификации SQL

dba.stackexchange https://dba.stackexchange.com/questions/8558

Вопрос

Мне нужно запустить некоторые специальные запросы на нескольких сотнях серверов, которые не являются частью домена. У каждого сервера есть низкоприютная учетная запись пользователя SQL, которая имеет доступ только для чтения к нескольким интересующим таблицам.

Моя идея состояла в том, чтобы имена этих серверов хранились в таблице, и использовать эту таблицу, чтобы управлять командой OpenDataSource или OpenRowset.

Серверы либо находятся в разных областях, без привлечения доменов, рабочих групп и т. Д. Большой беспорядок.

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

Примечание: это происходит в песочнице, это не предназначено для реального мира. Это просто доказательство концепции, поэтому безопасность не является серьезной проблемой. Эти серверы определяются процессом, который моделирует реальное рост сети.

Для протокола, я смог получить OpenRowset для работы:

SELECT *
FROM OPENROWSET('SQLNCLI',
   'DRIVER={SQL Server};SERVER=MyServer;UID=MyUserID;PWD=MyCleverPassword',
   'select @@ServerName')         
Это было полезно?

Решение

Чтобы запустить его с помощью входа в SQL, просто необходимо указать идентификатор пользователя и пароль в строке подключения (вызывается "init string" в bol)

SELECT
    * FROM
OPENDATASOURCE (
   'SQLNCLI', -- or SQLNCLI
   'Data Source=OtherServer\InstanceName;Catalog=RemoteDB;User ID=SQLLogin;Password=Secret;').RemoteDB.dbo.SomeTable
Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top