繁体   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