簡體   English   中英

SQL插入-來自不同的服務器和憑據

[英]SQL insert into - from different server and credentials

我們在服務器A上存在一個數據庫。服務器A還托管我們的程序代碼,該程序代碼將調用SQL語句。

我們在服務器B VMC-MMS上存在另一個數據庫VMIntranetTest

服務器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)。

如何指定用於語句的INSERT INTO部分的用戶憑據? 包含SELECT FROM語句的第二部分應該已經包含在我的初始連接字符串中。

謝謝,

關於保羅的答案, 編輯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語句“選擇”部分使用OPENROWSET打開到服務器A“ 192.168.1.2”的連接。

但是,我收到此錯誤消息:

SQLSTATE [HY000]:常規錯誤:“ OPENROWSET”附近為1:語法錯誤

編輯2我需要將整個OPENROWSET部分放在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:語法錯誤

您只需要其中的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

編輯:現在嘗試查詢。 您已從數據庫中指定了表,但未指定架構。 如果您具有適當的權限,上面的查詢現在將起作用。 否則,您將需要指定架構。 對不起,沒發現!

您可以使用OPENROWSET從其他數據庫中選擇數據

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM