SQL Server 2008 alternative für SQL-DMO

Ich war zuvor mithilfe von SQL-DMO zum automatischen generieren von Skripts aus der Datenbank.
Nun habe ich ein Upgrade auf SQL Server 2008 und ich will nicht, um dieses feature zu verwenden mehr, seit Microsoft sein wird, fallen diese Funktion abgeschaltet.

Gibt es irgendeine andere alternative, die ich verwenden können, um die Verbindung zu einem server herstellen und generieren von Skripts automatisch aus einer Datenbank?

Jede Antwort ist willkommen. Vielen Dank im Voraus.

Dies ist die Prozedur, die ich zuvor verwendet wurde:

CREATE PROC GenerateSP (
 @server varchar(30) = null,
 @uname varchar(30) = null,
 @pwd varchar(30) = null,
 @dbname varchar(30) = null, 
 @filename varchar(200) = 'c:\script.sql'
)
AS

DECLARE @object int
DECLARE @hr int
DECLARE @return varchar(200)
DECLARE @exec_str varchar(2000)
DECLARE @spname sysname

SET NOCOUNT ON

-- Sets the server to the local server
IF @server is NULL
 SELECT @server = @@servername

-- Sets the database to the current database
IF @dbname is NULL
 SELECT @dbname = db_name()

-- Sets the username to the current user name
IF @uname is NULL
 SELECT @uname = SYSTEM_USER

-- Create an object that points to the SQL Server
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT
IF @hr <> 0
BEGIN
 PRINT 'error create SQLOLE.SQLServer'
 RETURN
END

-- Connect to the SQL Server
IF @pwd is NULL
 BEGIN
  EXEC @hr = sp_OAMethod @object, 'Connect', NULL, @server, @uname
  IF @hr <> 0
   BEGIN
    PRINT 'error Connect'
    RETURN
   END
 END
ELSE
 BEGIN
  EXEC @hr = sp_OAMethod @object, 'Connect', NULL, @server, @uname, @pwd
  IF @hr <> 0
   BEGIN
    PRINT 'error Connect'
    RETURN
   END
 END

--Verify the connection
EXEC @hr = sp_OAMethod @object, 'VerifyConnection', @return OUT
IF @hr <> 0
BEGIN
 PRINT 'error VerifyConnection'
 RETURN
END

SET @exec_str = 'DECLARE script_cursor CURSOR FOR SELECT name FROM ' + @dbname + '..sysobjects WHERE type = ''P'' ORDER BY Name'
EXEC (@exec_str)

OPEN script_cursor
FETCH NEXT FROM script_cursor INTO @spname
WHILE (@@fetch_status <> -1)
BEGIN
 SET @exec_str = 'Databases("'+ @dbname +'").StoredProcedures("'+RTRIM(UPPER(@spname))+'").Script(74077,"'+ @filename +'")'
 EXEC @hr = sp_OAMethod @object, @exec_str, @return OUT
 IF @hr <> 0
  BEGIN
   PRINT 'error Script'
   RETURN   
  END
 FETCH NEXT FROM script_cursor INTO @spname
END
CLOSE script_cursor
DEALLOCATE script_cursor

-- Destroy the object
EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
 PRINT 'error destroy object'
 RETURN
END
GO
  • Was genau wollen Sie erreichen mit der stored proc? Skript aus all stored procs? Dies tut werden müssen, um eine gespeicherte Prozedur, oder Sie können verwenden Sie eine interaktive Funktionalität in SQL Server Mgmt Studio (Aufgaben > Generieren von Skripts für die Datenbank)
  • ja, es muss sich dabei um e gespeicherten Prozedur
  • Verwechseln Sie nicht die Frage mit dem Beispiel. Die Frage ist, was ist der Ersatz für DMO. ich bin mit DMO-COM-Objekte von VB-Script. Die Frage ist die gleiche, aber ein anderes Beispiel.
InformationsquelleAutor user345929 | 2010-05-20
Schreibe einen Kommentar