Web design and hosting, database, cloud and social media solutions that deliver real business results
  • Geschäftslösungen
    • Software
    • Datenbank-Beratungsdienste
      • Werkzeuge
    • Website Design
      • Website Sicherheit
    • Cloud Services
      • Microsoft Azure
    • Microsoft Office
    • Sozialen Medien
  • Akademie
    • Unsere Testumgebung
    • Datenbankdesign lernen
      • Verwenden von SQL Server Daten
      • SQL Server 2008 Wartungsplan
      • Offene Abfrage abrufen
      • Verwenden von SQL Server Datum
      • Verwenden von SQL Server Funktionen
      • Verwenden von SQL Server Pivot-Unpivot
    • Lern Web Design
      • ASP-NET
      • CSS
    • Lernen von IT-Diensten
      • Anfordern von SSL und Generierung von PFX-Datei in OpenSSL Simple Steps
  • Über
    • Mannschaft
      • Chester Copperpot
    • Mappe
EN - EnglishFR - Français

Offene Abfrage in MS SQL Server automatisieren

Mit dieser Tabelle und den gespeicherten Prozeduren können Sie die Übertragung von Daten aus Oracle- und Progress-Datenbanken in SQL Server automatisieren.

Erstellen der Get Open-Abfragemodule

Wir gehen davon aus, dass Sie über das Wissen und die Berechtigung zum Erstellen von Tabellen, Stored Procedures, Linked Server-Objekten und Jobs verfügen. Andernfalls kann es zu Problemen kommen, bei denen wir Ihnen nicht weiterhelfen können.

Wenn wir dies ausführen, neigen wir dazu, es in einer Datenbank des Typs Dienstprogramme abzulegen, in der wir gemeinsame Funktionen und Wartungsobjekte speichern.

Die erste Aufgabe, die wir haben, besteht darin, eine Mastertabelle zu erstellen, um den gesamten Datenfluss zu verwalten, einige der Spalten, auf die Sie achten müssen, enthalten;

  • GetOpenQueryStream - Dies ist ein ganzzahliges Feld, mit dem Sie Tabellensätze im Stapel verarbeiten können, und wird in der in der Spalte GetOpenQueryOrder festgelegten Reihenfolge ausgeführt
  • GetOpenQueryName - Dies sollte entweder GetOpenQuery_Progress oder GetOpenQuery_Oracle sein, es sei denn, Sie haben den Code angepasst.
  • GetOpenQueryLinkServ - ist der Name des Verbindungsservers, der in Serverobjekten eingerichtet werden muss
  • GetOpenQuerySourceSchema - Ist das Quelldatenbankschema
  • GetOpenQueryDatabase, GetOpenQuerySchema, GetOpenQueryTable bilden den dreiteiligen Bezeichner dafür, wohin die Daten kopiert werden sollen.
  • Sie können WHERE-, INNER- und TOP-Anweisungen hinzufügen
  • GetOpenQuerySkipCols - dies entfernt die Spalten beim Importieren aus der Tabelle.

Create Table

CREATE TABLE dbo.GetOpenQuery(
GetOpenQueryID int IDENTITY(1,1) NOT NULL,GetOpenQueryStream int NULL,GetOpenQueryName nvarchar(100) NULL,GetOpenQueryLinkServ nvarchar(100) NULL,GetOpenQueryDatabase nvarchar(100) NULL,GetOpenQuerySchema nvarchar(max) NULL,GetOpenQueryTable nvarchar(100) NULL,GetOpenQueryWHERE nvarchar(1000) NULL,GetOpenQueryTOP nvarchar(100) NULL,GetOpenQuerySourceSchema nvarchar(100) NULL,GetOpenQuerySkipCols nvarchar(max) NULL,GetOpenQueryINNER nvarchar(max) NULL,GetOpenQuerySkipTruncate bit NULL DEFAULT ((0)),GetOpenQueryOrder bit NULL DEFAULT ((0)))

Ein Hub

Jobs können dann angehängt werden, um eine Stream-ID zu übergeben und die relevanten Tabellen über diese gespeicherte Prozedur zu durchlaufen. Dadurch wird die obige Tabelle durchlaufen und der relevante Code für Oracle- oder Progress-Verbindungsserver ausgelöst.

Dieser wird dann zum Hub, über den alle anderen Jobs aufgerufen werden können.

Create Stored Procedure

