SQL-insert into - aus verschiedenen server-und Anmeldeinformationen
Wir haben eine Datenbank vorhandene auf server A. Server A hostet auch unser Programm-code, die werden den Aufruf der SQL-Anweisung.
Haben wir eine weitere Datenbank VMIntranetTest
bestehenden auf server B VMC-MMS
Server A und server B haben unterschiedliche logon-Benutzer-Anmeldeinformationen. Server A und server B vorhanden ist, die auf unserem internen Netzwerk.
Verwendung von PHP, ich habe den folgenden SQL-Anweisung definiert.
$strSql = 'INSERT INTO VMC-MMS.VMIntranetTest.dbo.TestTable (FirstName, LastName, Age) ' .
'SELECT FNAME, LNAME, AGE ' .
'FROM BSLIB.SQLTSTF ';
FROM -> BSLIB.SQLTSTF <-
ist auf unserem lokalen server (), so dass mein connection string verwendet, um die Anweisung ausgeführt wird, wird die Benutzer-Anmeldeinformationen für die Verbindung zu server A.
INSERT INTO -> VMC-MMS.VMIntranetTest.dbo.TestTable <-
ist die verschiedenen server.Datenbank.dbo.Tabelle (Server B).
Wie kann ich geben Sie die Benutzer-Anmeldeinformationen verwendet werden, für die INSERT INTO-Teil der Anweisung? Der sekundäre Teil mit der SELECT-FROM-Anweisung sollte schon abgedeckt werden, die durch mein initial connection string.
Danke,
Bearbeiten 1 in Bezug auf Paul ' s Antwort.
Ich habe versucht, verwenden Sie die OPENROWSET
wie bereits erwähnt, und haben die folgende SQL-Anweisung.
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
Wie Sie sehen können, ich änderte die Dinge ein wenig herum. Mein connection string durch den code öffnet eine Verbindung zu Server B "VMC-MMS". Meine SQL-Anweisung "select" - Teil, wird der OPENROWSET-zum öffnen einer Verbindung zum Server Eine "192.168.1.2".
Bin ich aber immer diese Fehlermeldung:
SQLSTATE[HY000]: General error: 1 in der Nähe von "OPENROWSET": syntax error
Edit 2 ich nötig, um die gesamte OPENROWSET Teil innen a-WERTE ( ) - Klausel. Jetzt bin ich immer die Meldung:
SQLSTATE[HY000]: General error: 1 no Tabelle: VMIntranetTest.TestTable
Edit 3
Habe ich nun die folgende 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
Und bin immer diese Fehlermeldung:
SQLSTATE[HY000]: General error: 1 near "(": syntax error
- Warum bringen Sie diese Abfragen zusammen in der gleichen DB nennen? Sie sind nicht voneinander abhängig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nur die
SELECT
Aussage dort. Versuchen Sie dies:BEARBEITEN: Probieren Sie die Abfrage nun. Sie hatte die angegebene Tabelle aus der Datenbank ohne Angabe des Schemas. Wenn Sie über die entsprechenden Berechtigungen, die Abfrage funktioniert jetzt. Andernfalls werden Sie brauchen, um wählen Sie ein schema aus. Sorry für die nicht den Fang, die!
Könnten Sie
OPENROWSET
wählen Daten aus verschiedenen Datenbank -http://msdn.microsoft.com/en-us/library/ms190312.aspx
select from
rowset