'*************************************************************************
'**函 数 名:s_ExecuteSqlFile
'**功能描述:在指定的数据库对象中,执行指定的脚本文件
'**输    入: sFileName     要执行的脚本文件名
'**        : iDb           数据库对象,要求是:ADODB.Connection
'**        : sPassword     登陆密码
'**输    出: 无
'**调用模块: 无
'**作    者: 邹建
'**日    期: 2004年03月09日
'*************************************************************************
Sub s_ExecuteSqlFile(ByVal sFileName$, ByVal iDb As Object)
    Dim iFn As Object
    
    Dim iSql$, iStr$
    
    Set iFn = CreateObject("FileSystemObject").OpenTextFile("c:\1.txt", 1)
    
    With iFn
        While .AtEndOfStream = False
            iStr = iFn.ReadLine
            If UCase(iStr) = "GO" Then
                If iSql <> "" Then
                    iDb.Execute iSql
                    iSql = ""
                End If
            Else
                iSql = iSql & vbCrLf & iStr
            End If
        Wend
If iStr<>"" Then iDb.Execute iSql
        iFn.Close
    End With
End Sub
'调用示例
'要求引用Microsoft ActiveX Data Objects 2.x Library
'
'数据库连接字符串模板
'身份验证模式为:"sql server和windows"
'Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名
'
'身份验证模式为:"仅windows"
'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名;Data Source=SQL服务器名Sub test()
    Dim iDb As ADODB.Connection
    Dim iConn$
    
    '数据库连接字符串    iConn = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
    
    Set iDb = New ADODB.Connection
    iDb.Open iConn
    
    s_ExecuteSqlFile "c:\a.sql", iDb '执行脚本文件: c:\a.sql
    
    iDb.Close
    Set iDb = Nothing
End Sub

解决方案 »

  1.   

    既然是VB,还是建议你用VB的程序来调用并执行脚本文件,因为这样脚本文件就可以放在客户端,如果你用存储过程来执行脚本文件的话,必须将脚本文件放在SQL服务器上.
      

  2.   

    用SQL语句的话,可以这样来执行指定的脚本文件,注意大小写:exec master..xp_cmdshell 'isql /U"sa" /P"密码" /i".sql文件" /d"数据库名"'
      

  3.   

    TO    zjcxc(邹建)兄:在s_ExecuteSqlFile函数里,当程序运行到
    Set iFn = CreateObject("FileSystemObject").OpenTextFile("c:\1.txt", 1)时,出现“ActivX不能创建对象”的错误提示,怎么处理?我真是一点头绪也没有啊
      

  4.   

    TO    zjcxc(邹建)兄:
      

  5.   

    zjcxc(邹建)兄:谢谢你,这个问题我解决了。
    ありがとうございました。よろしくお願いいたします.