서버 A에 하나의 데이터베이스가 있습니다. 서버 A는 SQL 문을 호출하는 프로그램 코드도 호스트합니다.다른 서버 및 자격 증명에서 SQL 삽입 -
우리는 다른 데이터베이스 VMIntranetTest
가 서버 A와 서버 B가 서로 다른 로그온 사용자 자격 증명이 VMC-MMS
서버 B에 존재합니다. 서버 A와 서버 B는 모두 내부 네트워크에 존재합니다.
PHP를 사용하여 다음 SQL 문을 정의했습니다. 내 연결 문자열이 서버 A.
INSERT INTO -> VMC-MMS.VMIntranetTest.dbo.TestTable <-
에 연결하는 사용자 자격 증명을해야합니다 문을 실행하는 데 사용되는 다른 server.database.dbo 그래서
$strSql = 'INSERT INTO VMC-MMS.VMIntranetTest.dbo.TestTable (FirstName, LastName, Age) ' .
'SELECT FNAME, LNAME, AGE ' .
'FROM BSLIB.SQLTSTF ';
FROM -> BSLIB.SQLTSTF <-
성명의 INSERT INTO 부분에 사용할 사용자 자격 증명을 어떻게 지정합니까? 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 문 "선택"부분, OPENROWSET을 사용하여 서버 A "192.168.1.2"에 대한 연결을 엽니 다.
그러나, 나는이 오류 메시지가 점점 오전 : 나는() 안은 절을 전체 OPENROWSET 부분을 넣어하는 데 필요한 2
SQLSTATE[HY000]: General error: 1 near "OPENROWSET": syntax error
편집. 지금은 메시지를 받고 있어요 :
SQLSTATE[HY000]: General error: 1 no such table: 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]: General error: 1 near "(": syntax error
같은 DB 호출에서이 쿼리를 함께 사용하는 이유는 무엇입니까? 그들은 서로 의존하지 않습니다. – Limey