Hallo<BR><BR>In der Hilfe ist folgendes zu lesen:<BR><B>SQL Server unterstützt die Verwendung externer Datenquellen nicht auf dieselbe Weise wie eine BFILE-Spalte von Oracle. Auf externe Datenquellen kann durch SQL Server zugegriffen werden.</B><BR>Meine Frage ist nun - WIE?!<BR><BR>Kann mir jemand helfen? Vielen Dank schon jetzt!<BR><BR>Reza
Announcement
Collapse
No announcement yet.
Zugriff und Verwaltung externer Daten auf SQL-Server 7.0
Collapse
X
-
Hallo,
über SELECT FROM OPENROWSET kann der Microsoft SQL Server die Daten auch direkt aus fremden Datenbanken lesen, wobei alle die Datenbankformate unterstützt wer-den, für die ein ODBC-Treiber vorrätig ist. Das folgende Beispiel demonstriert dies mit einer Excel-Tabelle, wobei auf die Seite <i>Personal</i> zugegriffen wird:
<pre>
SELECT CAST(PersNo AS INT) AS PersNo, Nachname, Vorname
FROM OPENROWSET('MSDASQL',
'Driver=Microsoft Excel-Treiber (*.xls);DBQ=C:\EXCEL2002.xls',
'SELECT * FROM [Personal$]')
</pre>
Wenn die Daten aus der fremden Datenbank (wie zum Beispiel der Excel-Tabelle) in eine SQL Server 2000-Datenbank importiert werden sollen, kann man die SELECT INTO- und OPENROWSET-Fähigkeiten kombinieren, wie der folgende Stapel von T-SQL-Anweisungen demonstriert. Die Daten der Seite Personal aus der Excel-Tabelle Excel2002.xls werden in die neue Tabelle ExcelImport kopiert, wobei diese Tabelle in der Datenbank tempdb angelegt wird:
<pre>
USE tempdb
GO
SELECT CAST(PersNo AS INT) AS PersNo, Nachname, Vorname INTO ExcelImport
FROM OPENROWSET('MSDASQL',
'Driver=Microsoft Excel-Treiber (*.xls);DBQ=C:\EXCEL2002.xls',
'SELECT * FROM [Personal$]')
GO
SELECT * FROM ExcelImport
</pre>
OPENROWSET ist nur eine Option, in der Hilfe zum MS SQL Server werden die anderen Wege ebenfalls ausführlich beschrieben
-
Hallo Herr Kosch,<BR><BR>vielen Dank für Ihre Antwort. Na ja, vielleicht habe ich mich nicht deutlich genug ausgedrückt. Es geht mir nicht um fremde Datenbanken oder Tabellen, sondern um die Verwaltung von binären Daten, also z.B. Worddateien, Bilder usw. die ich irgendwie laden, ablegen, verändern und wieder ausgeben möchte.<BR>Ich möchte diesen Weg über den SQL-Server gehen, da ich hier die Sicherheitsmechanismen des Servers nutzen kann. Aber wie bekomme ich nun eine binäre Information in eine Tabelle? Muss ich das über eine andere Plattform (z.B. Delphi) erledigen, oder hat der SQL-Server auch eine eigene Funktionalität in dieser Richtung? Ich habe leider nichts dergleichen gefunden!<BR><BR>Vielen Dank für Ihre Mühe<BR><BR>R. Wahed
Comment
-
Hallo,
der normale Weg besteht im Zugriff über die ADO-Objekte, die beliebig grosse BLOb-Daten in eine MS SQL Server-Datenbank ablegen können. Wenn keine eigene Zeile programmiert werden soll, hilft das Tool <b>TextCopy.exe</b> weiter. Da eine Stored Procedure auch externe Tools aufrufen darf, wäre zum Beispiel folgendes innerhalb einer Stored Procedure vorstellbar, wobei die SP die einzusetzenden Parameter mit auf den Weg bekommt:
<pre>
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'textcopy /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W "' + @whereclause +
'" /F ' + @filename +
' /' + @direction
EXEC master..xp_cmdshell @exec_str
</pre>
Comment
Comment