Announcement

Collapse
No announcement yet.

Zugriff und Verwaltung externer Daten auf SQL-Server 7.0

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff und Verwaltung externer Daten auf SQL-Server 7.0

    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

  • #2
    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

    Comment


    • #3
      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


      • #4
        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&gt

        Comment


        • #5
          Hallo Herr Kosch,<BR><BR>
          erst eimal vielen Dank für Ihre Antwort. Das hat mir sehr weiter
          geholfen.<BR><BR>Reza Wahed

          Comment

          Working...
          X