zoukankan      html  css  js  c++  java
  • 如何实现项目脚本的批量生成

    需求:

      一个大的信息管理系统是由各个单独的子系统组成的,有某些时候,只需要一部份的模块。这样在发布数据库的时候,就存在有比较大的问题。

      只有两种方式:

          1。不管客户需不需要,把整个数据库给他。

          2。查找相应的表,存储过程,视图,函数。(如果没有记录,基本上是不可完成的工作,你愿意花大量的时间除外。)就算是你有记录,也得花不少时间。

    解决思路:

      在维护一个数据对象表的同时,能根据对象自动产生脚本应该是一个不错的方法。

    开始动手:

      首先需要引用Com对象,Microsoft SQLDMO Object Library,其实使用这个对象都可以开发出一个企业管理器出来。

      下面是SqlScriptHelper类的实现,比较简单


    ''' <summary>
    ''' 生成脚本的辅助类
    ''' </summary>
    ''' <remarks></remarks>
    Public Class SqlScriptHelper



    Dim s As New SQLDMO.SQLServer2

    ''' <summary>
    ''' 无参数类实例化
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub New()

    End Sub


    ''' <summary>
    ''' 使用数据库连接信息实例化
    ''' </summary>
    ''' <param name="server"></param>
    ''' <param name="user"></param>
    ''' <param name="pwd"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal server As String, ByVal user As String, ByVal pwd As String)
    s.Connect(server.Trim, user.Trim, pwd.Trim)
    End Sub
    ''' <summary>
    ''' 关闭数据链接
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Close()
    s.Close()
    End Sub

    ''' <summary>
    ''' 获取数据库对象脚本
    ''' </summary>
    ''' <param name="dbName">数据库名称</param>
    ''' <param name="objectName">对象名称</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function GetScript(ByVal dbName As String, ByVal objectName As String) As String
    Return Me.GetScript(dbName, objectName, True)
    End Function


    ''' <summary>
    ''' 获取数据库对象脚本
    ''' </summary>
    ''' <param name="dbName">数据库名称</param>
    ''' <param name="objectName">对象名称</param>
    ''' <param name="isDrop">是否生成移除对象的脚本</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function GetScript(ByVal dbName As String, ByVal objectName As String, ByVal isDrop As Boolean) As String

    Dim keeerp As SQLDMO.Database = CType(s.Databases.Item(dbName), SQLDMO.Database)

    Dim t = keeerp.GetObjectByName(objectName)

    If Not isDrop Then '对象存在则不更新脚本


    Dim str = t.Script(SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Triggers _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Indexes _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_All)

    Return str



    Else

    Return t.Script(SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Triggers _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Indexes _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_All _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Drops)
    End If

    End Function




    End Class

    GetScript方法就可以根据指定的数据库和数据库中的对象返回相应的脚本,而脚本的选项是由SQLDMO_SCRIPT_TYPE枚举控制的SQLDMOScript_Drops是否生成删除语句,SQLDMOScript_Triggers是否生成触发器,SQLDMOScript_Indexes相关索引等.

    调用就比较简单了,指定连接信息,数据库名称,对象名称,即可!

  • 相关阅读:
    SparkStreaming整合Flume的pull方式之启动报错解决方案
    n-map安装实操
    性能测试从入门到入土的一点思考
    基于Influxdb对InfluxDBResultMapper的一点扩展
    数据库恢复技术
    (转引)数据库索引(MySQL)
    携程一面凉经
    一文总结机器学习常见模型
    深度学习实战
    DFS
  • 原文地址:https://www.cnblogs.com/zqonline/p/1619594.html
Copyright © 2011-2022 走看看