web-dev-qa-db-ja.com

SQL認証を使用したOPENDATASOURCEコマンドの使用例

ドメインに属していない数百のサーバーでアドホッククエリを実行する必要があります。各サーバーには、関心のあるいくつかのテーブルへの読み取り専用アクセス権を持つ、特権の低いSQLユーザーアカウントがあります。

私の考えは、これらのサーバーの名前をテーブルに格納し、そのテーブルを使用してOPENDATASOURCEまたはOPENROWSETコマンドを実行することでした。

サーバーは異なるドメイン、信頼されていないドメイン、ワークグループなどにあります。大きな混乱です。

SQL Serverアカウントとパスワードの組み合わせを使用するようにこれらのコマンドを構成する方法の例を見つけることができません。

注:これはサンドボックスで発生しますが、現実の世界では使用できません。これは単なる概念実証であるため、セキュリティは大きな問題ではありません。これらのサーバーは、ネットワークの実際の成長をシミュレートするプロセスによってクランクアウトされます。

記録として、OPENROWSETを機能させることができました。

SELECT *
FROM OPENROWSET('SQLNCLI',
   'DRIVER={SQL Server};SERVER=MyServer;UID=MyUserID;PWD=MyCleverPassword',
   'select @@ServerName')         
3
datagod

SQLログインで実行するには、接続文字列でユーザーIDとパスワードを指定するだけです(BOLでは "init string"と呼ばれます )。

SELECT
    * FROM
OPENDATASOURCE (
   'SQLNCLI', -- or SQLNCLI
   'Data Source=OtherServer\InstanceName;Catalog=RemoteDB;User ID=SQLLogin;Password=Secret;').RemoteDB.dbo.SomeTable
5
gbn