您的位置:首页 > 数据库

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

2015-03-04 10:02 465 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: