0

サーバーAに1つのデータベースが存在します。サーバーAは、SQLステートメントを呼び出すプログラムコードもホストします。

VMIntranetTestサーバーBに別のデータベースが存在しますVMC-MMS

サーバーAとサーバーBのログオンユーザー資格は異なります。サーバーAとサーバーBはどちらも内部ネットワーク上に存在します。

PHPを使用して、次のSQLステートメントを定義しました。

$strSql = 'INSERT INTO VMC-MMS.VMIntranetTest.dbo.TestTable (FirstName, LastName, Age) ' .
                    'SELECT FNAME, LNAME, AGE ' .
                    'FROM BSLIB.SQLTSTF ';

FROM -> BSLIB.SQLTSTF <-はローカルサーバー(A)にあるため、ステートメントの実行に使用される接続文字列には、サーバーAに接続するためのユーザー資格情報が含まれます。

INSERT INTO -> VMC-MMS.VMIntranetTest.dbo.TestTable <-別のserver.database.dbo.table(サーバーB)です。

ステートメントのINSERTINTO部分に使用するユーザー資格情報を指定するにはどうすればよいですか?SELECT FROMステートメントを含む2番目の部分は、最初の接続文字列ですでにカバーされているはずです。

ありがとうございました、

ポールの答えに関して1を編集してください。

前述のようにを使用しようとしましたOPENROWSETが、次のSQLステートメントがあります。

INSERT INTO VMIntranetTest.TestTable (FirstName, LastName, Age)
OPENROWSET('vmas400',
           'Server=192.168.1.2;Trusted_Connection=yes;user_id=INTRAIS;password=****',
           'SELECT FNAME, LNAME, AGE FROM BSLIB.SQLTSTF' ) as a 

ご覧のとおり、少し変更しました。コードを介した接続文字列により、サーバーB「VMC-MMS」への接続が開きます。私のSQLステートメントの「select」部分は、OPENROWSETを使用してサーバーA「192.168.1.2」への接続を開きます。

ただし、次のエラーメッセージが表示されます。

SQLSTATE [HY000]:一般エラー:1「OPENROWSET」の近く:構文エラー

編集 2OPENROWSET部分全体をVALUES()句の中に入れる必要がありました。今、私はメッセージを受け取っています:

SQLSTATE [HY000]:一般的なエラー:1そのようなテーブルはありません:VMIntranetTest.TestTable

編集3

私は今、次のSQLを持っています

 INSERT INTO VMIntranetTest.TestTable (FirstName, LastName, Age)
 select a.FNAME, a.LNAME, a.AGE FROM 
 OPENROWSET('vmas400',
            'Server=192.168.1.2;Trusted_Connection=yes;user_id=INTRAIS;password=****',
            'SELECT FNAME, LNAME, AGE FROM BSLIB.SQLTSTF' ) as a

そして、このエラーが発生しています:

SQLSTATE [HY000]:一般的なエラー:1 "("の近く:構文エラー

4

2 に答える 2

4

SELECTそこにステートメントが必要です。これを試して:

INSERT INTO VMIntranetTest.dbo.TestTable (a.FirstName, a.LastName, a.Age)
SELECT a.FirstName, a.LastName, a.Age FROM
OPENROWSET('vmas400',
           'Server=192.168.1.2;Trusted_Connection=yes;user_id=INTRAIS;password=****',
           'SELECT FNAME, LNAME, AGE FROM BSLIB.dbo.SQLTSTF' ) as a

編集:今すぐクエリを試してください。スキーマを指定せずにデータベースからテーブルを指定しました。適切な権限がある場合、上記のクエリが機能するようになります。それ以外の場合は、スキーマを指定する必要があります。捕まえられなくてごめんなさい!

于 2012-05-29T15:15:47.910 に答える
1

OPENROWSET別のデータベースからデータを選択するために使用できます

http://msdn.microsoft.com/en-us/library/ms190312.aspx

于 2012-05-29T13:43:42.163 に答える