科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道利用SQL Server系统函数进行代码存档(2)

利用SQL Server系统函数进行代码存档(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

作为一名数据库管理员,在进行代码迁移之前,我总是尽力给提交于开发环境的代码一个完整的面貌。

作者:builder.com.cn 来源:builder.com.cn 2007年9月3日

关键字: SQL Server SQL Server 各版本 存档 数据库

  • 评论
  • 分享微博
  • 分享邮件

在这个例子中,我们实际上用了两个系统函数。首先,我们要得到前面创建的udf_Multiply函数的OBJECT_ID,在SQL Server 数据库引擎中,OBJECT_ID是一个对象的系统标识符。然后我们将这个ID传给系统函数OBJECT_DEFINITION,这一系统函数将返回提供给它的ID对象的代码,即返回值是我们以前为udf_Multiply 函数写的TSQL代码。

既然我们对OBJECT_DEFINITION函数的工作原理有了很好的了解,接下来让我们看看如何利用这个函数来存档我们数据库中的过程代码。首先,运行下面的脚本程序在测试数据库中创建20个存储过程。

DECLARE @i INT
SET @i = 1

WHILE @i <= 20
BEGIN      EXECUTE      
(      'IF OBJECT_ID(''usp_TestProcedure'+@i + ''')>0            
DROP PROCEDURE usp_TestProcedure'+@i+'      '      )      
EXECUTE      (      '      
CREATE PROCEDURE usp_TestProcedure' + @i + '      
AS      
BEGIN                       
PRINT ''The name of this procedure is '' 
+ CAST(OBJECT_NAME(@@PROCID) 
AS VARCHAR(20))       END'      )      
SET @i = @i + 1
END

你将看到在上面的脚本中,我们使用了动态SQL语句。当创建动态SQl语句时,我习惯用系统存储过程sp_executesql,因为该过程能够很好地在系统中缓存SQL语句。但是,在我们这一例子中,EXECUTE命令就能很好地完成任务。

现在我们的数据库中已经有了一些对象,我们可以创建用来存档数据库中存储过程需要的对象和代码。下面的脚本可以为我们完成这项工作。

IF OBJECT_ID('CodeArchive','U')>0      
DROP TABLE CodeArchive

CREATE TABLE CodeArchive
(      ArchiveID INT IDENTITY(1,1) PRIMARY KEY,      
ObjectName SYSNAME,      
ObjectDescription VARCHAR(60),      
ObjectType CHAR(2),      
ObjectDefinition VARCHAR(MAX),      
ObjectID INT,      
CreationDate DATETIME,      
ModifiedDate DATETIME,      
EntryDate DATETIME DEFAULT(GETDATE())
)

INSERT INTO CodeArchive
(      ObjectName, ObjectDescription, 
ObjectType, ObjectDefinition,     
 ObjectID, CreationDate, ModifiedDate
)
SELECT       so.name, so.type_desc, so.type, 
OBJECT_DEFINITION(object_id),       
so.object_id, so.create_date, so.modify_date    
FROM      sys.objects so
WHERE      
so.[type] IN('C', 'D', 'P', 'FN', 'R', 'RF', 'TR', 'IF', 'TF', 'V')
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章