Auparavant, j'utilisais SQL-DMO pour générer automatiquement des scripts à partir de la base de données. Maintenant, j'ai mis à niveau vers SQL Server 2008 et je ne veux plus utiliser cette fonctionnalité puisque Microsoft supprimera cette fonctionnalité.SQL Server 2008 alternative pour SQL-DMO
Existe-t-il une autre alternative que je peux utiliser pour me connecter à un serveur et générer des scripts automatiquement à partir d'une base de données?
Toute réponse est la bienvenue. Merci d'avance.
Ceci est la procédure que j'utilisais précédemment:
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
Qu'essayez-vous exactement d'accomplir avec le proc stocké? Script sur tous les procs stockés? Est-ce que cela doit être un proc stocké, ou pouvez-vous utiliser une fonctionnalité interactive dans SQL Server Mgmt Studio (Tâches> Générer des scripts pour la base de données) –
oui il doit être e procédure stockée – user345929
@marc_s Ne confondez pas la question avec l'exemple. La question est de savoir quel est le remplacement de DMO. J'utilise des objets COM DMO de VB Script. La question est la même. mais un exemple différent. –