CREATE PROC [dbo].[GetOpenQuery_Data](@Stream INT) AS BEGINDECLARE @GetOpenQueryName NVARCHAR(100),@GetOpenQueryLinkServ NVARCHAR(100),@GetOpenQueryDatabase NVARCHAR(100),@GetOpenQuerySchema NVARCHAR(MAX),@GetOpenQueryTable NVARCHAR(100),@GetOpenQueryWHERE NVARCHAR(1000),@GetOpenQueryTOP NVARCHAR(100),@SrcScheme NVARCHAR(100),@SkipCols NVARCHAR(MAX),@GetOpenQueryINNER NVARCHAR(MAX),@GetOpenQuerySkipTruncate BIT DECLARE @SQL NVARCHAR(MAX),@SQLRows BIGINT,@SQLRowCount BIGINT,@SQLOutPut NVARCHAR(100)='@SQLRows BIGINT' DECLARE C CURSOR FAST_FORWARD FORSELECTGetOpenQueryName, GetOpenQueryLinkServ, GetOpenQueryDatabase, GetOpenQuerySchema, GetOpenQueryTable,GetOpenQueryWHERE, GetOpenQueryTOP, GetOpenQuerySourceSchema, GetOpenQuerySkipCols, GetOpenQueryINNER, GetOpenQuerySkipTruncateFROM GetOpenQueryWHERE GetOpenQueryStream=@StreamORDER BY GetOpenQueryOrderOPEN CFETCH NEXT FROM CINTO @GetOpenQueryName,@GetOpenQueryLinkServ,@GetOpenQueryDatabase,@GetOpenQuerySchema,@GetOpenQueryTable,@GetOpenQueryWHERE,@GetOpenQueryTOP,@SrcScheme,@SkipCols,@GetOpenQueryINNER,@GetOpenQuerySkipTruncateWHILE @@FETCH_STATUS = 0 BEGIN       BEGIN TRY       SET @SQL='EXEC '+@GetOpenQueryName+' '''+       @GetOpenQueryLinkServ+''','''+       @GetOpenQueryDatabase+''','''+       @GetOpenQuerySchema+''','''+       @GetOpenQueryTable+''','+       ISNULL(NULLIF(''''+@GetOpenQueryWHERE+'''',''),'NULL')+','+       ISNULL(NULLIF(@GetOpenQueryTOP,''),'NULL')+','+       ISNULL(NULLIF(@SrcScheme,''),'NULL')+','+       ISNULL(NULLIF(''''+@SkipCols+'''',''),'NULL')+','+       ISNULL(NULLIF(''''+@GetOpenQueryINNER+'''',''),'NULL')+','+(CASE WHEN @GetOpenQuerySkipTruncate=1 THEN '1' ELSE '0' END)       EXEC sp_executesql @SQL       SET @SQLRows=@@ROWCOUNT       SELECT @SQLRows       END TRY       BEGIN CATCH        PRINT @GetOpenQueryLinkServ+'; Table '+@GetOpenQueryTable+' Failed'       END CATCH       PRINT @SQL       FETCH NEXT FROM C       INTO @GetOpenQueryName,@GetOpenQueryLinkServ,@GetOpenQueryDatabase,@GetOpenQuerySchema,@GetOpenQueryTable,       @GetOpenQueryWHERE,@GetOpenQueryTOP,@SrcScheme,@SkipCols,@GetOpenQueryINNER,@GetOpenQuerySkipTruncateEND CLOSE C;DEALLOCATE C;ENDGO

How to call the jobs

Now that these steps have been created, we can plumb in the remaining SPROC's to handle both Oracle and Progress.

To fire off Stream 1, create an SQL Agent Job with the following code;

EXEC Utilities.dbo.GetOpenQuery_Data 1

Please note, this commenting system is still in final testing.

Author

Gavin Clayton
Gavin Clayton
Ich habe Claytabase im Jahr 2010 als eine Möglichkeit, meine Arbeit mit SQL Server und ASP.NET zu tragen. Dies hat in der Ousia Content Management System kulminiert, die vom Konzept zu einem der schnellsten CMS auf dem Markt genommen wird.
 Google Translate
Google Translate
RSS Login ContactCookie-RichtlinieSeitenverzeichnis
facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd
+442392064871info@claytabase.co.ukGround Floor, Building 1000, Lakeside North Harbour, Western Road, Portsmouth, Hampshire, United Kingdom, PO6 3EZ
Partners
Die Einstellungen auf dieser Seite sind so eingestellt, dass alle Cookies zulässig sind. Diese können auf unserer Cookie Policy & Settings Seite geändert werden. Wenn Sie diese Seite weiter nutzen, stimmen Sie der Verwendung von Cookies zu.
Ousia Logo
Ousia CMS Loader