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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laden Sie die SQLServer2005_BC.msi aus
http://www.microsoft.com/en-us/download/details.aspx?id=24793
dann installieren DMO, funktioniert auch mit 2008/R2!
Sind Sie sich bewusst, dass DMO wurde ersetzt mit SMO? Microsoft hat keine Pläne, einzustellen, dass ich bewusst bin.
Ich würde vorschlagen, Sie versuchen, SQL CRL Gespeicherten Prozedur. Sehen http://www.sqlteam.com/article/writing-clr-stored-procedures-in-charp-introduction-to-charp-part-1