生成sql server 数据库 脚本的 存储过程和调用

USE [db_datadown]
GO

/****** Object:  StoredProcedure [dbo].[GetTBScript]    Script Date: 03/05/2015 09:57:47 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE PROC [dbo].[GetTBScript](
    @DBName VARCHAR(20),--表所在的数据库名
    @TBname VARCHAR(255),--要生成脚本的表名
    @Sa VARCHAR(20),--用户名
    @pwd VARCHAR(255),--密码
    @servername VARCHAR(255),--服务器名称
    @str VARCHAR(4000) output)
AS 
DECLARE @obj INT,@r INT,@objD INT ,@objT INT 
DECLARE @Result INT 
DECLARE @L VARCHAR(100)
SET @Result=0
exec @r=sp_OaCreate 'SQLDMO.SQLServer',@obj OUT
IF @r=0
BEGIN
    EXEC @r=sp_OAMethod @obj,'Connect',NULL,@servername,@Sa,@pwd
    IF @r=0
    BEGIN
        SET @L='Databases("'+@DBName+'")'
        EXEC @r = sp_OAGetProperty @obj,@L,@objd OUTPUT
        IF @r=0
        BEGIN
            SET @L='Tables("'+@TBname+'")'
            EXEC @r=sp_OAgetProperty @objD,@L,@objT OUT       
            IF @r=0
            BEGIN
                EXEC @r=sp_OaMethod @objT,'Script',@str output,5
                IF @r=0
                BEGIN
                    set @Result=1
                END               
            END
        END   
    END
END
 
print @str
 
RETURN @Result;


GO

调用 代码

USE [db_datadown]
GO

DECLARE    @return_value int,
        @str varchar(4000)

EXEC    @return_value = [dbo].[GetTBScript]
        @DBName = N'FinChinaData',
        @TBname = N'AssetAL',
        @Sa = N'sa',
        @pwd = N'zzdskj',
        @servername = N'.',
        @str = @str OUTPUT

SELECT    @str as N'@str'

SELECT    'Return Value' = @return_value

GO

如果出现错误 请查看

SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configur

 

posted @ 2015-03-04 10:02  史红星-shihongxing  阅读(584)  评论(0编辑  收藏  举报