8 Stimmen

Wie man die Daten von verknüpften Servern mit Hilfe von Abfragen abruft

Ich habe eine linkedserver como ravikiran-vm das ist die virtuelle Maschine auf meinem Desktop.

Jetzt habe ich eine Datenbank namens kiran die eine employ Tisch.
Zum Abrufen employ Daten, tue ich Folgendes:

select * from ravikiran-vm.kiran.employ

aber es wird der Fehler "Falsche Syntax bei '-'" angezeigt.

Kann mir jemand helfen, bitte?

Vielen Dank im Voraus.

Danke Leute, mit eurer Unterstützung funktioniert es gut... Jetzt muss ich dies als einen neuen Job planen. Wenn ich ihn normal ausführe, zeigt er o/p. aber wenn ich cinfigure die gleiche Abfrage als Sqlserver Agent Job gibt es Fehler und Abfrage nicht ausgeführt... Plz helfen mir in diesem Zusammenhang

Vielen Dank im Voraus

16voto

Ich denke, Sie sollten den Namen des verknüpften Servers ändern, da das Zeichen - in SQL reserviert ist.

Sie könnten versuchen, den Namen in eckige Klammern zu setzen, aber das wäre langweilig

Außerdem sollten Sie den Namen des Schemas in die Abfrage aufnehmen oder den Standardnamen verwenden:

Sie können es also versuchen:

select * from [ravikiran-vm].kiran.dbo.employ
select * from [ravikiran-vm].kiran..employ

Oder wie auch immer Ihr Schema aussehen mag.

5voto

Santiago Cepas Punkte 3964

Sie müssen Folgendes verwenden OPENQUERY :

SELECT * FROM OPENQUERY([ravikiran-vm],'SELECT * FROM KIRAN..EMPLOY')

2voto

SQLMenace Punkte 128184

Um Daten vom verknüpften Server zu erhalten, verwenden Sie die 4-teilige Notation Server.Datenbank.Schema.Tabelle

da Sie ein ungültiges Zeichen in Ihrem Namen haben (-), müssen Sie Klammern um den Namen hinzufügen

select * from [ravikiran-vm].kiran..employ

Wahrscheinlich wollen Sie auch nicht alle Daten zurückbekommen

0voto

Muhammad Yaseen Punkte 571

In der Regel sollten direkte Abfragen im Falle eines verknüpften Servers nicht verwendet werden, da sie die temporäre Datenbank des SQL-Servers stark beanspruchen. Im ersten Schritt werden die Daten in der temporären Datenbank abgerufen, dann wird gefiltert. Es gibt viele Threads zu diesem Thema. Es ist besser, open zu verwenden OPENQUERY weil es SQL an den mit der Quelle verbundenen Server weitergibt und dann gefilterte Ergebnisse zurückgibt, z. B.

SELECT * FROM OPENQUERY(Linked_Server_Name , 'select * from Tabellenname where ID = 500')

0voto

Arun Prasad E S Punkte 8324
1- Link the server

EXEC sp_addlinkedserver 'OracleSvr', 
'Oracle 7.3', 
'MSDAORA', 
'ORCLDB'

2-SELECT
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM albert.titles')

3-UPDATE 
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM albert.titles WHERE id = 101') 

4-INSERT
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM albert.titles')
VALUES ('NewTitle');

5-DELETE
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM albert.titles WHERE name = ''NewTitle''')

Ich habe einfach von hier kopiert ( http://www.sqlservercentral.com/Forums/Topic916320-392-1.aspx )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X